YOLOv1 연구 노트

잘 작성된이 큰 사람을 참조하십시오 : YOLO v1 심층 이해

다음은 몇 가지 중요한 사항입니다.
여기에 사진 설명 삽입 입력은 원본 이미지이고 유일한 요구 사항은 448x448로 확장하는 것입니다. 주로 YOLO 네트워크에서 컨볼 루션 계층은 최종적으로 두 개의 완전 연결 계층에 연결되기 때문입니다. 완전 연결 계층은 입력으로 고정 된 크기의 벡터를 필요로하므로 다시 밀어 넣으려면 고정 된 크기의 원본 이미지가 필요합니다. 그러면 YOLO 디자인의 크기는 448x448입니다. 출력은 7x7x30 텐서 (텐서)입니다.

30 차원 벡터

여기에 사진 설명 삽입① 20 개의 물체 분류 확률
YOLO는 20 개의 물체 (사람, 새, 고양이, 자동차, 의자 등)의 인식을 지원하기 때문에 그리드 위치에있는 물체의 확률을 나타내는 20 개의 값이 있습니다.
여기에 사진 설명 삽입
조건부 확률 있는데 , 그리드에 Object Object가 있으면 Ci 일 확률은 P (Ci | Object)라는 뜻입니다.

② 2 개의 바운딩 박스의 위치.
각 바운딩 박스의 위치 (Center_x, Center_y, width, height), 즉 (바운딩 박스 중심점의 x 좌표, y 좌표)를 나타 내기 위해 4 개의 값이 필요합니다 . , 경계 상자의 너비 및 높이)), 경계 상자 2 개는 위치를 표시하기 위해 총 8 개의 값이 필요합니다.

③ 두 경계 상자의 신뢰도 경계 상자의 신뢰도
= 경계 상자에있는 객체의 확률 * 경계 상자의 IOU와 객체의 실제 경계 상자

여기에 사진 설명 삽입
Pr (Object) 공식으로 표현됩니다. 는 바운딩 박스 안의 객체입니다. 확률은 위의 ① 번 포인트에서 P (Ci | Object)와 다릅니다. Pr (Object)은 그것이 어떤 객체인지는 중요하지 않으며, 객체가 있거나 없을 확률을 반영합니다. 포인트 ①의 P (Ci | Object)는 그리드에 이미 객체가 있다고 가정하는 것을 의미합니다.
여기에 사진 설명 삽입또한 "예측 된"경계 상자라고도하지만이 IOU는 훈련 단계에서 계산된다는 점에 유의해야합니다. 테스트 단계 (추론)에 관해서는 현재 실제 객체가 어디에 있는지 알지 못하며 네트워크의 출력에만 전적으로 의존 할 수 있습니다. 현재는 필요가 없습니다. IOU를 계산합니다.

일반적으로 경계 상자의 신뢰도는 개체가 포함되어 있는지 여부와 정확도를 의미합니다. 신뢰도가 높으면 여기에 물체가 있고 위치가 상대적으로 정확함을 나타내고 신뢰도가 낮 으면 물체가 없거나 물체가 있어도 위치 편차가 크다는 것을 나타냅니다.

논의하다

① 그림은 최대 49 개의 물체를 감지 할 수 있으며,
각 30 차원 벡터는 물체 분류 확률이 하나 인 그룹 (20)을 가지며 하나의 물체 만 예측할 수 있습니다. 따라서 7 * 7 = 49 30 차원 벡터의 출력은 최대 49 개의 객체를 나타냅니다.

② 총 49 * 2 = 98 개의 후보 영역 (바운딩 박스)이 있으며,
각 30 차원 벡터에는 2 세트의 바운딩 박스가 있으므로 총 98 개의 후보 영역이 있습니다.

③ YOLO의 바운딩 박스는 Faster RCNN의 Anchor
Faster RCNN 및 기타 알고리즘 이 아닙니다 .N 앵커 (사전 박스, 프리셋 위치가있는 바운딩 박스)는 각 그리드에 수동으로 설정되며 각 앵커는 크기와 가로 세로 비율이 다릅니다. YOLO의 경계 상자는 그리드에있는 두 개의 앵커처럼 보이지만 그렇지 않습니다. YOLO는 두 경계 상자의 크기와 모양을 미리 설정하지 않으며 각 경계 상자에 대한 개체 예측을 출력하지도 않습니다. 개체에 대해 두 개의 경계 상자를 예측하고 상대적으로 정확한 경계 상자를 선택하는 것입니다.

또한 책임은 논문에서 자주 언급됩니다. 예 : 우리 시스템은 입력 이미지를 S * S 그리드로 분할합니다. 물체의 중심이 그리드 셀에 속하면 해당 그리드 셀이 해당 물체를 감지합니다. (우리 시스템은 입력 이미지를 S * S 그리드로 분할합니다. 그리드. 그리드. 객체의 중심이 그리드 셀에 속하면 그리드 셀이 객체를 감지합니다.)이 응답은 약간 혼란 스럽습니다. 예측에 대해 "책임감"이란 무엇을 의미합니까? 실제로 특별한 것은 없습니다. 즉, 하나의 그리드로만 객체를 예측하므로 동일한 객체를 예측하기 위해 여러 그리드를 사용하지 마십시오. 보다 구체적으로 학습 샘플을 설정할 때 샘플의 각 Object는 하나의 그리드에만 속하고 하나의 그리드에만 속합니다. Object가 여러 그리드에 걸쳐 있더라도 그중 하나만 지정됩니다. 구체적으로, 중심 위치가 속하는 그리드 인 Object의 경계 상자의 중심 위치를 계산하고, 그리드에 해당하는 출력 벡터에서 객체의 클래스 확률은 1 (그리드가 객체 예측을 담당 함), 다른 모든 그리드는 객체에 대한 것입니다.의 예측 확률은 0 (객체 예측에 대한 책임 없음)으로 설정됩니다. 즉, 값이 30 차원 벡터에 할당됩니다 .

또한 : YOLO는 그리드 셀당 여러 개의 경계 상자를 예측합니다. 훈련시에는 각 개체에 대해 하나의 경계 상자 예측 자만 담당합니다. (YOLO는 그리드 셀당 여러 경계 상자를 예측합니다. 훈련시에는 하나의 경계 상자 예측 자만 하나의 경계 상자 예측자가 각 객체를 담당합니다.) 마찬가지로 그리드에 두 개의 경계 상자가 생성되지만 예측 결과로 그중 하나를 선택하고 다른 하나는 무시 합니다. 학습 샘플 구성의 다음 부분이 더 명확하게 표시됩니다.

④ 그리드의 수와 바운딩 박스의 수를 조정할 수 있습니다
.7x7 그리드, 각 그리드에는 2 개의 바운딩 박스가 있으며 커버리지 입도는 448 * 448 입력 이미지에 대해 약간 거칠습니다. 더 많은 그리드와 더 많은 경계 상자를 설정할 수도 있습니다. 그리드 수가 SxS이고 각 그리드가 B 프레임을 생성하며 네트워크가 C 개의 다른 객체 식별을 지원한다고 가정합니다. 이때 출력 벡터 길이는 다음과 같습니다.
여기에 사진 설명 삽입
전체 출력 텐서는 다음과 같습니다
여기에 사진 설명 삽입
. YOLO가 선택한 매개 변수는 7x7 그리드, 2 개의 경계 상자, 20 가지 개체이므로 출력 벡터 길이 = 20 + 2 * (4 + 1) = 30. 전체 출력 텐서는 7x7x30입니다.

그리드 및 경계 상자 설정이 상대적으로 드물기 때문에 학습 후이 버전의 YOLO의 예측 정확도와 재현율이 그다지 만족스럽지 않으며 후속 v2 및 v3 버전이 개선됩니다. 물론 그 속도는 실시간 처리의 요구 사항을 충족 할 수 있기 때문에 여전히 업계에 매우 매력적입니다.

훈련 샘플 (라벨) 구성

지도 학습으로서 모델이 학습 샘플에서 학습하기 전에 학습 샘플을 구성해야합니다.
여기에 사진 설명 삽입
입력 그림의 경우 해당 출력 7x7x30 텐서 (즉,지도 학습에서 일반적으로 참조되는 레이블 y 또는 레이블 )에 어떤 데이터를 채워야하는지.

30 차원 샘플 라벨 벡터의 채우기를 구체적으로 살펴보십시오.

① 20 개의 객체 분류 확률
입력 이미지의 각 객체에 대해 먼저 중심점을 찾습니다. 예를 들어, 위 그림의 자전거는 노란색 점의 위치에 중심점이 있고 중앙 점이 노란색 그리드에 속하므로이 노란색 그리드 에 해당하는 30 차원 벡터에서 자전거 확률은 1입니다. , 다른 물체의 확률은 0입니다. 다른 48 개 그리드의 모든 30 차원 벡터에서 자전거의 확률은 0 입니다. 이것은 소위 "중심점이있는 격자가 물체를 예측하는 역할을한다"입니다. 개와 자동차의 분류 확률은 같은 방식으로 채워집니다.

② 두 개의 경계 상자의 위치
학습 샘플의 경계 상자의 위치는 객체 의 실제 경계 상자에 채워야 하지만 하나의 객체는 두 개의 경계 상자에 해당하는데 어느 하나를 채워야합니까? 위에서 설명한 것처럼 네트워크에서 출력 한 경계 상자와 객체의 실제 경계 상자의 IOU를 기반 으로 선택해야 하므로 훈련 과정에서 채울 경계 상자를 동적으로 결정해야합니다. 아래 ③ 번 항목을 참조하십시오.

③ 두 경계 상자의 신뢰도
위에서 설명한 신뢰 공식을
여기에 사진 설명 삽입
여기에 사진 설명 삽입
직접 계산할 수 있는데, 이는 네트워크가 출력 한 두 경계 상자와 객체의 실제 경계 상자로 IOU를 계산하는 것입니다. 그런 다음 두 경계 상자의 IOU를 살펴 봅니다. 더 큰 (객체의 실제 경계 상자에 더 가깝 음) 경계 상자는 객체의 존재 여부, 즉 출력
여기에 사진 설명 삽입
경계 상자와 위치 를 예측합니다 . 개체의 실제 바운딩 박스도 그냥 채우거나 바운딩 박스에 넣습니다 (뒤에 쓰기 전). 예측을 담당하지 않는 또 다른 경계 상자입니다.
여기에 사진 설명 삽입
일반적으로 객체의 실제 경계 상자에 가장 가까운 경계 상자, 예를 들어
여기에 사진 설명 삽입
그리드의 다른 경계 상자 (
여기에 사진 설명 삽입
예 : 위 그림에서 자전거의 중심점) 3 열 그리드에서 출력 텐서에 4 개의 행과 3 개의 열이있는 30 차원 벡터가 다음 그림에 표시됩니다.
여기에 사진 설명 삽입
훈련 샘플로 구성된 30 차원 벡터

성인용으로 말하면 4 열 3 열의 그리드 위치에 자전거가 있으며, 중심점은이 그리드에 있고 위치 경계는 경계 상자 1 에 채워진 자전거실제 경계 입니다 .

자전거의 위치는 그림의 경계 상자 1에 배치되지만 실제로는 훈련 과정 중 네트워크 출력 후 두 경계 상자의 IOU를 자전거 의 실제 위치와 비교합니다 . bike (실제 경계 상자)는 상대적으로 큰 IOU The bounding box (그림에서 경계 box1로 가정)에 배치되고 경계 상자 의 신뢰도는 1로 설정됩니다. ( 여기서 "그리고 경계 상자의 신뢰도는 1로 설정 됨"은 "경계 상자의 Pr (객체)는 1로 설정 됨"이어야합니다. )

손실 기능

손실은 네트워크의 실제 출력 값과 샘플 레이블 값 사이의 편차입니다.
여기에 사진 설명 삽입
샘플 레이블 및 실제 네트워크 출력

YOLO가 제공하는 손실 함수는 다음과 같습니다.
여기에 사진 설명 삽입손실 함수 설계 :
여기에 사진 설명 삽입

여기에 사진 설명 삽입
일반적으로 네트워크 출력과 샘플 레이블의 내용 사이의 제곱 오차의 합이 샘플의 전체 오차로 사용됩니다.
손실 함수의 여러 항목은 출력 30 차원 벡터의 내용에 해당합니다.
여기에 사진 설명 삽입여기에 사진 설명 삽입

훈련

YOLO는 먼저 ImageNet 데이터 세트를 사용하여 컨볼 루션 네트워크의 처음 20 개 계층을 사전 훈련 한 다음 완전한 네트워크를 사용하여 PASCAL VOC 데이터 세트에서 객체 인식 및 위치 지정을 훈련하고 예측합니다. YOLO의 네트워크 구조는 아래 그림에 나와 있습니다.
여기에 사진 설명 삽입
YOLO의 마지막 계층은 선형 활성화 함수를 사용하고 다른 계층은 Leaky ReLU입니다. 과적 합을 방지하기 위해 훈련에서 탈락 및 데이터 증가가 사용됩니다. 자세한 내용은 원본 논문을 참조하십시오.

예측 (추론)

훈련 된 YOLO 네트워크, 그림 입력은 그림의 모든 격자에 포함 된 개체 (확률)와 가능한 2 개의 위치 (경계 상자) 및 개체의 신뢰성 (신뢰도)을 나타내는 7x7x30 텐서 (텐서)를 출력합니다.
가장 가능성이 높은 물체와 위치를 추출하기 위해 YOLO는 NMS (Non-maximal suppression) 알고리즘을 사용합니다.

NMS (비 최대 억제)

NMS 방식은 복잡하지 않고 가장 높은 점수를 출력으로 선택하고 중복 된 출력을 제거하고 모든 후보자가 처리 될 때까지이 과정을 반복하는 것이 핵심 아이디어입니다.

YOLO의 NMS 계산 방법은 다음과 같습니다.
네트워크에 의한 7x7x30 텐서 출력, 각 그리드에서 j 번째 경계 상자에있는 객체 Ci의 점수 : j 번째 경계 상자
여기에 사진 설명 삽입
에 객체 Ci가 존재할 가능성을 나타냅니다.

각 그리드에는 20 개 개체의 확률 * 2 개의 경계 상자에 대한 신뢰도, 총 40 개의 점수 (후보 개체)가 있습니다. 49 개의 그리드에는 총 1960 개의 포인트가 있습니다. Andrew Ng는 각 개체에 대해 NMS를 개별적으로 권장하고 각 개체에는 1960 / 20 = 98 점수가 있습니다.

NMS 단계는 다음과 같습니다.
1) 점수 임계 값을 설정하고이 임계 값 미만의 후보를 제외합니다 (점수를 0으로 설정).
2) 각 개체 범주
 통과 2.1) 개체의 98 점 통과
  2.1.1) 찾기 가장 큰
  스코어 와 바운딩 박스는 출력리스트에 추가 된 2.1.1 상기와 출력 오브젝트의 바운딩 박스의 IOU를 계산, 스코어 0이 아닌 각 후보 객체 2.1.2)
  받는 따름) 2.1.3 사전 설정된 IOU 임계 값, 임계 값 (높은 중첩)보다 높은 모든 후보가 제외됩니다 (점수를 0으로 설정)
  2.1.4) 모든 경계 상자가 출력 목록에 있거나 점수 = 0이면 개체 범주 NMS가 완료됩니다. 2 단계로 돌아가 다음 개체를 처리합니다.
3) 출력 목록이 예측 개체입니다.

요약

YOLO는 속도로 유명하며 처리 속도는 45fps에 달하며 빠른 버전 (더 작은 네트워크)은 155fps에 달할 수도 있습니다. 이는 인식과 포지셔닝을 결합한 네트워크 설계 때문이며,이 통합 설계는 또한 매우 간단한 종단 간 훈련 및 예측을 가능하게합니다.
단점은 작은 물체의 탐지 효과가 그다지 좋지 않다는 것입니다 (특히 일부 작은 물체가 함께 클러스터 됨), 경계의 예측 정확도가 그리 높지 않으며 전체 예측 정확도가 Fast RCNN보다 약간 낮습니다. 주된 이유는 그리드 설정이 상대적으로 희박하고 각 그리드는 두 개의 경계 만 예측하고 풀링 레이어는 위치에 영향을 미치는 세부 정보를 잃게되기 때문입니다. 손실 기능으로 인해 위치 오류가 감지 효과에 영향을 미치는 주요 원인입니다. 특히 크고 작은 물체의 취급을 강화해야합니다.

참조 해 주셔서 감사합니다 :
https://blog.csdn.net/c20081052/article/details/80236015

추천

출처blog.csdn.net/W1995S/article/details/112787013