프로젝트 소개
YOLOv8와 Roboflow를 활용해 클라이밍 이미지에서 얼굴, 손, 발을 찾는 Object Detection을 해보았다.
직접 찍은 클라이밍 영상이 매우 많기 때문에 이 데이터가 데이터 수집, 라벨링부터 시작하여 Object Detection을 해 보기 좋을 것이라고 생각했다.
1. 클라이밍 영상 이미지로 바꾸기
나는 클라이밍 영상을 가지고 있으므로, 클라이밍 영상을 프레임 단위의 이미지로 바꿔주는 작업을 했다.
비디오를 이미지로 만드는 작업은 아래 사이트를 활용했다. 특히 겹치는 이미지는 제거해주는 옵션을 체크해 주었다
.
▷비디오를 이미지로 변환하는 사이트: http://www.viconvert.kro.kr:8501/
영상이 프레임 단위의 이미지로 바뀌기 때문에 너무 유사한 이미지가 많다. 나는 추출한 이미지에서 랜덤으로 30% 정도만 남기고 제거 해 줬다.
2. Roboflow를 활용한 커스텀 데이터셋 만들기
Roboflow는 데이터셋 생성 및 전처리, 증강 등의 작업을 웹 상에서 할 수 있게 해주는 사이트이다.
유료 버전도 있으나, 이 프로젝트에서는 무료 버전으로도 충분하다.
▷Roboflow 사이트: https://roboflow.com/
1) 프로젝트 생성
'Climbing'이라는 프로젝트를 생성해줬다.
2) 이미지 업로드
데이터셋을 만들 이미지를 모두 업로드해준다. 나는 약 200장의 이미지를 업로드했다.
3) Class 생성
나는 이미지에서 머리, 손, 발의 위치를 찾고싶었기 때문에 3개의 클래스를 생성 해 주었다.
4) Annotation 작업
이제부터 인내심과 끈기를 필요로 하는 작업의 시작이다. 약 200장의 이미지에서 머리, 손, 다리의 Bounding Box를 일일이 표시 해 준다. 나는 이렇게 아무 생각 없이 하는 노동?을 좋아하는 편이기 때문에 생각보다 할 만 했다.
나만의 꿀팁?이라면.. 한 장의 이미지에서 여러 개의 class가 존재하는 데이터셋이라면, 하나의 class씩 하는게 효율이 좋은 것 같다. 예를 들면 머리를 먼저 쭉~ 표시 해 주고, 200장의 머리를 다 표시했으면, 그 다음에 손을 쭉~ 표시하고, 그 다음에 발을 표시하는 식이다. 이렇게 하면 한 이미지에서 클래스를 변경 해 주어야 하는 수고를 덜 수 있다.
5) Dataset 생성
annotation 작업을 모두 완료했다면, 이제 데이터셋으로 만드는 작업을 해준다.
Method를 클릭하면 데이터셋을 어떻게 나눌건지 선택할 수 있고, 그 비율도 조절할 수 있다.
Data Augmentation 옵션도 추가할 수 있다. 나는 데이 증강을 하지 않았다.
모든 설정을 완료하면 Generate를 눌러 데이터셋 버전을 생성한다.
6) Export
Export Dataset 버튼을 클릭해서 Format과 내보낼 방법을 선택한다.
나는 YOLOv8 모델을 선택 해 줬고, 코랩 환경에서 사용할거라 show download code를 선택했다.
Continue 버튼을 누르면 이렇게 코드 다운로드 방식이 3가지 나오는데, 나는 Jupyter 에서 사용할거라 이 부분을 복사해서 사용 해 주었다.
Raw URL을 선택해서 링크를 붙여넣으면 로컬에 직접 다운로드 할 수 있다.
여기까지는 YOLO 모델을 활용해 Object Detection을 하기 위한 커스텀 데이터셋을 만드는 과정이었다.
생각보다 내용이 길어져서, yolo 모델을 사용하는 코드는 다음 글에서 작성하려고 한다.
'프로젝트' 카테고리의 다른 글
인공위성 데이터로 도시 환경 개선하기 - 쿨루프 시공 대상 여부 분류 (0) | 2024.04.15 |
---|---|
차량 공유 업체의 차량 파손 여부 분류하기(3) - Transfer Learning (0) | 2024.04.14 |
차량 공유 업체의 차량 파손 여부 분류하기(2) - CNN 모델링 (0) | 2024.04.09 |
차량 공유 업체의 차량 파손 여부 분류하기(1) - 데이터 확인 및 전처리 (0) | 2024.04.09 |
YOLOv8와 Roboflow를 활용한 Object Detection - 클라이밍 이미지에서 얼굴, 손, 발 detection(2) (0) | 2024.04.08 |