티스토리 뷰
- DATASET : robotflow
Robotflow가 굉장히 쓰기 편해서 좋았다.
YOLOv8로 설정하고 zip으로 다운받을 수도 있고, url, 코드 등으로도 받을 수 있다.
- 프로젝트 진행
dataset을 zip으로 다운받아 vs code로 yolo 학습 진행 중이었는데 저장공간이 부족해서 학습에 실패하는 일이 발생했다.
바로 Colab으로 수행을 했다. Colab은 어느정도 기본 실행은 무료로 가능하다.
대신 너무 많이 작업을 할 경우, 한동안 중단되어 사용못하는 일이 벌어진다.
Hardware accelerator에서 CPU를 GPU를 바꾸면 더 빨리 학습이 가능하다. 속도 차이가 엄청 크다.
처음은 Roboflow에서 제공하는 약 800개의 라벨링된 데이터셋을 이용하여 학습을 진행하였다.
헬멧 데이터셋을 학습할 때 class를 헬멧을 쓰지 않은 사람을 판단하는 without_helmet과
헬멧을 쓴 사람을 판단한 with_helmet으로 나누었다.
이전 컴퓨터 cpu로 학습을 실행하였을 때 시간이 많이 소요되고 실패했기 때문에
YOLOv8 epochs값을 20으로 설정하여 학습하였다.
*epochs : 전체 훈련 데이터셋을 한 번 완전히 모델에 학습시키는 과정
그 결과는 사실상 매우 안좋았다.
1. with_helmet 지표값
Precision | 0.751 (75.1%) |
Recall | 0.631 (63.1%) |
mAP50 | 0.679 (67.9%) |
mAP50-95 | 0.311 (31.1%) |
- Precision(75.1%)은 괜찮지만, Recall(63.1%)이 낮음 → 탐지를 놓치는 경우가 많음
2. without_helmet 지표값
Precision | 0.731 (73.1%) |
Recall | 0.301 (30.1%) |
mAP50 | 0.351 (35.1%) |
mAP50-95 | 0.162 (16.2%) |
- Recall(30.1%)이 매우 낮음 → 헬멧 미착용자를 제대로 탐지하지 못함
- mAP50-95(16.2%)는 거의 못 맞추고 있다고 볼 수 있음
- 탐지를 놓치는 False Negative(누락) 비율이 높음
수치상으로 보았을 때 with_helmet도 좋다고 할 수 없지만, without_helmet의 정밀도, 재현율이 현저히 낮았다.
실제로 실행해보았을 때, 모자를 쓴 사람을 헬멧을 쓴 사람이라 판단하였고, 허공을 헬멧으로 인식할 때도 종종 있었다.
또한, 헬멧과 헬멧 쓴 사람을 모두 with_helmet이라 판단하는 단점도 있었다.
헬멧과 헬멧 쓴 사람을 모두 인식한다는 점이 단점인 이유는 헬멧을 쓰지 않고 화면에 보인다는 이유로 헬멧을 착용했다고 판단할 수 있기 때문이다.
그리고 각도에 따라 헬멧이라 판단하는 비율이 달라졌다.
- 해결해야 할 점
일단 데이터셋이 1000개 이하로 아주 적은 데이터셋을 사용하고 있다고 생각하여 데이터셋을 추가할 예정이다.
roboflow에 헬멧 관련 데이터셋은 많지만 세밀하게 보니 중복되는 데이터가 많았다.
그래서 직접 라벨링 하는 것도 생각해봐야 할 것 같다.
또, 실제로 실행해보았을 때의 문제점을 고려하여 모자 쓴 사람, 그냥 헬멧과 헬멧을 쓴 사람, 각도가 다른 사람의 영상을 위주로 추가해야한다고 생각했다.
추가적으로 epochs값을 100으로 맞춰 학습해볼 예정이다.
'인공지능' 카테고리의 다른 글
[YOLOv8] helmet detection project4 _ 최종 (0) | 2024.06.09 |
---|---|
[Colab] 꿀팁 및 주의사항 (1) | 2024.06.07 |
[colab] 런타임 연결 유지 (0) | 2024.06.06 |
[YOLOv8] 전동 킥보드 헬멧 객체 탐지, helmet detection project1 (0) | 2024.05.15 |
[Python] 머신러닝 : split input data, test data (0) | 2023.02.07 |
- Total
- Today
- Yesterday
- konlpy
- 에러발생
- gradleload오류
- 백준
- 오븐시계
- baekjoon
- 문제풀이
- 터틀그래픽 명령어
- database연결
- tweepy
- 10828번
- 사람검출
- randint
- 터틀그래픽
- randrange
- 사람수세기
- SPRING오류해결
- UnsupportedClassVersionError
- Kkma
- streamlistener
- python공부
- yolov8
- YOLO
- 다인승탑승
- JAVA오류해결
- 파이썬
- 터틀그래픽예제
- springboot
- Turtle Graphic
- 다인승
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |