중화사전망 - 신화사전 - 탐지 논문 검토(1): RCNN에서 Mask-RCNN까지

탐지 논문 검토(1): RCNN에서 Mask-RCNN까지

나는 표적 탐지의 방향에 대해 특별히 잘 알지는 못한다. 이 글은 표적 탐지에 관한 네 가지 논문(RCNN, fast-RCNN, fast-RCNN, Mask-RCNN)의 메모와 학습 경험을 기록한 것이다.

R-CNN은 지역 기반을 의미합니다. 주요 아이디어는 이미지를 기반으로 여러 지역을 추출한 다음 각 지역을 CNN에 입력하여 특징을 추출하는 것입니다. 따라서 RCNN은 영역 제안과 특징 추출의 두 가지 주요 부분으로 나눌 수 있습니다. 추출된 특징은 분류를 위해 모든 분류기에 입력될 수 있습니다.

모델의 흐름도는 다음과 같습니다.

훈련 중에는 먼저 이미 훈련된 CNN 네트워크를 특징 추출기로 사용하지만 사전 훈련은 분류에 속하므로 데이터 세트이므로 탐지에 적용하기 전에 미세 조정이 수행됩니다. 즉, ImageNet 데이터 세트로 훈련된 네트워크를 새로운 작업(탐지)과 새로운 데이터 세트(영역)에 적용하기 위해 저자는 원본 CNN의 마지막 1000개 카테고리의 fc 레이어를 감지된 개체의 범주 수를 나타내는 레이어입니다. 그런 다음 모든 지역에 대해 Ground Truth와의 중복률이 0.5보다 크면 포지티브 클래스로 간주됩니다.

분류기 훈련에서 저자는 포지티브 클래스와 네거티브 클래스를 구별하기 위해 IoU의 크기를 선택하는 것이 매우 중요하다는 것을 발견했습니다. 그리고 각 카테고리에 대해 분류자가 훈련됩니다.

분류기를 사용하여 각 지역 제안을 점수화하고 평가한 후 저자는 회귀기를 사용하여 결과로 새 상자를 예측합니다. 이 회귀분석기가 사용하는 특징은 CNN에서 추출한 특징입니다. 회귀분석기의 훈련에서 입력은 Region Proposal과 Ground Truth이며, 이 변환을 통해 Region Proposal이 Ground Truth에 가까워질 수 있도록 변환을 학습하는 것이 목표입니다. 동시에 우리는 이 변환에 스케일 불변성이 있기를 바랍니다. 즉, 스케일이 변경되더라도 변환은 변경되지 않는다는 의미입니다.

아래 그림에 표시된 것처럼 각 회귀 분석기는 일련의 매개변수를 학습합니다. 특성 입력은 풀 5의 특성 출력이고 피팅 목표는 입니다.

Fast-RCNN이 해결하는 주요 문제는 RCNN에서 각 지역 제안에 대한 특징을 추출하는 것인데, 이로 인해 많은 중복 계산이 발생하므로 먼저 이미지에서 특징을 추출한 다음 이를 기반으로 할 수 있습니다. 영역 제안을 해당 특징별로 나누어 해당 지역의 특징(매핑 관계)을 구한다.

이렇게 하면 가장 빠른 컴퓨팅 속도를 누릴 수 있지만, SPPnet과 달리 SPPnet은 이미지의 해당 특징을 얻은 후 이미지의 특징 중에서 해당 부분을 제안하고 공간 피라미드를 사용합니다. 풀링은 아래와 같습니다.

RoI 풀링 방법은 공간 피라미드 풀링과 유사하게 매우 간단합니다. 제안 부분은 컨볼루션 레이어(RoI라고 함)에서 출력되는 특징에 해당합니다. pooling feature는 관심영역, 즉 우리가 관심을 갖는 영역)을 블록으로 나누고, 각 블록별로 최대값을 계산하여 최종적으로 특징맵을 얻는 것이다. 이는 공간 피라미드 풀링의 일부일 뿐임을 알 수 있습니다.

그런데 SPP-net의 공간피라미드도 차별화가 가능한데, 단점은 무엇일까요? 각 RoI가 서로 다른 이미지에서 나올 수 있기 때문에(R-CNN 및 SPPnet의 학습 전략은 일괄적으로 서로 다른 이미지에서 제안 영역을 선택하는 것임) SPPNets의 학습은 매우 비효율적입니다. SPPnet의 훈련에서 각 RoI의 수용 필드는 매우 크며 이는 아마도 원본 이미지의 전체 이미지에 해당할 것입니다. 따라서 획득된 특징은 거의 전체 이미지에 해당하므로 입력 이미지가 매우 작습니다.

효율성을 높이기 위해 Fast-RCNN은 먼저 이미지를 선택한 후 각 이미지에서 RoI를 선택하는데, 이는 각 이미지에서 하나의 RoI를 추출하는 것보다 두 배 효율적입니다.

분류와 상자 회귀를 결합하기 위해 저자는 공동 훈련에 다중 작업 손실을 사용합니다. 구체적으로 분류 손실과 상자 회귀 손실을 결합합니다. 네트워크의 설계는 매우 간단합니다. 즉, RoI에서 얻은 기능을 여러 FC 레이어에 연결한 다음 이를 다른 출력 레이어에 연결하는 것입니다. 분류 부분에 해당하는 특징을 소프트맥스 출력으로 연결하여 분류합니다. 상자 회귀 부분의 경우 4차원 특징을 출력하는 출력 레이어를 연결한 후 역전파를 위해 별도로 손실을 계산합니다. 손실 공식은 다음과 같습니다.

회귀 대상은 이전 R-CNN 부분을 참조할 수 있습니다.

노트

빠른 것보다 빠른 이유는 무엇입니까? 주된 이유는 본 논문에서 이전의 선택적 검색을 대체할 새로운 레이어인 RPN(Region Proposal Networks)이 제안되었기 때문입니다. 이 레이어는 GPU에서 실행되어 속도를 높일 수도 있습니다.

RPN의 목적:

영역 제안을 수행할 수 있도록 저자는 작은 네트워크를 사용하여 기본 컨볼루셔널 레이어에서 출력되는 기능을 슬라이드합니다. 이 네트워크의 입력 후 고정 길이 특징 벡터에 매핑(콘볼루션 사용)된 다음 두 개의 병렬 fc 레이어(콘볼루션 레이어로 대체)에 연결됩니다. 이 두 fc 레이어 중 하나는 box-regressoin입니다. 다른 하나는 상자 분류입니다.

아래와 같이:

각 슬라이딩 윈도우에서 (n의 작업은 인스턴스 분할을 수행하는 것이므로 참조할 수 있습니다. 따라서 각 픽셀을 분류해야 합니다.

더 빠른 R-CNN을 사용하면 다르게 Faster R-CNN은 각 후보 상자에 대해 두 개의 출력을 생성합니다. 하나는 범주이고 다른 하나는 경계 상자의 오프셋입니다. R-CNN은 객체의 마스크로 새 출력을 추가합니다. PS 버전.

Faster R-CNN과 유사하게 Mask R-CNN도 지역 제안에 RPN을 사용하지만 그 이후에는 각 RoI에 대해 마스크 r-cnn도 이진화를 출력합니다. /p>

카테고리 및 상자 회귀와 달리 출력은 벡터일 수 있으며 마스크는 특정 공간 정보를 유지해야 합니다. 따라서 작성자는 FCN을 사용하여 각 RoI에서 마스크를 예측합니다. > RoI는 픽셀 수준의 예측 문제이기 때문에 적어도 픽셀 수준에서는 특징 추출 중에 공간 정보를 유지할 수 있어야 합니다. 따라서 기존의 최대값 방식은 부적절합니다. 풀링은 두 가지 정량화 과정을 거쳤습니다.

첫 번째: ROI 제안에서 기능 맵으로의 매핑 과정

두 번째: 기능 맵을 7*7 빈으로 나눕니다.

이를 위해 저자는 위에서 언급한 양자화 과정을 피하기 위해 아래와 같이 RoIAlign을 사용합니다. > /xiamentingtao/article/details/78598511을 참고하세요.

저자는 기본 특징 추출 네트워크로 ResNet을 사용합니다.

예측 카테고리인 회귀 상자의 경우 마스크 네트워크는 다음을 사용합니다. 구조:

이 논문을 전체적으로 읽은 후에는 구현 세부 사항을 모두 파악하지는 못했지만 일반적으로 알고리즘의 아이디어를 이해할 수 있습니다. 시작점은 다음과 같습니다. 그럼에도 불구하고 특징 추출에 있어서 심층 신경망의 탁월한 능력으로 인해 많은 전문가들이 이 능력을 탐지 문제에 적용하려고 노력하고 있습니다. 단순히 특징 추출에만 사용되는 R-CNN부터 속도를 높이고 계산을 줄이기 위한 Fast R-CNN, 영역 제안을 전체 모델에 통합하고 GPU 가속을 사용하는 RPN, 즉 Faster R-CNN까지. 그런 다음 인스턴스 분할 작업에 적용되도록 설계된 RoIAlign 및 마스크를 살펴보세요. 경계 상자 회귀, 풀링 레이어 설계, 훈련 방법 선택, 손실 설계 및 기타 세부 사항을 포함하여 모두 마스터의 사고와 창의성을 반영합니다.

아마도 "받아들인" 우리의 눈에는 이러한 방법이 모두 "자연스럽고" 영리하고 사용하기 쉬운 것처럼 보이지만 그 뒤에 숨겨진 선택과 이러한 선택에 대한 생각은 더 중요합니다. 우리의 관심을 끌 가치가 있습니다.

그리고 각각의 문제에 어떻게 합리적인 솔루션을 설계할 것인지, 그리고 솔루션의 효율성과 다양성이 우리가 열심히 노력해야 할 방향입니다.