learnopencv.com/deep-learning-based-object-detection-using-yolov3-with-opencv-python-c/ :간략 요약
(예시)
object detector = object locator + object recognizer
- 원리: 입력 이미지를 가로13x세로13으로 나눈다. 즉, 총 169개의 셀로 나눈다.(하나의 셀크기는 이미지크기에 따라 다르다.)
각 셀이 이미지를 찾는 바운딩박스를 만드는데, 욜로는 그 바운딩박스가 실제로 하나의 물체를 포함하는지의 신뢰도와 그 감싸진 물체가 특정 클래스에 속할 확률을 예측한다.
이 바운딩박스의 대부분은 제거되는데, 이유는 그 신뢰도 점수가 낮거나, 같은 물체에 대해 매우 높은 신뢰도점수를 가진 다른 바운딩박스가 감싸고 있기 때문으로, 이를 non-maximum suppression 이라고 한다.
- YOLO를 OpenCV와 함께 사용할 이유:
1. 이미 코드에서 opencv를 사용한다면, 별도로 Darknet code가 필요없다.
2. OpenCV CPU version 이 다크넷 cpu버전보다 최대 9배 더 빠르다.
3. OpenCV는 공식적으로 파이썬을 지원한다.(다크넷은 비공식적지원)
Step 0 : 여기서 다운로드.
cd learnopencv/ObjectDetection-YOLO/
Step 1 : Download the models
https://pjreddie.com/media/files/yolov3.weights
github.com/pjreddie/darknet/blob/master/cfg/yolov3.cfg?raw=true
github.com/pjreddie/darknet/blob/master/data/coco.names?raw=true
Step 2 : Initialize the parameters(object_detection_yolo.py 소스 상.)
신뢰도점수가 confidence threshold parameter(confThreshold)보다 낮은 모든 바운딩 박스가 무시된다.
나머지 바운딩박스들은 non-maximum suppression에 의해 중복박스가 제거되고, 이것은 nmsThreshold 파라미터로 조절된다.
input width (inpWidth) and height (inpHeight) : 더 빠른 결과 위해선 둘다 320으로 하거나, 더 정확한 결과위해 둘다 608로 세팅할수 있다.
Step 3 : Load the model and classes
Step 4 : Read the input
python object_detection_yolo.py --image 이미지파일명
python object_detection_yolo.py --video 동영상파일명
python object_detection_yolo.py #카메라입력받는경우
Step 4 : Process each frame
입력이미지는 blob포맷이어야 함.
blobFromImage() : 입력픽셀값을 255로 나눠, 0~1로 만듦/ (inpWidth, inpHeight)크기로 리사이즈
Step 4a : Getting the names of output layers
Step 4b : Post-processing the network’s output
네트워크출력인 바운딩박스들은 클래스의 수+ 5 개요소의 벡터로 표현된다.
처음 4개요소는 center_x, center_y, width, height이다. 다섯번째 요소는 바운딩박스가 물체를 포함하는 신뢰도점수다.
나머지요소는 각클래스(물체유형)과 관련될 신뢰도다.
그중 가장높은 신뢰도가 주어진 신뢰도 threshold보다 낮은 값일때 그 바운딩박스는 무시되고, 같거나 더 높은 값인경우 중복박스를 제거하기위해, Non Maximum Suppression 과정을 거친다.
Step 4c : Draw the predicted boxes
'머신러닝_딥러닝' 카테고리의 다른 글
object detection - 욜로v3(custom data training) 설명 (0) | 2021.06.03 |
---|---|
결정트리 학습된 모델 시각화: Graphviz Visualize (0) | 2021.01.26 |
머신러닝, 딥러닝 Mnist 학습된 모델 테스트 GUI소스 (0) | 2021.01.26 |