자유게시판
안녕하세요.
오늘 영상은 YOLOv8(Detection) + DeepSORT(Tracking)을 Test해본 영상을 공유 할께요.
이전에 간단한 Vehicles counting, tracking 예제를 올렸었는데요. 보시면 아시겠지만 객체가 탐지 됬다가도 잠깐 가려지거나 이미지 프레임에서 놓쳤다가 다시 찾아질 경우에 새로운 객체로 인식해서 ID가 새로 부여되는 경우를 보신적이 있을겁니다.
그래서 이런 문제는 어떻게 해결하는지를 알아보니 객체추적(Object Tracking)이라는것이 있고 이또한 다양한 알고리즘들이 있다는 사실을 알게되었습니다.
이런 와중에 Object Tracking알고리즘중의 하나인 DeepSORT(with YOLOv8)관련된 영상을 공유한 채널이 있어서 Test를 해봤습니다.
(참조 : Code With Aarohi 채널 https://www.youtube.com/watch?v=Y2fyDYcfmBg&t=317s)
코드는 해당채널에서 공유한 ipynb파일을 일부 수정 사용했으며 시험용 영상은 pixabay.com에서 다운로드 했습니다.
코드는 아래의 github에 올려놓았습니다. images/people.zip파일은 압축을 해제해야 됩니다.
- https://github.com/goingdol/deepsort_test
혹시 본인의 Custom dataset영상으로 Test영상을 변경해서 시험해보고 싶으시면 people.mp4 파일을 교체하시면되고
video_path = "images/people.mp4"
그리고 객체의 Tracking 유지시간 or 추적할 객체의 종류를 변경해보고 싶다면 track_count_persons.py 아래부분을 코드에서 수정하시면 됩니다.
tracker = DeepSort(model_path=deep_sort_weights, max_age=150)
위코드에서 max_age=150으로 되어 있는데 이부분을 수정해서 Tracking을 유지하는 시간을 조정할수 있습니다.
results = model(frame, device=0, classes=0, conf=0.8)
그리고 위의 코드에서 classes=0 은 "person"을 가리키는데 이부분을 수정해서 classes=2로 바꾸면 "car"를 추적하도록 변경됩니다.
영상을 보시면 아시겠지만 완벽하게 객체ID를 유지하면서 Tracking하지는 못하는것 같습니다. 객체 유지시간 늘림으로 인해서 실제로 없어진 객체ID 근처에서 새로 나타난 객체와 동일객체로 인식한다던지 움직임의 방향이 엇갈리는면서 겹쳐졌다가 분리되는경유 객체ID가 서로 뒤바뀌는 문제가 있었습니다. 더 좋고 쓰기편한 알고리즘이 있는지 찾아봐야 할것 같습니다.
오늘은 객체추적 알고리즘 DeepSORT를 짧게 해봤습니다. 혹시 더 좋은 방법이나 더 좋은 알고리즘을 해보시면 꼭 공유 부탁드립니다.
감사합니다.
로그인 후
참가 상태를 확인할 수 있습니다.