파이썬/AI

Yolo 객체인식 인식률이 떨어질 경우 확인해야할 것

코데방 2024. 6. 20.
728x90

딸각모드와 인식률이 다르다면?

 

욜로에서는 기본적으로 detection.py와 같이 딸깍모드로 객체인식 결과를 얻을 수 있습니다.

하지만 이 경우 파일이나 동영상으로 결과가 저장되기 때문에 커스텀 알고리즘이 필요하다면 사용하기가 어렵습니다. 

 

좌표 결과를 직접 받아서 실시간으로 처리하려면 이전 포스팅에서 다룬대로 모델 객체를 이용해 직접 이미지를 넣어줘야합니다. 

 

이 때 만약 딸깍테스트의 결과와 직접 model 객체를 사용해서 받은 결과의 인식률, 즉 Confidence 값이 다르다면 의심해봐야할 사항이 하나 있습니다.

 


테스트 결과 yolo 5, 7버전은 훈련(train) 시 이미지 전처리를 "RGB" 타입으로 합니다. 반대로 yolo 8, 10 버전은 "BRG"형태로 합니다. 


 

따라서 버전에 따라 이미지 채널 타입을 다르게 해서 모델에 넣는다면 인식률이 떨어집니다. 

 

cv2.imread()로 이미지를 불러올 경우 "BGR" 타입이 되고 PIL의 Image.open()으로 받아오면 "RGB" 타입이 됩니다. 보통 영상을 불러올 때는 cv2의 라이브러리를 쓰기 때문에 "BGR"로 불러올 확률이 큽니다.

 

따라서"딸깍기능"으로 Train을 진행했다면 버전에 맞게 채널 타입을 변경해줘야 정확한 인식률을 얻을 수 있습니다. cv2에서 채널 타입을 변경하는 방법은 아래와 같습니다!

 

import cv2

img = cv2.imread(이미지경로) # BGR
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # RGB

 

 

 

저 같은 경우는 여러 버전을 테스트하느라 아래와 같이 상태값 파라미터를 통해 자동으로 적용되도록 했습니다. 이런식으로 하면 안헷갈리고 편합니다~!

728x90

댓글

💲 추천 글