딥러닝을 사용한 객체 검출 시작하기
딥러닝을 사용한 객체 검출은 영상에서 객체의 위치를 예측하기 위한 빠르고 정확한 수단을 제공합니다. 딥러닝은 객체 검출기가 검출 작업에 필요한 영상 특징을 자동으로 학습하는 강력한 머신러닝 기법입니다. Computer Vision Toolbox™는 YOLO(You Only Look Once) v2, YOLO v3, YOLO v4, YOLOX, RTMDet, SSD(Single Shot Detection) 등의 딥러닝을 사용한 객체 검출을 위한 여러 가지 기법을 제공합니다.

객체 검출을 사용하는 응용 분야는 다음과 같습니다.
장면 이해
다중 객체 추적
외관 검사
자율주행 차량
감시
Computer Vision Toolbox와 해당 지원 패키지를 사용하면 사전 훈련된 객체 검출기를 구성하거나 사용자 지정 객체 검출 신경망을 설계하고, 사전 훈련된 신경망이나 훈련된 신경망을 사용하여 추론을 수행하며, 전이 학습을 수행하고, 객체 검출기 분석기 앱에서 검출 결과를 시각화하고 평가할 수 있습니다.
사전 훈련된 신경망을 사용하여 영상에서 객체 검출을 시작하려면 사전 훈련된 객체 검출 신경망을 사용하여 객체 검출하기 섹션을 참조하십시오.
훈련되지 않은 객체 검출 신경망 또는 사전 훈련된 객체 검출 신경망을 전이 학습을 위해 훈련시키고 결과를 평가하는 작업을 시작하려면 객체 검출 신경망 훈련 및 전이 학습 수행하기 섹션을 참조하십시오.
심층 신경망 디자이너 (Deep Learning Toolbox) 앱을 사용하여 사용자 지정 신경망을 계층별로 설계할 수도 있습니다. YOLO v2 객체 검출 신경망을 사용하는 예제는 Perform Transfer Learning Using Pretrained YOLO v2 Detector 항목을 참조하십시오.
사전 훈련된 객체 검출 신경망을 사용하여 객체 검출하기
Computer Vision Toolbox는 사전 훈련된 객체 검출 모델을 제공하며, 사용자는 이를 활용하여 기본 제공되는 추론을 바로 수행하거나(out-of-the-box inference)이나 사용자 지정 데이터 세트에 대한 전이 학습을 수행할 수 있습니다.
사전 훈련된 모델 구성하기
사전 훈련된 객체 검출 모델을 사용하려면 먼저 사전 훈련된 객체 검출 모델을 다운로드하여 설치해야 합니다. 애드온 탐색기를 사용하여 사전 훈련된 모델 지원 패키지를 다운로드하고 설치할 수 있습니다. 애드온 설치에 대한 자세한 내용은 애드온을 받고 관리하기 항목을 참조하십시오.
다음 표에는 객체 검출기 객체의 이름, 사용 가능한 해당 사전 훈련된 모델, 다운로드할 해당 애드온 지원 패키지의 이름이 나열되어 있습니다.
| 객체 검출 모델 | 사용 가능한 사전 훈련된 모델 | 지원 패키지 이름 |
|---|---|---|
yolov2ObjectDetector |
| Computer Vision Toolbox Model for YOLO v2 Object Detection |
yolov3ObjectDetector |
| Computer Vision Toolbox Model for YOLO v3 Object Detection |
yolov4ObjectDetector |
| Computer Vision Toolbox Model for YOLO v4 Object Detection |
yoloxObjectDetector |
| Automated Visual Inspection Library for Computer Vision Toolbox |
| Computer Vision Toolbox Model for RTMDet Object Detection |
사전 훈련된 모델을 사용하여 추론 수행하기
사전 훈련된 검출기 모델을 사용하여 테스트 영상에서 추론을 수행하고 객체를 검출합니다. 응용 사례에 맞는 사전 훈련된 객체 검출 신경망을 선택하는 데 도움이 필요하면 Choose an Object Detector 항목을 참조하십시오. 경계 상자, 신뢰도 점수, 해당 클래스 레이블을 반환하려면, 사전 훈련된 detector 객체를 해당 detect 객체 함수에 전달하십시오.
예를 들어, 사전 훈련된 모델 구성하기 섹션에 나열된 사전 훈련된 YOLO v4 tiny-yolov4-coco 신경망을 사용하려면 yolov4ObjectDetector 객체를 생성하여 모델을 불러옵니다.
detector = yolov4ObjectDetector("tiny-yolov4-coco");
테스트 영상을 작업 공간으로 읽어 들인 후 영상을 표시합니다. 이 영상에 대해 검출기를 실행하기 위해 영상을 작업 공간에 저장합니다.
I = imread("carsonroad.png");
imshow(I)

yolov4ObjectDetector 객체의 detect 객체 함수를 사용하여 테스트 영상에서 객체를 검출합니다.
[bboxes,scores,labels] = detect(detector,I);
insertObjectAnnotation 함수를 사용하여 입력 영상 위에 결과를 겹쳐 표시합니다.
detectedImg = insertObjectAnnotation(I,"Rectangle",bboxes,labels);
figure
imshow(detectedImg)

훈련된 객체 검출 신경망을 사용하여 테스트 영상에 대해 추론을 수행하려면, 동일한 과정을 따르되 훈련된 신경망을 detect 함수에 detector 인수로 지정하십시오.
MathWorks GitHub 사전 훈련된 신경망
MathWorks® GitHub 리포지토리는 최신의 사전 훈련된 객체 검출 딥러닝 신경망의 구현을 제공하며, 사용자는 이를 다운로드하여 즉시 추론 수행에 사용할 수 있습니다(out-of-the-box inference). 이 사전 훈련된 객체 검출 신경망은 COCO 및 Pascal VOC 데이터 세트와 같은 표준 데이터 세트로 이미 훈련되어 있습니다. 이러한 사전 훈련된 모델을 직접 사용하여 테스트 영상에서 다양한 객체를 검출할 수 있습니다.
MathWorks에서 제공하는 최신의 사전 훈련된 객체 검출기 전체 목록을 보려면 MATLAB Deep Learning (GitHub)을 참조하십시오.
객체 검출 신경망 훈련 및 전이 학습 수행하기
추가 클래스를 검출하도록 신경망을 수정하거나 다른 신경망 파라미터를 사용자 지정하려면 전이 학습을 수행할 수 있습니다. 이 섹션에서는 훈련 데이터를 준비하고, 사전 훈련된 객체 검출 신경망을 구성하며, 신경망을 훈련시키고, 검출 결과를 평가하는 방법을 보여줍니다.
훈련 데이터 만들기
영상 레이블 지정기, 비디오 레이블 지정기, Ground Truth 레이블 지정기 (Automated Driving Toolbox)와 같은 레이블 지정 앱을 사용하여 비디오, 영상 시퀀스, 영상 모음 또는 사용자 지정 데이터 소스에서 대화형 방식으로 ground truth 데이터에 레이블을 지정합니다. 영상에서 객체의 위치와 크기를 정의하는 사각형 ROI 레이블을 사용하여 대화형 방식으로 ground truth에 레이블을 지정할 수 있습니다.

객체 검출을 위해 영상에 레이블을 지정하는 방법에 대한 자세한 내용은 다음 항목을 참조하십시오.
데이터 증강 및 전처리하기
제한된 데이터 세트로 객체 검출기를 훈련시키기 위해 데이터 증강을 사용합니다. 평행 이동(translating), 자르기(cropping), 변환(transforming)과 같이 데이터 세트의 영상을 약간 변경함으로써 서로 다른 고유한 훈련 데이터를 생성할 수 있으며, 이를 통해 보다 강인한 검출기를 만들 수 있습니다. 데이터저장소를 사용하면 데이터 모음을 편리하게 읽고 증강할 수 있습니다. imageDatastore와 boxLabelDatastore를 사용하여 각각 영상을 위한 데이터저장소와 레이블이 지정된 경계 상자 데이터를 위한 데이터저장소를 만듭니다.
훈련을 위해 데이터를 증강하고 전처리하는 방법에 대한 자세한 내용은 다음 항목을 참조하십시오.
데이터저장소를 사용하여 훈련 데이터를 증강하는 방법에 대한 자세한 내용은 Datastores for Deep Learning (Deep Learning Toolbox) 항목과 내장된 데이터저장소를 사용하여 추가적인 영상 처리 연산 수행하기 (Deep Learning Toolbox) 항목을 참조하십시오.
객체 검출기 훈련시키기
객체 검출 신경망을 훈련시키려면, 사용하는 객체 검출 모델에 해당하는 훈련 함수를 사용합니다. 예를 들어, yolov4ObjectDetector 객체를 사용하여 검출기를 구성하는 경우 trainYOLOv4ObjectDetector 함수를 사용합니다.
신경망 훈련 옵션은 trainingOptions (Deep Learning Toolbox) 함수를 사용하여 지정합니다. 훈련 옵션 파라미터는 실험 관리자 (Deep Learning Toolbox) 앱을 사용하여 결정할 수 있습니다. 하이퍼파라미터 조정을 위해 실험 관리자를 사용하는 방법에 대한 자세한 내용은 Train Object Detectors in Experiment Manager 항목을 참조하십시오.
훈련, 추론 및 결과를 평가하는 방법에 대해 자세히 알아보려면 다음 예제를 참조하십시오.
객체 검출기 성능 평가 및 미세 조정하기
객체 검출기 분석기 앱을 사용하여 대화형 방식으로 검출 결과를 시각화합니다. 포괄적인 메트릭 세트를 사용하여 ground truth와 비교해 검출 결과를 평가하려면 다음을 수행할 수 있습니다.
객체 검출기 분석기 앱을 사용하여 성능 메트릭을 계산하고 평가하며, 내보낼 수 있습니다. 앱에서 검출 결과의 시각화 및 평가를 시작하려면 객체 검출기 분석기 시작하기 항목을 참조하십시오. 앱을 사용하여 성능 메트릭을 평가하는 훈련 예제는 Multiclass Object Detection Using YOLO v2 Deep Learning 항목을 참조하십시오.
evaluateObjectDetection함수를 사용하여 성능 메트릭을 계산하고 평가합니다.
evaluateObjectDetection 함수는 객체 검출 메트릭을 objectDetectionMetrics 객체로 반환합니다. 객체 검출기 분석기 앱을 사용하여 메트릭을 objectDetectionMetrics 객체로 내보내 추가 분석을 수행할 수도 있습니다. 다음과 같은 objectDetectionMetrics 객체 함수를 사용하여 클래스, 영상, 중첩 임계값 전반에 대한 메트릭을 계산하고 사용자 지정 시각화를 생성합니다.
objectDetectionMetrics 객체 함수 | 사용법 | 샘플 출력 |
|---|---|---|
데이터 세트에서 모든 클래스 또는 선택된 클래스와 중첩(intersection-over-union) 임계값에 대해 평균 정밀도(AP) 계산 |
| |
데이터 세트에서 모든 클래스 또는 지정된 클래스와 중첩 임계값에 대해 정밀도, 재현율, 신뢰도 점수 계산 |
| |
confusionMatrix | 지정된 신뢰도 점수 임계값 또는 중첩 임계값에서 혼동행렬과 정규화된 혼동행렬 계산 |
|
metricsByArea | 검출된 객체를 면적에 따라 Bin으로 그룹화하여 평균 정밀도(AP), 재현율, 정밀도 등 객체 크기 기반의 검출 메트릭 계산 |
|
summarize | 전체 데이터 세트 또는 각 클래스에 대해 객체 검출 메트릭의 요약 계산 |
|
| 정밀도, 재현율, TP, FP, FN 개수를 포함한 영상별 성능 메트릭 계산 |
|
성능 메트릭에 대한 자세한 내용은 Evaluate Object Detector Performance 항목을 참조하십시오.





