논문 내용과 별개로 Mask R-CNN의 특성상 추가적인 지식들이 필요해서 포스팅을 하려고 한다.
솔직히 RNN, CNN 개념이랑 과정 등등 아는 사람들만 Mask R-CNN을 공부하겠지,,,?
RNN,CNN에 대해선 언급하지 않겠다. 그래도 공부하다보면 꽤 흥미롭다. 어려울뿐,,,,,,,,,,,,,ㅋ
Mask R-CNN
: 2017년 KaimingHe에 의해 제안된 알고리즘으로서 이미지 분류, 물체 검출을 동시에 할 수 있도록 고안되었으며 현재에도 많이 사용되고 있다.
영상 처리 분야에는 크게 4가지로, 이미지 분류(Image Classfication), 이미지 검출(Image Recognition), 물체 검출(Object Detection), 이미지 분할(Instance Segmentation)이 있다.
Mask R-CNN = Object Detection + Instance Segmentaion |
- Mask R-CNN에 사용된 알고리즘 순서 : 2013년 R-CNN 알고리즘< 2015년 Fast R-CNN 알고리즘< 2016년 Faster R-CNN 알고리즘
- Mask R-CNN 알고리즘 진행 과정 : Backbone -> RPN -> RoI Align -> Detection
1. Backbone
입력이 처음 들어와서 출력에 관련된 모듈에 처리된 입력을 보내주는 역할이다.
Resnet 101 알고리즘을 이용하여 이미지로부터 특성을 추출한 Feature Map을 생성하고 동일한 규격으로 반환해준다.
https://blog.naver.com/keeping816/221681396990
2. RPN(Region Proposal Network)
feature map을 입력으로 받고, n*n 크기의 filter로 한번 더 convolution 과정을 거친다. 이 과정에서 각 anchor마다 Region Proposal을 구한다. RP(Region Proposal)에 한 번 더 convolution 과정을 거친 결과 class와 coordinate를 얻을 수 있다.
RPN은 Sliding window방식을 따르는 네트워크로 Backbone에 의해서 생성된 Feature Map을 스캔하는데 모든 영역을 스캔하지 않고 랜덤으로 생성된 구역(Anchor)을 스캔하고 Object가 존재하는지 분류한다. 만약 물체가 있다면 구역의 중앙에 오도록 조정해 주고 이 구역을 RoI로 설정한다.
https://blog.naver.com/jaeyoon_95/221786102497
3. RoI(Region of Interest Align)
recognition 이나 identification 문제에는 전통적인 머신러닝 기법이나 템플릿 매칭을 쓴다.
연산량을 확 줄여주기 위해서는 후보군(Region of Interest : RoI)를 잡아주는 것이 필요하다.
앞에서 물체가 검출된 구역이 RoI로 설정되었고 이 단계에서는 이미지 분류와 네모 박스, 마스크 생성을 위해 동일한 사이즈로 변경해준다.
4. Detection
RoI Align 단계를 통해 얻어진 동일한 사이즈를 이용하여 클래스를 분류하고 네모 박스의 위치를 재조정한다. RoI 분류를 함으로써 각 픽셀의 클래스를 분류할 수 있다. 이 정보를 바탕으로 물체에 해당하는 픽셀의 마스크를 생성해 낸다.
Object Detection
: 물체 검출 알고리즘은 여러 물체에 대해 어떤 물체인지 분류하는 이미지 분류와 그 물체가 어디 있는지 네모 박스(Bounding Box)를 통해 위치 정보를 나타내는 위치 문제 두 가지를 해내는 알고리즘이다.
Mask R-CNN 알고리즘에서 물체 검출 알고리즘으로 사용된 알고리즘은 Faster R-CNN 알고리즘이다.
Instance Segmentaion
: 이미지 분할 알고리즘은 단순히 사진을 보고 분류하는 것에 그치지 않고 그 장면을 이해하는 알고리즘이다. 이 알고리즘의 목적은 사진에 있는 모든 픽셀을 해당하는 클래스로 분류하는 것이다. 여기서 주의할 점은 같은 클래스에 있는 것은 따로 구별하지 않는다는 것이다. 예를 들어, '인간'이라는 클래스 안에 사람1, 사람2가 있더라도 모두 '인간'으로만 구별하게 된다.
Mask R-CNN 알고리즘에서 이미지 분할 알고리즘으로 사용된 알고리즘은 FCN(Fully Convolutional Network) 알고리즘이다.
이 알고리즘이 제안되기 전에는 AlexNet, VGGNet 등 이미지 분류용 CNN 알고리즘을 이용하여 분류, 예측하였다. 이미지에 있는 물체가 어떤 클래스에 속하는지는 예측해낼 수 있지만, 그 물체가 어디에 존재하는지는 예측해낼 수 없다는 것이 분류용 CNN 알고리즘의 단점이다.
FCN 개발자들은 위치정보가 소실되지 않게 하기 위해, 어떠한 크기의 입력이미지도 허용하기 위해서 네트워크의 마지막 레이어를 컨볼루션 레이어로 사용하여 위치정보 손실 문제를 해결했다.
++추가로 참고할 것들
https://towardsdatascience.com/instance-segmentation-with-mask-r-cnn-6e5c4132030b
http://incredible.ai/deep-learning/2018/03/17/Faster-R-CNN/
https://blog.naver.com/handuelly/221840396866
https://m.blog.naver.com/tommybee/221662387296
https://blog.naver.com/kyy0810/221426658926
https://blog.naver.com/rosijin/221599959953
'Stay Hungry Stay Foolish > 논문 정리' 카테고리의 다른 글
[논문 정리] Memory Enhanced Global-Local Aggregation for Video Object Detection (0) | 2020.12.07 |
---|---|
[논문 정리] Object Detection in the Context of Mobile Augmented Reality (2) | 2020.11.09 |
[논문 정리] Understanding the difficulty of training deep feedforward neural networks (0) | 2020.09.02 |
[논문 정리] Mask R-CNN (1) (0) | 2020.09.02 |
[논문 정리] Fixup 초기화 방법 : norm없는 잔차 학습 (2) | 2020.09.01 |
댓글