ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [익은 토마토 선별하기] 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 이미지 또는 영상 경로

     

    토마토 인식 결과다.

     

    영상을 보면 중간중간에 토마토가 아닌 부분에도 토마토라고 인식한다.

     

    이는 라벨링을 할 때 잎하고 거의 가려진 토마토를 라벨링 해서 그런 것 같다.

     

    다음 시간에는 라벨링을 수정하고 다시 학습해서 적용해보려고 한다.

Designed by Tistory.