학습할 이미지를 수집했으므로, 다음으로 해야할 작업은 이미지를 라벨링하는 작업이다.
구글링을 통해 이미지 라벨링 툴(Image Labeling Tool)을 검색하니, 다양한 라벨링 툴이 나온다.
하지만, 어떤 게 좋은지 감이 없기 때문에 파이썬에 해당 라이브러리가 있는지 챗gpt를 통해 파악해본다.
<챗gpt Says>
Python과 잘 작동하는 인기 있는 이미지 라벨링 도구는 LabelImg입니다. 이 도구는 오픈 소스 그래픽 이미지 주석 도구로, 객체 감지 및 이미지 분류 작업을 위한 데이터 세트를 만드는 데 널리 사용됩니다. LabelImg를 사용하면 다양한 형식(예: Pascal VOC 또는 YOLO 형식)으로 이미지에 라벨을 붙일 수 있으며 텐서플로우 및 파이토치와 같은 파이썬 기반 머신 러닝 프레임워크와 쉽게 통합할 수 있습니다.
그리하여, 챗gpt가 제안하는 대로 LabelImg 툴을 설치하여 작업해보려고 한다.
LabelImge 설치
설치 방법에는 두 가지가 있다.
1. 파이썬에서 직접 설치 (Python pip을 이용한 설치): anaconda prompt 관리자모드에서 설치
2. Github 에서 설치(LabelImg의 최신 버전을 GitHub에서 직접 설치)
▶둘 중에 1번의 방법을 사용하여 설치 및 사용하려고 한다.
[2번의 방법]
1. 먼저 GitHub에서 LabelImg 소스를 다운로드합니다
git clone https://github.com/heartexlabs/labelImg.git
2. LabelImg 디렉토리로 이동 후, 필요한 라이브러리를 설치합니다:
cd labelImg
pip install -r requirements/requirements-linux-python36.txt
3. 설치 후 LabelImg를 실행합니다:
python labelImg.py
[잘못된 방법]
먼저 jupyter notebook을 켜고, pip 명령어를 사용하여 LabelImg를 설치
pip install labelImg
설치는 금방된다.
LabelImg 사용법 소개
◆ 주요 기능
- Bounding Box 생성: 이미지에서 객체의 경계 상자를 그려서 라벨링.
- Pascal VOC 및 YOLO 형식 저장: 라벨 데이터를 다양한 형식으로 저장.
- 단축키 지원: 작업 속도를 높이기 위해 다양한 단축키를 제공.
◆ 사용 절차
- 이미지 폴더 열기: Open Dir 버튼을 눌러 라벨링할 이미지가 있는 폴더를 연다.
- Bounding Box 생성: 마우스로 이미지를 클릭하고 드래그하여 객체의 경계 상자를 그린다.
- 라벨 지정: 경계 상자를 그린 후, 라벨을 지정한다.
- 라벨 저장: 작업이 끝나면 Save 버튼을 눌러 라벨 파일을 저장한다.
◆ 주요 단축키
- W: Bounding Box를 그리기 시작한다.
- Ctrl + S: 라벨 파일을 저장한다.
- A와 D: 이전 이미지와 다음 이미지를 순서대로 불러온다.
◆ 라벨 형식
LabelImg는 다음 두 가지 주요 라벨 형식을 지원:
- Pascal VOC: XML 형식으로 저장되며, 객체의 클래스와 좌표 정보 포함.
- YOLO: 텍스트 형식으로 저장되며, 라벨 클래스와 경계 상자의 상대 좌표 포함.
◆ 라벨링 예시
LabelImg를 실행한 후, Open Dir을 클릭하여 이미지가 저장된 폴더를 연다.
경계 상자를 그린 후 객체의 라벨을 지정한다 (예: "tire").
모든 이미지에 대한 라벨링이 완료되면, 각 이미지에 대한 라벨 정보가 저장된다.
LabelImg 설치 및 실행
해당 파일에 대해 잘못알고 있는 사실이 있었다. 해당 프로그램은 주피터노트북 상에서 사용(또는 켜기)하는 것이 아니라, anaconda prompt 상에서 코드를 입력하여 불러와야 한다는 것이다.
그리고 그전에, github를 통해 툴을 다운 받아야 한다.
블로그마다 다운받는 툴은 다른듯한데, 가장 설명이 잘 되어 있는 블로그를 참고하여 다운로드 한 후,
적절한 위치에 압축을 해제 후 해당 폴더로 이동한다.
그리고 anaconda prompt 를 관리자모드로 켜고, 하단의 코드를 한 줄씩 입력
pip install labelimg
labelImg
설치 및 실행이 잘 되었다.
단, anaconda prompt를 끄면 labelImg 역시 같이 꺼지므로, 계속 켜둬야 한다.
만약 꺼졌다면 그때는 다시 anaconda prompt를 관리자모드로 켜고 한 줄만 입력하면 된다.
labelImg
또는, labelImg.exe 파일을 하단의 방법처럼 바로 실행시켜도 된다.
labelImg 사용하기
1. data/predefined_classes.txt 의 훈련에 사용되는 클래스의 목록을 새로 정의한다.
2. Save 버튼 바로 아래에 있는 PascalVOC 버튼을 클릭하여 YOLO 형식으로 전환한다.
[주요 단축키]
Open / Open Dir : 파일 또는 디렉토리 파일 전체를 불러올때 사용한다.
Change Save Dir : 라벨링한 파일을 저장할 위치를 지정한다.
Next Image : 다음 이미지 / Hotkeys = D
Prev Image : 이전 이미지 / Hotkeys = A
Hotkeys = W : Rect Box 생성
3. [Open DIr] 버튼을 눌러, 라벨링할 이미지가 담겨있는 폴더를 불러온 후,
4. W 키를 눌러 범위를 지정하면 하단의 이미지와 같이 labeling 클래스가 나온다. 그럼 해당 이미지를 맞는 클래스로 지정하면 된다.
5. 클래스가 지정되면, [SAVE] 버튼을 눌러 파일을 저장하고 (txt 파일로 저장된다)
6. D 키를 누르면 다음 이미지로 넘어간다. 이 과정을 진행하여 이미지 라벨링을 진행하면 된다.
(이것도 결국 노가다구만.... 0_0;;)
[참고한 블로그]
'[파이썬 Projects] > <파이썬 딥러닝, 신경망>' 카테고리의 다른 글
[머신러닝 프레임워크] Keras vs Tensorflow vs Pytorch (0) | 2024.09.09 |
---|---|
[텐서플로우 설치] X고생한 텐서플로우 import 성공기 (1) | 2024.09.07 |
[CNN 구조] 합성곱 신경망을 사용한 컴퓨터 비전 (2) | 2024.09.06 |
[이미지 전처리] OpenCV를 통한 이미지 Resize 작업 (2) | 2024.09.06 |
[머신러닝] 텐서플로우(TensorFlow)란? (0) | 2024.08.06 |