7주차 일정
9/18 - 9/20 시각지능 딥러닝
9/21 - 9/22 미니프로젝트 3차
9/18 - 9/20 시각지능 딥러닝
지난주까지는 CNN 중심으로 배웠다면, 이번주는 객체 탐지 그리고 YOLO 모델을 다뤘다.
내가 YOLO를 처음 알게 된 건 작년이었는데, 그때까지만 해도 내 실력으론 저런 건 못하겠지.. 머신러닝 사랑해♡ 하던 내가 YOLO를 만질 수 있다고요?! 진짜 신기합니다. (지금도 학습시켜 놓고 쓰는 중이에요^^!!)
Object Detection
- Object Detection = Classification + Localization
- Localization: 단 하나의 object 위치를 Bounding Box로 지정하여 찾음
- Object Detection: 여러 개의 object 위치를 Bounding Box로 지정하여 찾음
Bounding Box
하나의 object가 포함된 최소 크기의 box
- Ground Truth Bounding Box 구성요소: $ x, y, w, h $
- Predicted Bounding Box 구성요소: $ \hat x, \hat y, \hat w, \hat h $
- $ \hat x, \hat y \approx x, y $ → Bounding Box 꼭짓점 예측 Good
- $ \hat w, \hat h \approx w, h $ → Bounding Box 크기 예측 Good
- ⇒ 모델이 object가 있는 위치를 잘 예측했다!
Class Classification
Bounding box에 있는 object가 어떤 클래스인지 알려주는 것
- Bounding Box 안에 object가 있으면 분류 문제로 접근 가능
- Label = [1, 0, 0], predict = [0.8, 0.05, 0.15]
Confidence score
object가 진짜 Bounding Box안에 있는지에 대한 확신의 정도
- 1에 가까울수록 object가 Bounding Box안에 있다고 추측
- 0에 가까울수록 object가 Bounding Box안에 없다고 추측
IoU(Intersection over Union)
두 박스의 중복 영역 크기(겹치는 영역)이 넓을수록 좋은 예측
NMS(Non-Maximum Suppression)
동일 object에 대한 중복 box 제거
- IoU가 일정 값 이상이면 같은 Object를 가리키는 것이라고 판단해, 상대적으로 Confidence Score가 낮은 Bounding Box를 제거하는 것
- Confidence Score 임계치가 높을 수록, IoU 임계치가 낮을수록 박스에 대한 중복 판단이 깐깐해짐
Annotation
이미지 내 Detection 정보를 별도의 설명 파일로 제공되는 것
- object의 bounding box 위치나 object 이름 등을 특정 포맷으로 제공
YOLOv8
!pip install ultralytics
from ultralytics import YOLO
# 모델 파일 다운로드
model = YOLO(model='yolov8n.pt', task='detect')
# 학습
model.train(data='coco128.yaml', # 데이터셋 경로
epochs=10, # 학습 횟수
patience=5,
save=True, # 학습 과정 저장 여부
project='trained', # 저장 폴더 이름
name='trained_model', # 세부 폴더 이름
exist_ok=False,
pretrained=False, # 사전 학습 모델 사용 여부
optimizer='auto', # 경사하강법 방법
verbose=False,
seed=2023,
resume=False,
freeze=None
)
# 예측
model.predict(source='https://ultralytics.com/images/bus.jpg',
save=True,
save_txt=True,
line_width=2)
마지막날에는 각자 하고싶은 주제로 객체 탐지를 해볼 수 있어서 일회용 컵이랑 머그컵을 YOLOv8 모델로 구분해 보았다.
종이컵, 플라스틱컵, 머그컵 3개의 클래스로 나눠 학습을 시켰는데 예측에서 플라스틱컵은 잘 찾지 못했다.
그 이유가 뭘까 생각해 봤는데 종이컵에도 컵홀더가 있는 경우가 있어서 그런 것 같다..(그럼 종이컵을 플라스틱컵으로 분류하면 되는 거 아니야? 모르겠다.)
작고 소중한 나의 첫 YOLO 모델 사용기 ༼ ᓄºل͟º ༽ᓄ
9/21 - 9/22 미니프로젝트 3차
엥? 저번주에 미프를 했는데 또 해요? 네.
겨우 YOLO 모델 걸음마 뗀 사람에게 바로 프로젝트해! 하는 스파르타 훈련 👊
3일 동안 하는 미프지만 사실 이틀 동안 거의 다 했다 ㅎ_ㅎ 월요일에는 발표자료 만들기만 하면 끝 -
이틀동안 무얼 했냐면...
roboflow가 없는 맨땅에서🥶 YOLO 모델에 넣을 데이터 전처리에 하루, 모델 학습 및 예측에 하루가 걸렸다.
에이블스쿨에서 코랩 프로 비용을 지원받았는데 시간제한 없이 계속 GPU를 사용할 수 있어서 너무 좋았다!!!!
하지만 난 게임에서 현질 한 것 마냥 너무 아껴서 학습속도가 느렸는데 팀원분들이 제발 고용량 RAM 쓰라고 ㅋ
패트와 매트 마냥 두 분이 앞에서 티키타카 하시는 게 너무 웃겨서 주글뻔했어요 ㅠ
근데 학습 속도가 문제가 아니었다.
정확도가 너무 거지 같았다. mAP 0.3을 못 넘기는 YOLO는 왜 존재하죠?
그야 내가 앞에서 전처리를 잘못했으니까 성능이 이모냥이겠죠;
glob는 순서대로 가져오지 않는다. 메모..📑 랜덤으로 가져오니까 sort를 해주자.. 메모.. 📑
아침 9시 반부터 오후 3시 반까지 거북이보다 느린 속도로 몇 번의 학습과 예측을 했는데 성능이 계속 제자리걸음이었는데 sort 해줬더니 성능이 확 올라서 화 X 짜증 O 났습니다.
팀원분들의 도움을 많이 받은 이번 미프.. 다들 감사합니달라!!
자꾸만 정체성을 잃어가는 에이블 후기.
복습도 아니고 일기도 아니고 이게 뭔지 모르겠지만 나만의 스타일이라고 생각합니다 ~.~