스터디/AI

[Imple]YoLov5 모델 학습해보기

_leezoee_ 2022. 5. 18. 10:37

0. 이미지 라벨링 하기

https://github.com/tzutalin/labelImg#usage

 

GitHub - tzutalin/labelImg: 🖍️ LabelImg is a graphical image annotation tool and label object bounding boxes in images

🖍️ LabelImg is a graphical image annotation tool and label object bounding boxes in images - GitHub - tzutalin/labelImg: 🖍️ LabelImg is a graphical image annotation tool and label object bounding b...

github.com

라벨링 툴을 다운로드해준다.

파이썬은 설치 되어있어야 하고 추가로 PyQt5, lxml, OSGeo4W를 설치해준다.

참고한 블로그!!

https://velog.io/@hyereen/labelimg-%EC%82%AC%EC%9A%A9%EB%B2%95

 

labelimg 사용법

https://github.com/tzutalin/labelImgwindow 파트 참고https://uhhyunjoo.tistory.com/6\+) labelimg 폴더 생성하고 그 안에 설치해야 함https://www.riverbankcom

velog.io

 

 

1. 이미지 어떤 위치를 탐지하고자 하는지 좌표를 나타내는 텍스트 파일 만들기(라벨링)
   이미지에 section 그리고 해당 좌표 나타내는 텍스트 파일 만들기 => txt

   : kaggle 예제 데이터 png랑 xml 로 되어있음 yolo는 txt 파일을 지원하기 때문에 txt 파일로 변환 필요

https://github.com/Isabek/XmlToTxt

 

GitHub - Isabek/XmlToTxt: ImageNet file xml format to Darknet text format

ImageNet file xml format to Darknet text format. Contribute to Isabek/XmlToTxt development by creating an account on GitHub.

github.com

해당 소스 다운 받아서 xml 파일 넣어주면 txt로 금방 변환 되어 나온다!

https://github-wiki-see.page/m/pineland/object-tracking/wiki/14.--VOC-XML-%ED%8C%8C%EC%9D%BC%EC%9D%84-Yolo-TXT-%ED%8C%8C%EC%9D%BC%EB%A1%9C-%EB%B3%80%ED%99%98

 

14. VOC XML 파일을 Yolo TXT 파일로 변환 - pineland/object-tracking Wiki

14. VOC XML 파일을 Yolo TXT 파일로 변환 - pineland/object-tracking Wiki 1. 설치 git clone https://github.com/Isabek/XmlToTxt sudo pip install -r requirements.txt 2. 설정 classes.txt에 원하는 class를 추가한다. 3. 사용 python3 xmltotxt

github-wiki-see.page

설명 문서 참고.

변환하고자 하는 xml 파일을 열어보면

[xml 데이터]

이렇게 되어있는데 저기 object 에 name을 class.txt 에 추가해주면 된다

[calss.txt]

처음 실행 시

 

[모듈에러]

해당 에러 발생. pip install 로 필요한 모듈은 다운받아주면 된다.

[모듈 설치]

 

2. 불량 데이터 쳐내고 데이터 부족한 클래스 데이터 증강

   => ex) 착용한 헬멧을 검출 할 경우 불량 검출 되는 예시 : 착용하지 않은 헬멧, 스케일 오류(큰 이미지는 검출 못함,               10*10px 이하 작은 거는 평가시 제외), 색상이 비슷한 이미지 오검출 , 일반 모자, 가려져서 못찾는 경우, 두건 등

 

3. 데이터 split 

   학교에서 추후에 test 데이터 준다고 함.

   예제 이미지와 라벨링 데이터를 train, validation 으로 split 하는 작업 필요.

//train validation set으로 나누기 
from sklearn.model_selection import train_test_split 
train_img_list, val_img_list = train_test_split(img_list, test_size = 0.1, random_state=2000) 
print(len(train_img_list), len(val_img_list))

//train image랑 validation 이미지 경로 를  txt 파일로 저장하기 
with open("/content/yolov5/dataset/val.txt", "w") as f: 
    f.write('\n'.join(train_img_list) + '\n') 
with open("/content/yolov5/dataset/train.txt", "w") as f: 
    f.write('\n'.join(val_img_list) + '\n')


출처: https://kkkkhd.tistory.com/249 [NAIAHD]

 

4. 이미지와 라벨 가지고 학습 진행하기.

   기본적인 학습 횟수 epoch는 300, 더 많은 횟수로 학습 진행하려면 GPU가 있어야  시간을 줄일 수 있음.

   yolo 폴더에 train.py 예제를 참고 (예제github에서 소스다운로드 가능)

   직접 만든 데이터셋으로 훈련 하기 위해 yaml 파일 만들기.

   소스파일에서 train은 훈련데이터 셋 경로, val 옆에는 검증 데이터 경로 test 옆에는 테스트 데이터셋 경로 입력.

   학습 이후 last.pt, best.pt 파일이 생성되는데 가장 좋은 성능을 위해 best.pt 파일 활용.

 

5. 객체 인식 실험 진행

    best.pt 파일 가지고 진행   

python detect.py --weight best.pt --source inference/images

 

6. mAP 평가지표 활용

 

'스터디 > AI' 카테고리의 다른 글

[이론] 순환신경망 이론 RNN  (0) 2023.01.27
[이론] 컨볼루션 신경망 이론 CNN  (2) 2023.01.27
[이론] 인공신경망 이론 (ANN)  (0) 2023.01.19
[TensorFlow] 텐서플로우 2.0 소개  (0) 2023.01.19
AI 커리어에 대한 조언  (0) 2023.01.12