프로그래밍/데이터 사이언스 공부

데이터셋 구축 시 특정 클래스 개체를 일부러 어노테이션 하지 않을 때 생기는 문제점

이자다 2023. 11. 23. 23:39
반응형

https://github.com/ultralytics/ultralytics/issues/6544

 

Problems that arise when object annotations are not intentionally performed on images · Issue #6544 · ultralytics/ultralytics

Search before asking I have searched the YOLOv8 issues and discussions and found no similar questions. Question As I am a foreigner, I used a translator to write my question, so please understand t...

github.com

위 깃허브 이슈를 통해 질문하였다.

 

내가 겪은 문제와 질문은 다음과 같다.

 

 

 

 

저는 YOLOv8 모델을 car, small_truck, medium_truck, large_truck, small_bus, large_bus 총 6개 클래스를 구별할 수 있도록 파인튜닝 하였습니다.

이후 저는 ByteTrack을 이용해 객체추적을 구현하였고 성능 개선을 위해서 추가로 데이터셋을 구축했습니다.

 

 

 



저는 사거리 상공 촬영 영상을 사용하여 데이터셋을 구축하는데 사거리에서 car 클래스의 유동량이 다른 클래스에 비해 압도적으로 많아서 새로 구축하는 데이터셋은 이미지에서 car 개체가 존재해도 일부러 어노테이션하지 않는 식으로 car 클래스의 개수를 줄이고 다른 클래스들과 균형을 맞추려고 했습니다.

 

 

기존에 훈련에 사용한 데이터셋

 

이번에 새로 구축한 데이터셋



기존의 데이터셋은 car 클래스만 압도적으로 많은 반면에 새로 구축한 데이터셋은 상대적으로 클래스 간 개수가 균형이 맞는 모습을 보입니다.

 

 

 



위 사진처럼 이미지에 car 클래스가 존재하지만 어노테이션하지 않았습니다. 물론 아예 하지 않은건 아니고 정상적으로 car 클래스를 어노테이션한 이미지도 존재합니다.

이후 저는 구축된 데이터셋을 이용해 기존에 파인튜닝했던 모델에 추가 훈련을 가하고 객체 추적을 진행했는데 결과가 매우 이상하게 나왔습니다.

 

 


영상에서 객체를 detection할 때 car 클래스에 대한 detection이 거의 수행되지 않는 모습을 보입니다.

왜 이런 문제가 생겼습니까?

이미지에 car 클래스 개체가 존재하지만 일부러 어노테이션하지 않고 이를 데이터셋어 넣고 훈련을 진행할 때 대체 무슨 일이 일어나길래 이런 현상이 나타나는 겁니까?

제가 생각한 원인은, 데이터셋의 이미지는 test, valid, train으로 나뉘어지는데 모델 훈련 진행 중에 성능 평가를 위해서 test 데이터 이미지에 객체 탐지를 진행했고, 모델이 정상적으로 car 클래스를 detection 하였지만 제가 일부러 car 클래스를 어노테이션하지 않아서 모델이 car 클래스 개체처럼 생긴 것은 car 클래스가 아니다라고 학습을 해서 그렇다고 생각하는데 이게 맞나요?

반응형