BIG_PY
home
Introduce
home

6장 합성곱 신경망II

질문

황현수 공간 피라미드 풀링은 원본 이미지의 특징이 훼손 되지 않는 큰 장점이 있는데 모든 CNN 구조에 써도 되는지, 한계점은 없는지 궁금합니다. https://yeomko.tistory.com/14
Image Classification이나 Object Detection과 같은 여러 테스크들에 일반적으로 적용할 수 있다는 장점이 있음
한계점
1.
end-to-end 방식이 아니라 학습에 여러 단계가 필요하다. (fine-tuning, SVM training, Bounding Box Regression)
2.
여전히 최종 클래시피케이션은 binary SVM, Region Proposal은 Selective Search를 이용한다. → Region Proposal 과정이 실제 객체 탐색 CNN과 별도로 이루어지기 때문에 선택적 탐색을 쓰면 end to end가 불가능하고 실시간 적용에도 어려움이 있다고 함
3.
fine tuning 시에 SPP를 거치기 이전의 Conv 레이어들을 학습 시키지 못한다. 단지 그 뒤에 Fully Connnected Layer만 학습시킨다. → Fast R-CNN에서 대폭 개선되었다고 함
(fine tuning: 기존에 학습되어져 있는 모델을 기반으로 아키텍쳐를 새로운 목적(나의 이미지 데이터에 맞게)변형하고 이미 학습된 모델 Weights로 부터 학습을 업데이트하는 방법)
박내은 (p. 348) Faster R-CNN 왜 특성 맵이 w*h면 앵커가 w*h*k개인지 모르겠습니다. https://velog.io/@cha-suyeon/딥러닝-Object-Detection-Anchor-Boxes-NMSNon-Max-Suppression
RPN은 이미지에 존재하는 객체들의 크기와 비율이 다양하기 때문에 고정된 N x N 크기의 입력만으로 다양한 크기와 비율의 이미지를 수용하기 어려운 단점이 있음
이러한 단점을 보완하기 위해 여러 크기와 비율의 레퍼런스 박스 k개를 미리 정의하고 각각의 슬라이딩 윈도우 위치마다 박스 k개를 출력하도록 설계하는데, 이 방식을 앵커(anchor)라고 함
즉, 후보 영역 추출 네트워크의 출력 값은 모든 앵커 위치에 대해 각각 객체와 배경을 판단하는 2k개의 분류에 대한 출력과 x, y, w, h 위치 보정 값을 위한 4k개의 회귀 출력을 갖음
특성 맵 크기가 w * h라면 하나의 특성 맵에 앵커가 총 w * h * k개 존재함

6장 합성곱 신경망 2

6.2 객체 인식을 위한 신경망

객체 인식은 이미지나 영상 내에 있는 개체를 식별하는 컴퓨터 비전 기술
즉, 객체 인식이란 이미지나 영상 내에 있는 여러 객체에 대해 각 객체가 무엇인지 분류하는 문제와 그 객체 위치가 어디인지 박스로 나타내는 위치 검출 문제를 다루는 분야
객체 인식은 자율 주행 자동차, CCTV, 무인 점포 등에서 활용됨
딥러닝을 이용한 객체 인식 알고리즘은 크게 1단계 객체 인식과 2단계 객체 인식으로 나눌 수 있음
1단계 객체 인식
분류와 위치 검출 두 가지를 동시에 행하는 방법
비교적 빠르지만 정확도가 낮음
YOLO계열과 SSD계열 등이 포함
2단계 객체 인식
분류와 위치 검출 두 가지를 순차적으로 행하는 방법
비교적 느리지만 정확도가 높음
CNN을 처음으로 적용시킨 R-CNN 계열이 대표적
R-CNN
이전 객체 인식 알고리즘들은 슬라이딩 윈도우 방식(일정한 크기를 가지는 윈도우를 가지고 이미지의 모든 영역을 탐색하며 객체를 검출해내는 방식)
비효율적이기 때문에 현재는 선택적 탐색 알고리즘을 적용한 후보 영역(영상/이미지에서 객체가 있을 법한 영역을 의미)을 많이 사용
선택적 탐색 : 객체 인식이나 검출을 위한 가능한 후보 영역을 알아내는 방법으로, 분할 방식을 이용하여 시드를 정하고 그 시드에 대한 완전 탐색을 적용함
R-CNN은 이미지 분류를 수행하는 CNN과 이미지에서 객체가 있을 만한 영역을 제안해 주는 후보 영역 알고리즘을 결합한 알고리즘
R-CNN은 성능이 뛰어나기는 하지만 아래와 같은 단점으로 크게 발전하지는 못함 → 해결을 위해 Fast R-CNN이 생김
1.
앞서 언급한 선택적 탐색 세 단계의 복잡한 학습 과정
2.
긴 학습 시간과 대용량 저장 공간
3.
객체 검출 속도 문제
공간 피라미드 풀링(SPP)
기존 CNN구조들은 모두 완전연결층을 위해 입력 이미지를 고정해야 했으며 따라서 신경망을 통과시키려면 이미지를 고정된 크기로 자르거나 비율을 조정해야 했음
그러나 물체의 일부분이 잘리거나 본래의 생김새와 달라지는 문제점이 있어 이를 해결하고자 공간 피라미드 풀링을 도입함
공간 피라미드 풀링 : 입력 이미지의 크기에 관계없이 합성곱층을 통과시키고, 완전연결층에 전달되기 전에 특성 맵들을 동일한 크기로 조절해 주는 풀링층을 적용하는 기법
입력 이미지의 크기를 조절하지 않고 합성곱층을 통과시키기 때문에 원본 이미지의 특징이 훼손되지 않는 특성 맵을 얻을 수 있으며, 이미지 분류나 객체 인식 같은 여러 작업에 적용할 수 있다는 장점이 있음
Fast R-CNN
R-CNN은 바운딩 박스마다 CNN을 돌리고, 분류를 위한 긴 학습 시간이 문제였으나 Fast R-CNN은 해당 속도 문제를 개선하고자 RoI 풀링을 도입함
RoI 풀링 : 크기가 다른 특성 맵의 영역마다 스트라이드를 다르게 최대 풀링을 적용하여 결괏값 크기를 동일하게 맞추는 방법
즉, 선택적 탐색에서 찾은 바운딩 박스 정보가 CNN을 통과하면서 유지되도록 하고 최종 CNN 특성 맵은 풀링을 적용하여 완전연결층을 통과하도록 크기를 조정함 → 바운딩 박스마다 CNN 돌리는 시간 단축 가능
Faster R-CNN
더욱 빠른 객체 인식을 수행하기 위한 네트워크로, 기존 Fast R-CNN 속도의 걸림돌이었던 후보 영역 생성을 CNN 내부 네트워크에서 진행할 수 있도록 설계함
즉, Faster R-CNN은 기존 Fast R-CNN에 후보 영역 추출 네트워크(RPN)를 추가한 것이 핵심
Faster R-CNN에서는 외부의 느린 선택적 탐색(CPU로 계산) 내부의 빠른 RPN(GPU로 계산)을 사용함
RPN은 그림처럼 마지막 합성곱층 다음에 위치하고, 그 뒤에 Fast R-CNN과 마찬가지로 RoI풀링과 분류기, 바운딩 박스 회귀가 위치함
바운딩 박스 회귀: 바운딩 박스가 이미지의 객체를 정확히 포작하여 포함시킬 수 있도록 조정해 주는 역할을 함
후보 영역 추출 네트워크는 특성 맵 N x N 크기의 작은 윈도우 영역을 입력으로 받고, 해당 영역에 객체의 존재 유무 판단을 위해 이진 분류를 수행하는 작은 네트워크를 생성함
R-CNN, Fast R-CNN에서 사용되었던 바운딩 박스 회귀 또한 위치 보정(좌표점 추론)을 위해 추가함
또한, 하나의 특성 맵에서 모든 영역에 대한 객체의 존재 유무를 확인하기 위해서는 슬라이딩 윈도우 방식으로 앞서 설계한 작은 윈도우 영역(N x N 크기)을 이용하여 객체를 탐색함
후보 영역 추출 네트워크는 이미지에 존재하는 객체들의 크기와 비율이 다양하기 때문에 고정된 N x N 크기의 입력만으로 다양한 크기와 비율의 이미지를 수용하기 어려운 단점이 있음
이러한 단점을 보완하기 위해 여러 크기와 비율의 레퍼런스 박스 k개를 미리 정의하고 각각의 슬라이딩 윈도우 위치마다 박스 k개를 출력하도록 설계하는데, 이 방식을 앵커(anchor)라고 함
즉, 후보 영역 추출 네트워크의 출력 값은 모든 앵커 위치에 대해 각각 객체와 배경을 판단하는 2k개의 분류에 대한 출력과 x, y, w, h 위치 보정 값을 위한 4k개의 회귀 출력을 갖음
예를 들어 특성 맵 크기가 w * h라면 하나의 특성 맵에 앵커가 총 w * h * k개 존재함