roboflow : 모델링을 하기 전에 이미지를 annotation하고 전처리 및 증강을 할 수 있도록 도와주는 툴
Roboflow: Computer vision tools for developers and enterprises
Everything you need to build and deploy computer vision models, from automated annotation tools to high-performance deployment solutions.
roboflow.com
<겨울왕국 엘사, 안나, 올라프 판별 모델>
1. 이미지 수집
-> 클래스 별로 약 50~70장의 이미지를 수집 (손아픈데 귀여워서 좀 힐링)
이렇게 수집한 이미지들을 로보플로우에 업로드
2. annotation 작업
-> annotaion작업 창에서 클래스의 정답 바운딩 박스를 그리고 해당 클래스명을 입력
-> 작업이 끝난 후 학습, 검증, 평가 데이터의 비율을 설정하면 알아서 구분을 해줌
3. 전처리 및 증강
-> 전처리(사이즈 동일하게 변경)
-> 증강 : 데이터의 수를 늘려줌(회전, 잡음-흐리게/모자이크한 이미지를 추가)
4. 데이터셋 생성
-> 생성 완료된 데이터셋은 코드로 불러와서 사용 가능하다
5. 데이터셋 불러오기
# 로보플로 라이브러리 설치
!pip install roboflow
# 로보플로 라이브러리 불러오기
from roboflow import Roboflow
# 내가 생성한 데이터셋 가져오기
rf = Roboflow(api_key="NC4XvKNglXgbBmjwOS2x")
project = rf.workspace("project-lgek9").project("exam_1108-gkbjw")
version = project.version(3)
dataset = version.download("yolov11")
6. 모델링
# 라이브러리 설치 (ultralytics의 yolo모델을 사용하기 위함)
!pip install ultralytics
#####################################
## 10/30 기준 해당 설정 필요
import os
os.environ['WANDB_MODE'] = 'disabled'
#####################################
# 모델 불러오기
from ultralytics import YOLO, settings
# 데이터셋 경로 수정 (데이터셋의 경로를 현재 경로로 수정)
settings['datasets_dir'] = '/content/'
settings
-> 내가 만든 데이터셋이 저장 ( 각각의 이미지들도 다 들어있음. label(정답) 데이터는 바운딩 박스의 좌표로 들어감)
-> data yaml파일에는 데이터셋의 정보가 들어있음.
(데이터 경로, 클래스의 이름과 수)
7. 모델 사용
# 모델의 가중치 선택. yollo11중 nano버전을 사용
model_transfer = YOLO('yolo11n.pt')
# 모델 학습
results_train = model_transfer.train(model='/content/yolov11n.pt', # 모델 경로
data='/content/exam_1108-3/data.yaml', # yaml경로
epochs=15,# 15번 학습
seed=2024, # 시드설정을 통해 매번 동일한 값을 얻을 수 있음
pretrained=True, # 사전학습된 모델을 사용(yolo)
)
8.예측하기
(1) 이미지 예측 (conf, iou 임계값을 조정해가며 확인해보기)
# 이미지를 집어넣어 예측하는 코드
image_path = 'https://e1.pxfuel.com/desktop-wallpaper/858/575/desktop-wallpaper-olafs-frozen-adventure-anna-elsa-adventure-anna-frozen-elsa-and-anna.jpg'
results_pred = model_transfer.predict(source=image_path,
conf=0.6, # 기본값이 0.25
iou=0.4, # 기본값이 0.7
save=True,
)
# 결과 바로 출력해서 볼 수 있게 -> 이거 설정 안하면 detct파일에서 결과 이미지 볼 수 있음
results_pred[0].show()
-> 예측도가 꽤 높게 나왔는데, 사실 학습에 사용했던 이미지인듯 (확실히 올라프가 특이하게 생겨서 예측이 높은 듯)
-> 어릴때 사진도 각 10장 정도 학습 시켰는데, 비슷하게 생겨서 그런가 잘 예측함
-> 안나가 부모님을 많이 닮았구나 ... 우리 엘사는요..
(2) 동영상 예측
예측이 꽤 높기도 하고 학습 데이터에 어떤 이미지를 넣었는지 기억이 안나서 동영상도 해봤음
# !mkdir /content/videos
# !wget -O /content/videos/01.mp4 https://github.com/DrKAI/image/raw/main/No_Way_This_Happened.mp4
# !wget -O /content/videos/02.mp4 https://github.com/DrKAI/image/raw/main/Guy_slips_20th_century_remix.mp4
# !wget -O /content/videos/03.mp4 https://github.com/DrKAI/image/raw/main/kid_dream.mp4
from google.colab import drive
drive.mount('/content/drive')# 내 구글 드라이브에 연결
# 동영상 1
results = model_transfer.predict(source='/content/drive/MyDrive/DX_Deep/Yolo/video2.mp4', # 동영상 파일 경로
save=True,
stream=True,
)
for r in results :
r.boxes
-> 옆모습의 예측도는 확실히 정면보다 떨어짐
->엥 ;;;
-> 올라프도 진짜 빠르게 지나가는데 예측을 하긴 함
-> 뒷모습까지 예측할 줄은 몰랐음 (아주 굿)
이미지 학습을 많이 시켰는데도 이정도 예측성능이면 아주 굿잡 !!!!!!
'에이블 스쿨' 카테고리의 다른 글
[14~15주차] IT 인프라, 클라우드 (0) | 2024.12.31 |
---|---|
[미니프로젝트 5차] 얼굴인식 모델 (3) (0) | 2024.11.25 |
[9주차] 딥러닝(2)_이진, 다중분류 모델링 (0) | 2024.11.01 |
[KT 에이블스쿨] 머신러닝(지도학습) (0) | 2024.10.29 |
[KT 에이블스쿨] 데이터 수집 (0) | 2024.10.29 |