컴퓨터 비전의 객체 감지 기술은 수많은 애플리케이션에 필수적입니다. 로봇 공학, 감시 장비, 자율 주행 자동차 및 더 많은 분야에서 사용합니다. 따라서 우리는 사진이나 영상에서 특정한 것을 찾고 인식하게 됩니다.
가장 잘 알려진 객체 식별 알고리즘은 YOLO입니다. (You Only Look Once) 모델 세트. 이러한 모델은 울트라리틱스 LLC.
이 시리즈의 최신 버전은 YOLOv5입니다. 또한 시장에서 가장 빠르고 정확한 개체 식별 모델입니다. 새 데이터로 일반화하는 모델의 용량이 크게 향상되었습니다. 또한 이전 반복보다 더 나은 성능을 제공하는 많은 기능이 포함되어 있습니다.
YOLOv5는 단일 GPU에서 초당 최대 1000프레임의 속도로 사진을 처리할 수 있기 때문에 실시간 애플리케이션에 적합합니다.
이 기사에서는 YOLOv5를 소개하고 적용 분야에 대해 자세히 살펴보겠습니다.
YOLO의 여정: YOLO에서 YOLOv5로
Joseph Redmon et al. 원래 2016년에 객체 식별 모델 세트인 YOLO를 도입했습니다. 초기 YOLO 모델은 객체를 실시간으로 식별할 수 있었습니다. 그러나 당시 다른 모델에 비해 정확도가 낮았다.
YOLO의 여러 업그레이드 버전이 수년에 걸쳐 출시되었습니다. 마지막으로 Ultralytics LLC는 YOLO 시리즈의 최신 버전인 YOLOv5를 만들었습니다.
YOLOv5는 현재 사용 가능한 가장 정확하고 빠른 개체 식별 모델입니다.
주요 기능
앵커 박스
YOLOv5는 앵커 박스를 사용하여 이미지의 객체에 대한 경계 상자를 예측합니다. 이 모델은 앵커 상자를 사용하여 그림의 항목과 가장 잘 일치하는 다양한 종횡비를 가진 많은 미리 정의된 상자를 예측합니다. 미리 정의된 상자입니다.
또한 YOLOv5가 사진에서 항목을 정확하게 인식하고 찾을 수 있도록 합니다.
모자이크 데이터 증대
훈련할 때 YOLOv5는 모자이크라는 방법을 사용합니다. 데이터 확대. 새로운 훈련 사진을 개발하기 위해 우리 모델은 여러 사진의 패치를 무작위로 결합합니다. 결과적으로 모델은 보다 탄력적이고 신뢰할 수 있게 됩니다. 따라서 새로운 데이터로 일반화하고 과적합을 줄입니다.
고유한 교육 파이프라인
감독 및 교육을 혼합하는 고유한 교육 파이프라인 비지도 학습 사용.
따라서 모델은 더 작은 샘플에서 학습하고 레이블이 지정되지 않은 입력을 효과적으로 활용합니다. 이렇게 하면 모델의 성능이 향상되고 새로운 입력에 대한 일반화 능력이 향상됩니다.
잔차 및 비잔차인 레이어
YOLOv5의 아키텍처는 잔차 및 비잔차 레이어를 결합합니다. 그라디언트가 레이어를 가로질러 흐를 수 있도록 함으로써 잔여 레이어는 모델이 어려운 기능을 학습하는 데 도움을 줍니다. 또한 non-residual 레이어는 모델이 입력 그림을 보다 포괄적으로 파악할 수 있도록 합니다. 결과적으로 YOLOv5는 보다 정확하고 효과적으로 작동할 수 있습니다.
YOLOv5 사용 방법
설치
YOLOv5 설치는 pip를 사용하여 빠르게 완료할 수 있습니다. Pip은 Python 패키지 관리자입니다. YOLOv5를 설치하는 일반적인 절차는 다음과 같습니다.
1- PyTorch 설치: YOLOv5는 PyTorch 프레임워크를 기반으로 하기 때문에 먼저 PyTorch를 설치해야 합니다.
pip install torch torchvision
2. CUDA 설치: GPU에서 YOLOv5를 실행하려면 CUDA를 설치해야 합니다.
3. YOLOv5 설치: PyTorch 및 CUDA를 설정한 후 다음 명령을 사용하여 YOLOv5를 다운로드합니다.
pip install yolov5
4- YOLOv5 설치 후 미리 훈련된 가중치를 다운로드해야 합니다. 사전 훈련된 가중치는 Ultralytics GitHub 리포지토리에서 사용할 수 있습니다.
아래로 스크롤하여 웹 사이트의 "가중치" 부분으로 이동합니다. 여기에서 찾을 수 있는 목록에서 미리 훈련된 가중치를 다운로드할 수 있습니다.
5. 이미 학습되었으며 사용 사례에 가장 적합한 가중치를 선택합니다. 가중치가 학습된 데이터 세트 또는 특정 YOLOv5 버전을 사용하여 목록을 좁힐 수 있습니다.
6- 적절한 가중치를 선택한 후 옆에 있는 "다운로드" 버튼을 클릭하여 가중치를 선택합니다. 가중치는 다음과 같이 다운로드할 수 있습니다. pt 파일.
7- 다운로드한 가중치를 디렉토리로 전송합니다. 여기에서 감지 스크립트가 작동합니다.
8- 이 시점에서 감지 스크립트의 미리 훈련된 가중치를 사용하여 사진이나 동영상에서 물체 감지를 실행할 수 있습니다.
데이터 준비
YOLOv5에서 사용할 수 있도록 데이터를 준비하려면 다음 작업을 수행해야 합니다.
1. 데이터 수집: 첫 번째 단계는 필요한 사진 또는 비디오 데이터를 수집하는 것입니다. 물체 감지. 감지하려는 것이 사진이나 비디오에 있어야 합니다.
2- 데이터 포맷: 사진을 사용하는 경우 스크립트로 사진을 가져올 수 있습니다. 비디오를 사용하려면 비디오를 일련의 사진으로 변환해야 합니다. OpenCV와 같은 라이브러리를 사용하여 동영상에서 프레임을 추출할 수 있습니다.
import cv2
img = cv2.imread('path/to/image')
OpenCV 라이브러리를 사용하면 다음 명령을 사용하여 비디오를 일련의 이미지로 변환할 수 있습니다.
import cv2
cap = cv2.VideoCapture('path/to/video')
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
3. 데이터에 레이블 지정: 데이터 세트를 사용하는 경우 데이터에 레이블을 지정해야 합니다. 이미지의 각 프레임에서 식별하려는 항목 주위에 경계 상자를 그립니다. 데이터에 레이블을 지정하는 과정입니다. LabelImg 및 RectLabel을 포함하여 이 작업을 지원하는 여러 도구를 사용할 수 있습니다.
4- 태그를 지정한 후 데이터를 훈련 세트와 테스트 세트로 나누어야 합니다. 이는 모델의 성능을 평가하는 데 매우 중요합니다.
5. 마지막으로 교육 또는 테스트 전에 데이터를 전처리해야 할 수도 있습니다. 여기에는 사진 또는 비디오 크기 조정, 픽셀 값 표준화 또는 데이터 증대 방법 사용이 수반될 수 있습니다.
이 단계를 완료하면 데이터가 준비됩니다.
감지 스크립트 실행
다음은 그림을 분석하고 개체를 찾는 감지 스크립트의 그림입니다.
import yolov5
import cv2
# Pre-trained weights should be loaded.
weights = 'path/to/weights.pt'
# Set the detection confidence level
conf_thres = 0.5
# Set the Non-Maxima Suppression (NMS) threshold
nms_thres = 0.5
# Create the detector object
detector = yolov5.YOLOv5(weights, conf_thres, nms_thres)
# Load the image
img = cv2.imread('path/to/image')
# Perform object detection
detections = detector.detect(img)
# Print the detections
for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections:
print("Object:", classes[int(cls_pred)])
print("Confidence:", conf)
print("Bounding box:", (x1, y1, x2, y2))
후 처리
최대가 아닌 억제는 개체 감지(NMS)에서 가장 자주 사용되는 후처리 기술 중 하나입니다. NMS를 사용하여 동일한 객체에 대해 겹치는 경계 상자를 제거합니다. 탐지에서 NMS를 실행하기 위해 OpenCV 라이브러리의 cv2.dnn.NMSBoxes() 메서드를 사용할 수 있습니다.
다음은 NMS를 사용하여 탐지를 후처리하는 방법의 예입니다.
import cv2
# Perform Non-Maxima Suppression (NMS)
인덱스 = cv2.dnn.NMSBoxes(감지, 신뢰도, conf_thres, nms_thres)
시각화
시각화의 경우 OpenCV와 같은 라이브러리를 다시 사용할 수 있습니다. 소스 사진 또는 비디오에서 발견된 개체 주위에 경계 상자를 표시할 수 있습니다. 이미지의 경계 상자를 그리려면 cv2.rectangle() 메서드를 사용하십시오. 원본 이미지에서 탐지를 보는 방법은 다음과 같습니다.
cv2 가져 오기
# Draw the bounding boxes on the image
인덱스의 I:
i = i[0]
x1, y1, x2, y2 = detections[i][0], detections[i][1], detections[i][2], detections[i][3]
cv2.rectangle(img, (x1, y1), (x2, y2), (255, 0, 0), 2)
cv2.putText(img, classes[class_ids[i]], (x1, y1), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
# Show the image
cv2.imshow("Object Detection", img)
cv2
어플리케이션
YOLOv5는 강력한 개체 식별 모델입니다. 따라서 많은 실제 시나리오에서 사용할 수 있습니다. 가장 눈에 띄는 용도 중 하나는 자율주행차입니다. YOLOv5는 자동차 및 신호등과 같은 항목을 실시간으로 식별할 수 있습니다.
감시 시스템에서 YOLOv5를 사용하여 라이브 비디오 스트림에서 개체를 인식하고 추적할 수 있습니다. 또한 YOLOv5는 로봇 공학에서 큰 자산이 될 수 있습니다. 로봇이 주변 환경을 감지하고 이해하는 데 도움이 될 수 있습니다. 이는 탐색 및 조작과 같은 활동에 매우 중요합니다.
YOLOv5는 소매, 스포츠, 의료 및 보안과 같이 물체 감지가 필요한 모든 산업에서 활용할 수도 있습니다.
결론
마지막으로, YOLOv5는 YOLO 제품군의 가장 최신의 정교한 버전입니다. 물체 감지 모델
. 또한 가장 정확한 객체 감지 모델이라고 해도 과언이 아닙니다. 높은 정확도와 속도 덕분에 물체 감지 프로젝트에 안전하게 선택할 수 있습니다.
레스키 아구스
나는 yolov5로 탐지 차량에 대한 첫 번째 저널을 만들고 이 웹은 그것에 대한 정보를 검색하는 데 도움이 됩니다.
저는 AI에 대해 관심이 많습니다.
AI에 대해 많은 질문을 할 수 있다면 나를 도울 수 있을지도 모릅니다.
감사합니다