-
[익은 토마토 선별하기] 3. 토마토 인식 모델 구현AI/객체인식 2022. 6. 1. 00:55
Yolov5를 이용해서 토마토를 인식하게 만들려고 한다.
일단, PC 세팅은 아래 유튜브를 보고 세팅을 한 상태이다.
주의! 영상에서 하는 데로 따라 했는데 모델 학습 중 오류가 발생했다.
그래서 해결한 방법을 소계한다.
1. 아나콘다를 이용해서 Python 3.8버전 가상환경을 만든다.
2. Pytorch 1.8.2를 가상환경에 설치한다.
3. 파이참을 실행해서 가상환경을 연결한다.
4. 파이참 터미널 설정
cmd.exe "/K" C:\ProgramData\Anaconda3\Scripts\activate.bat 가상환경이름
5. protobuf 설치(이게 업데이트 해야 정상 작동한다.)
pip install -v protobuf==3.20.1
data.yaml 수정
저번에 다운로드한 라벨링 데이터를 yolo프로젝트에 있는 data폴더에 압축을 푼다.
그리고 라벨링 데이터에 들어있는 data.yaml을 수정해야 한다.
#수정 전 train: ../train/images val: ../valid/images #수정 후 train: 압축 푼 라벨링 데이터 폴더 중 train/images 경로 val: 압축 푼 라벨링 데이터 폴더 중 valid/images 경로
데이터 학습
아래 명령어를 조건에 맞게 수정해서 터미널에 입력한다.
python train.py --img 416 --batch 16 --epochs 200 --data Tomato01/data.yaml --cfg ./models/yolov5s.yaml --weights yolov5s.pt --name Tomato01_Result --patience 0 --img : 학습할 사진 크기(가로) --batch : 전체 데이터를 얼만큼 쪼개서 학습할 것인가(GPU 성능에 따라 조절, 에러가 안나는 선에서) --epochs : 몇 회 반복 학습 --data : 데이터셋의 경로정보를 갖고 있는 yaml 파일 --cfg : 학습에 사용할 모델의 yaml 파일 --weights : 학습에 사용할 모델파일 --name : 학습결과를 저장할 폴더명 --patience 0 : 중간에 멈추지 않고 학습 진행(중간에 best결과라고 판단하면 멈추는 경우가 있는데 이를 무시하고 진행)
그럼 데이터 학습을 진행한다.
학습하는데 오래 걸리니 운동하고 확인해야겠다.
학습이 완료되었다.
학습이 완료되면 weights에 파일이 생기는데 이 파일들은 토마토를 인식하는 모델이다.
보통 best.pt파일을 이용한다.
모델 테스트
그럼 토마토를 잘 인식하는지 테스트해보자.
모델을 사용하는 방법은 아래와 같다.
python detect.py --weights 모델경로 --source 이미지 또는 영상 경로
토마토 인식 결과다.
영상을 보면 중간중간에 토마토가 아닌 부분에도 토마토라고 인식한다.
이는 라벨링을 할 때 잎하고 거의 가려진 토마토를 라벨링 해서 그런 것 같다.
다음 시간에는 라벨링을 수정하고 다시 학습해서 적용해보려고 한다.
'AI > 객체인식' 카테고리의 다른 글
[익은 토마토 선별하기] 3.02 모델 수정 후 테스트 (0) 2022.06.08 [익은 토마토 선별하기] 3.01 라벨링 수정 후 모델 테스트 (0) 2022.06.04 [익은 토마토 선별하기] 2. 라벨링 작업 (0) 2022.05.28 [익은 토마토 선별하기] 1. 토마토 사진 구하기 (0) 2022.05.19