1. UltraLytics : YOLO : 실시간 객체 탐지 모델
* YOLO : You Only Look Once
- 이미지를 한 번만 스캔하여 여러 객체들을 동시에 찾음.
- Darknet Framework 기반의 YOLO v3을 PyTorch로 반환
- YOLO v11
https://github.com/ultralytics
Ultralytics
Simpler. Smarter. Further. Ultralytics has 41 repositories available. Follow their code on GitHub.
github.com
Home
Discover Ultralytics YOLO - the latest in real-time object detection and image segmentation. Learn its features and maximize its potential in your projects.
docs.ultralytics.com
1) YOLO Quick Manual
# 라이브러리 설치
!pip install ultralytics
#####################################
## 10/30 기준 해당 설정 필요
import os
os.environ['WANDB_MODE'] = 'disabled'
#####################################
# 시각화가 default라서 에러가 발생함.
# disabled로 설정해놓으면 됨.
# 라이브러리 불러오기
from ultralytics import YOLO, settings
# 모델 선언 (모델 구조 및 가중치 설정)
model = YOLO()
# ~~to 'yolo11n.pt'...
# => pt : 파이토치로 저장 (structure, weights_모델 구조화, 가중치)
# => 이렇게 학습된 것을 가져다 쓰는거임
# => n : 나노 (n,s,m,l,x) 나노-스몰-미디움-라지-엑스라지
# => 작을수록 속도가 빠름 (그닥 가볍지만도 않음)
# 모델 학습 (학습에 관련된 설정 가능)
model.train(model='/content/yolo11n.pt'
data='coco8.yaml',
epochs=10
)
# 모델 검증 (학습된 모델 성능을 검증, 생략 가능)
model.val()
# 예측값 생성 (데이터의 예측 결과 생성)
result = model.predict(save=True, save_txt=True)
model.train() 시 아래와 같은 내용이 함께 출력된다.
* 결과 (사진)
![]() |
![]() |
2) YOLO_SlowStart
# 라이브러리 설치
!pip install ultralytics
#####################################
## 10/30 기준 해당 설정 필요
import os
os.environ['WANDB_MODE'] = 'disabled'
#####################################
# 라이브러리 불러오기
# YOLO 설정
from ultralytics import settings
settings # datasets_dir 유심히! '/content/datasest'로 되어있음
# 데이터 저장된 장소(기본 경로)
# 실제로 보면 안만들어짐. 이슈가 발생할 여지가 다분함
settings['datasets_dir'] = '/content/'
settings
from ultralytics import YOLO
# 모델 선언
## YOLO()로 실행 시, default는 yolo11n.pt가 선택되고, detect를 수행한다.
model = YOLO(model='yolo11n.pt', task='detect')
# 모델 학습
model.train(model='/content/yolo11n.pt', # 굳이 넣는 이유? 나중에 잘 커스텀 학습된 모델을 쓸 때 명시해야 하기 때문!
data='coco8.yaml',
epochs=20,
patience=5,
# save=True,
# project='trained',
# name='trained_model',
# exist_ok=False,
pretrained=True,
# optimizer='auto',
# verbose=False,
# seed=2024,
# resume=False,
# freeze=None
)
# train set / val set (검증용) / test set (평가용)_image, label 파일 존재해야 함.
## 기본적으로 .train() 과정에서 val 옵션이 True로 되어 있음.
# model.val() => test set을 넣어줘야 함.
# 예측값 생성 (Inference 과정, 추론과정, 예측과정)
# 기존에는 없는, 완전 새로운 데이터를 넣어야 함! (test, val, test 모두 여기서 쓰면 안됨)
## conf와 iou는 하이퍼파라미터!!!!!!!!!!!!!
results = model.predict(source='https://images.pexels.com/photos/139303/pexels-photo-139303.jpeg',
# conf=0.5,
# iou=0.5,
save=True, save_txt=True, line_width=2)
## MS COCO는 (<- ImageNet 같은 느낌) 선학습모델
## 80 classes object detecting을 푼 모델
## Object Detection 모델을 학습할 때
## 사용한 데이터셋
## YOLO는 MS COCO 데이터셋으로 학습한
## object detection 모델입니다.
## 그 결과물이 yolo11n.pt에 담겨있는 것
## 추론해보고 싶은 이미지의 주소를 넣음.
file_path = ''
results = model.predict(source=file_path,
# conf=0.5,
# iou=0.5,
save=True, save_txt=True, line_width=2)
2. Roboflow : Universe
- Roboflow에서 제공하는 AI 모델 훈련 데이터셋 무료 라이브러리
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) 사용 방법
2) 데이터셋 내부 구조
![]() |
![]() |
![]() |
데이터셋 폴더의 내부 구조 | data.yaml(파일 내부 구조) | 폴더별로 images/labesl 존재 |
![]() |
images/labels 폴더 내부에는 동일한 이름의 이미지 파일과 텍스트 파일이 저장되어있으며, labels 폴더의 txt 파일에는 클래스 정보와 Normalize 된 x,y,w,h가 있음. |
3) 전체 코드
# 라이브러리 설치와 불러오기는 생략함
# 모델 선언
model_transfer = YOLO('yolo11n.pt')
# 모델 학습
results_train = model_transfer.train(model='/content/yolov11n.pt',
###################################################
data='/content/test_project-2/data.yaml', # 경로와 클래스가 입력되어 있음.
###################################################
epochs=10,
seed=2024,
pretrained=True,
)
# Overriding model.yaml nc=80 with nc=5
# 80개 학습된 MS COCO를 football datasets (fine-tuning)
# 원하는 사진으로 예측하기
image_path = 'https://w7.pngwing.com/pngs/100/204/png-transparent-shooting-shot-players-football-thumbnail.png'
results_pred = model_transfer.predict(source=image_path,
save=True,
)
이외에 종합실습할때 혼자서 재활용품 사진으로 분류를 해보았는데, 시간이 없어 epochs를 5번밖에 안줬더니, 결과가 별로였다.
데이터 개수도 500개 정도밖에 안되고, 병이랑 페트병이 비슷하게 생겨서 그런듯ㅋㅅㅋ
'딥러닝' 카테고리의 다른 글
[딥러닝] Reboflow : Project _ 20241108 (7) | 2024.11.08 |
---|---|
[딥러닝] Object Detection _ 20241107 (6) | 2024.11.07 |
[딥러닝] 언어 모델 활용 (2) RAG _ 20241106 (10) | 2024.11.06 |
[딥러닝] 언어 모델 활용 (1) LangChain _ 20241106 (1) | 2024.11.06 |
[딥러닝] 언어모델 이해 (3) Tokenizing & Embedding _ 20241105 (10) | 2024.11.05 |