Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

척척 학사

[KT에이블스쿨] 시행착오 기록, 5차 미니프로젝트의 연장선, Object Tracking, Yolov8, 웹서비스 구현 본문

[5기] KT에이블스쿨/[5기] 프로젝트 후기

[KT에이블스쿨] 시행착오 기록, 5차 미니프로젝트의 연장선, Object Tracking, Yolov8, 웹서비스 구현

나는야맹구 2024. 4. 30. 20:38

안녕하세요. "나는야맹구"입니다.
이번에는 이번에 5차 미니프로젝트에서 Yolov8을 이용해 Object detection을 진행해봤는데요. 

이번 미니프로젝트를 진행하면서 Object Dectecion의 연장선으로 
Object Detection의 편리성을 높여주는 웹서비스 구현 Object Tracking을 진행해봤답니다.

저는 이 중에서 Object Tracking을 진행했고, 시행착오를 기록하면 누군가에게는 도움이 될 것 같아 기록해보려고 합니다. 

 

Object Tracking을 하게 된 계기..

 

딥러닝 심화 수업 끝부분에 강사님이 Object tracking을 하는 걸 보여주셨는데요.. 저도 학부 때 yolov4모델 사용해서 object tracking을 진행한 적이 있어서 '오.. yolov8모델을 이용해서 object tracking 해볼까?' 생각이 들었습니다. 팀 활동을 마치고 시간이 여유가 있어 object tracking 진행해봤습니다.

웹서비스 구현은 같은 팀원이었던 분이 Colab에서 사진 넣고, 코드 돌리고 하는게 너무 번거롭지않냐며 웹에서 딱딱 하면 얼마나 편할까 하시더라구요. 그리고 유튜브 보시더니 streamlit라이브러리 이용해서 웹에서 간단하게 돌리는 걸 구현하셨어요!! 완전 뚝딱~!

 

우선 제가 겪었던 시행착오는요..

1. colab에서 object tracking을 해볼까?

가중치 파일(best.pt)도 있겠다. 바로 tracking을 해보자했는데, 어떤 이유에선지 웹캠 연동으로 tracking은 안되고 mp4동영상 파일에서 프레임 단위로 인식하는 건 되더라구요. 저는 이미 있는 동영상에서 tracking을 진행하는 것이 아니라, 실시간 웹캠을 켜서 tracking을 진행하고 싶었기에 다른 방법을 찾기 시작했습니다.

2. 그럼 local computer에서 돌리자.

colab에서 작성한 ipynb파일을 다운로드 받아서 vscode에서 ipynb창을 수정하며 진행하려고 했어요. 

2-1. ultralytics가 안깔렸대 자꾸ㅡ3ㅡ

진짜 속상하게, pip install ultralytics 했는데도 계속 안깔렸다고 그러는거에요.. (난 깔았는데ㅜㅜ)
그래서 저 에러문을 구글링해서 찾아봤어요.
찾아봐도 계속 허탕만 치고 제자리걸음이었어요

2-2. 다시 강의 영상을 봐보자. 

강의 영상에서 강사님은 어떻게 tracking을 실행시켰는지 확인하고자 강의 영상을 다시 열어봤어요. 강사님은

cv_video.py라고 프롬프트 창에 치시더라구요. 그래서 무작정 구글 창에 'cv_video yolov8'이라고 검색했어요. 그리고 아래와 이 유튜버를 발견했어요. 

https://www.youtube.com/watch?v=uMzOcCNKr5A

5분정도 보다가 이 사람 깃헙 들어가볼까.. 해서 깃헙에 무작정들어갔어요.

https://github.com/computervisioneng/object-tracking-yolov8-native 

 

GitHub - computervisioneng/object-tracking-yolov8-native: Yolov8 object tracking 100% native | Object detection | Computer visio

Yolov8 object tracking 100% native | Object detection | Computer vision tutorial - computervisioneng/object-tracking-yolov8-native

github.com

그리고 아래 코드 발견했어요.

from ultralytics import YOLO
import cv2


# load yolov8 model
model = YOLO('yolov8n.pt')

# load video
video_path = './test.mp4'
cap = cv2.VideoCapture(video_path)

ret = True
# read frames
while ret:
    ret, frame = cap.read()

    if ret:

        # detect objects
        # track objects
        results = model.track(frame, persist=True)

        # plot results
        # cv2.rectangle
        # cv2.putText
        frame_ = results[0].plot()

        # visualize
        cv2.imshow('frame', frame_)
        if cv2.waitKey(25) & 0xFF == ord('q'):
            break

위 코드를 vscode에 그대로 가져와서 '가중치 파일'이름이랑 video path 수정해줬어요.

이 때, 아! 싶었어요. 내가 2년전, yolov4 사용해서 tracking을 실행시켰을 때도, ipynb파일이 아니라 프롬프트 창에서 'python ~~.py'라고 치고 실행시켰지'라는게 딱 생각나더라구요. 

그래서 아나콘다 창에 python test_yolov8.py라고 실행시켰고 그 결과 tracking 성공!!

물론 저를 다른 팀원분으로 인식해서,, 인식률이 떨이지긴 하지만 tracking은 성공했읍니다...ㅎ

 

아래 사이트는 제가 시행착오를 겪으며 도움받았던 사이트들입니다.

https://webnautes.tistory.com/1851

 

YOLO v8 사용해보기

웹캠 영상을 입력으로 하여 YOLO v8을 실행해봅니다. 2023. 5. 8 최초작성 2023. 9. 28 링크 오류 수정 2023. 10. 3 CUDA 사용하기 위해 필요한 점 수정 관련 포스트 Yolo v8 pose 사용해보기 https://webnautes.tistory.c

webnautes.tistory.com

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

 

Problems in loading of custom yolov8 model · Issue #2573 · ultralytics/ultralytics

Search before asking I have searched the YOLOv8 issues and discussions and found no similar questions. Question Hello, I trained a custom model on google colab and downloaded the best one (best.pt)...

github.com

 

 

이상! "나는야맹구"였습니다.

문제 해결하고, 바로 적느라 글에 두서가 없었네요
끝까지 읽어주셔서 감사합니다..

앞으로 다른 시행착오로 돌아올게요^^..(언제가 될진 모르겠지만?)