사용자 학습
YOLOv5를 사용하여 사용자 데이터를 학습시키고 특정 표지판(right, left, ahead)을 탐지하려면 다음 과정을 따르면 됩니다.
1. 필수 설치
-
YOLOv5 설치
GitHub에서 YOLOv5를 클론하고 필요한 라이브러리를 설치합니다.git clone https://github.com/ultralytics/yolov5.git cd yolov5 pip3 install -r requirements.txt -
Python 환경 구성
Python 3.8 이상이 필요하며, CUDA와 PyTorch가 Jetson Orin Nano에 맞게 설치되어 있어야 합니다.
2. 데이터 준비
- 데이터셋 수집
right,left,ahead표지판 이미지를 수집합니다.- 데이터는 다양한 각도와 조명 조건을 포함하여 충분히 준비해야 합니다.
-
이미지 크기는 YOLO 모델에 적합하도록 정규화되지 않아도 됩니다.
-
라벨링
라벨링 도구인 LabelImg 또는 **Roboflow**를 사용하여 데이터를 라벨링합니다. - 각 이미지에 대해 객체의 경계 상자를 설정하고,
right,left,ahead로 클래스 이름을 지정합니다. -
YOLO 형식의 라벨 파일 생성 (이미지와 같은 이름,
.txt확장자):예:class_id x_center y_center width height0 0.5 0.5 0.2 0.3class_id는 클래스 번호 (0 = right, 1 = left, 2 = ahead).x_center,y_center,width,height는 이미지 크기 대비 상대 좌표 (0~1 범위).
-
디렉토리 구조 설정
YOLO는 다음 구조를 기대합니다:dataset/ images/ train/ val/ labels/ train/ val/ images/train에는 학습 이미지가,images/val에는 검증 이미지가 있습니다.labels/train및labels/val에는 각각의 라벨 파일이 있습니다.
3. 데이터 구성 파일 작성
data.yaml생성
프로젝트 폴더에data.yaml파일을 생성합니다. 예:path: ./dataset # 데이터셋 경로 train: images/train # 학습 이미지 경로 val: images/val # 검증 이미지 경로 nc: 3 # 클래스 수 names: ['right', 'left', 'ahead'] # 클래스 이름
4. YOLO 모델 학습
-
사전 학습된 모델 다운로드
사전 학습된 YOLOv5 모델(yolov5s.pt)을 사용합니다. YOLOv5s는 소형 모델로 Jetson Nano에서도 적합합니다. -
학습 시작
YOLO 학습을 시작합니다.python3 train.py --img 640 --batch 16 --epochs 50 --data data.yaml --weights yolov5s.pt --device 0 --img: 입력 이미지 크기 (기본 640).--batch: 배치 크기 (Jetson Orin Nano의 메모리 상황에 맞게 조정).--epochs: 학습 반복 횟수.--data:data.yaml파일 경로.--weights: 사전 학습된 가중치.-
--device: GPU 사용 (0). -
학습 모니터링
학습 진행 상황은runs/train/exp/디렉토리에 저장됩니다. - 학습 로그:
results.png및 텍스트 로그 파일. - 최종 모델 가중치:
runs/train/exp/weights/best.pt.
5. 학습된 모델 테스트
-
테스트 데이터 준비
테스트할 이미지나 동영상을 준비합니다. -
모델 추론
학습된 모델을 사용하여 추론합니다.python3 detect.py --weights runs/train/exp/weights/best.pt --img 640 --source data/images/test.jpg --source: 테스트 이미지 또는 동영상 경로.- 결과는
runs/detect/exp/에 저장됩니다.
6. Jetson Orin Nano에서 최적화
-
TensorRT 변환
학습된 모델(best.pt)을 ONNX로 변환한 후 TensorRT로 최적화합니다.python3 export.py --weights runs/train/exp/weights/best.pt --img 640 --batch 1 trtexec --onnx=best.onnx --saveEngine=best.trt --fp16 -
최적화된 모델 실행
TensorRT로 변환된 모델(best.trt)을 실행합니다. 이 과정은 Jetson의 GPU 가속을 극대화합니다.
7. 결과 분석
학습 성능 및 검증 성능을 평가합니다.
- results.png 분석: 학습 및 검증 정확도, 손실 그래프.
- 혼동 행렬: 클래스별 정확도 확인.
- 실시간 테스트: 모델의 실제 성능 확인.
8. 실시간 감지 (Jetson Orin Nano)
Jetson Orin Nano에서 실시간 객체 감지를 수행하려면 OpenCV와 YOLO 모델을 결합하여 카메라 스트림을 처리합니다.
import cv2
from yolov5 import YOLO
model = YOLO('runs/train/exp/weights/best.pt')
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
results = model(frame)
frame = results.render()
cv2.imshow('YOLO Detection', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
필요한 추가 사항이나 구현 중 문제가 있다면 언제든지 문의하세요!