Mask R-CNN
Mask R-CNN
- Link : https://arxiv.org/abs/1703.06870
Object Detection vs Semantic Segmentation vs Instance Segmentation
Object Detection
- B(Bounding)Box + Classification : can separate, cannot segment
- Object Detection์ object๊ฐ ์๋ ๊ณณ์ BBox(Boundar Box)๋ก ํ์ํ๋ฉฐ, ๊ฐ ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ณํ๋ค. ๋ํ์ ์ธ ๋ชจ๋ธ๋ก๋ Faster R-CNN์ด ์๋ค.
Semantic Segmentation
- Segmentation + Classification : cannot separate, can segment
- Semantic segmentation์ ๋ชจ๋ ํฝ์ ์ ๋ํด ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ ํ๋ค. ๋จ, ์ด๋ ๊ฐ๋ณ ๊ฐ์ฒด๋ ๊ตฌ๋ถํ์ง ์๋๋ค. ์๋ฅผ ๋ค์ด ๊ณ ์์ด ๋๋ง๋ฆฌ๊ฐ ์๋ ์ฌ์ง์์ ๋ ๊ณ ์์ด์ ํฝ์ ์ ๋ชจ๋ โ๊ณ ์์ดโ๋ผ๋ ์นดํ ๊ณ ๋ฆฌ๋ก ๋ถ๋ฅ๋๋ค.
Object Detection + Semantic Segmentation โ Object Segmentation
- FCN on BBOX!
- Object Segmentation์ Object Detection์์ ๊ฐ๋ฅํ separation๊ณผ Semantic Segmentation์์ ๊ฐ๋ฅํ segmentation์ ํฉ์น ๊ฒ์ผ๋ก, ํฝ์ ๋จ์๋ก ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถํ๋ฉฐ, ๊ฐ๋ณ ๊ฐ์ฒด ๋ํ ๊ตฌ๋ถํ๋ค.
FCN
Fully Convolutional Networks, FCN์ semantic segmentation์ ์ํด ์ ์๋ ๋ชจ๋ธ๋ก ํฌ๊ฒ ์ธ๊ฐ์ง ํน์ง์ด ์๋ค.
์ฒซ ๋ฒ์งธ, FCN์ semantic segmentation์ ์ํด ๊ณ ์๋ ์ฒซ๋ฒ์งธ end-to-end ๋ชจ๋ธ์ด๋ค. End-to-end ๊ตฌ์กฐ๋ ๋ชจ๋ธ์ input layer๋ถํฐ output layer๊น์ง๊ฐ ๋ชจ๋ ํ์ต๊ฐ๋ฅํ nn์ผ๋ก ์ด๋ค์ ธ์์์ ์๋ฏธํ๋ค. ๊ธฐ์กด fully connected layer๋ convolutional layer์์ ์ถ๋ ฅ๋ feature map์ flatteningํ์ฌ input์ผ๋ก ์ฌ์ฉํ๊ธฐ์ ์ด๋ฏธ์ง์ ๊ณต๊ฐ ์ ๋ณด๋ฅผ ๊ณ ๋ คํ์ง ์์๋ค. FCN์์๋ 1x1 convolution ์ฐ์ฐ์ ํตํด ๊ฐ ํฝ์ ์์น๋ง๋ค ์ฑ๋์ถ์ผ๋ก flatteningํ์ฌ ๊ฐ ์์น์ ํด๋นํ๋ ๋ฒกํฐ๋ฅผ ๊ฐ๊ฐ ๊ตฌํ๋ค. ์ด๋ฅผ ํตํด, ๊ฐ ํํฐ๋ค์ด ํ๋์ weight column๊ณผ ๊ฐ์ด ๋์ํ๋ฉฐ ๊ณต๊ฐ ์ ๋ณด๋ฅผ ๊ณ ๋ คํ ์ ์๊ณ , ์ฑ๋ ์ ๋งํผ์ feature map์ ์ป์ ์ ์๋ค.
๋๋ฒ์งธ, FCN์ ๋ํ upsampling layer๋ฅผ ํตํด, ๊ธฐ์กด์ ๋์ receptive field๋ฅผ ํ๋ณดํ๊ธฐ ์ํด pooling์ ์งํํ์ฌ ์ ํด์๋์ output์ ์ป๊ฒ ๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
๋ง์ง๋ง์ผ๋ก, FCN์ skip-connection์ ์ฌ์ฉํ๋ค. FCN์ ๋์ ๋ ๋ฒจ์ ๋ ์ด์ด์ ๊ฒฝ์ฐ ๋ํ ์ผํ ๋ถ๋ถ๋ค์ ๋ํ ํน์ง, fine-grainedํ ํน์ง์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ๋ฎ์ ๋ ๋ฒจ์ ๋ ์ด์ด๋ ๋์ ๋ ๋ฒจ์ ๋ ์ด์ด๋ณด๋ค ๋ coarseํ ๋ ๋ฒจ, ์ ๋ฐ์ ์ด๊ณ ์๋ฏธ๋ก ์ ์ธ ํน์ง์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ค. Semantic segmentation์ ์ํด์๋ ์ด ๋ ๊ฐ์ง์ ์ ๋ณด๊ฐ๋ชจ๋ ํ์ํ๋ค. ๋ฐ๋ผ์ FCN์ skip-connection์ ์ฌ์ฉํ์ฌ ๋ฎ์ ๋ ๋ฒจ์ ๋ ์ด์ด์์์ feature map์ ์ง์ ์ ์ผ๋ก ๊ณ ๋ คํ ์ ์๋๋ก ์ค๊ณํ๋ค.
R-CNN Family
R-CNN ๊ณ์ด์ ๋ชจ๋ธ๋ค์ Object Detection์ ์ํด ๊ณ ์๋ ๋ชจ๋ธ๋ค์ด๋ค.
R-CNN
- R-CNN์ CNN์ object detection์ ๋์ ์ํจ ๋ชจ๋ธ์ด๋ค. R-CNN์ selective search๋ฅผ ์ฌ์ฉํ์ฌ region proposal์ ๊ตฌํ๊ณ , ์ด๋ ๊ฒ ์ป์ region๋ค์ CNN์ ํตํด feature๋ฅผ ์ถ์ถํ๊ณ , SVM์ผ๋ก classificationํ์ฌ region์ ๋ํ classification์ ์ํํ๋ค. ํ์ง๋ง, R-CNN์ region proposal ํ๋ํ๋ ๋ง๋ค classification์ ์ํํด์ค์ผ ํ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋งค์ฐ ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์๊ณ , end-to-end ๊ตฌ์กฐ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ํ์ต์ ํตํ ์ฑ๋ฅ ํฅ์์ ํ๊ณ๊ฐ ์๋ค.
Fast R-CNN
- Fast R-CNN์ R-CNN์ ๋๋ฆฐ ์๋๋ฅผ ๊ฐ์ ํ๊ณ ์, ์ด๋ฏธ์ง ์ ์ฒด์ ๋ํ feature๋ฅผ ํ๋ฒ์ ์ถ์ถํ๊ณ , ์ด๋ฅผ ์ฌํ์ฉํ์ฌ ์ฌ๋ฌ object๋ค์ ํ์งํ ์ ์๋๋ก ํ์๋ค. Fast R-CNN์ convolution layer๋ฅผ ํตํด ์ด๋ฏธ์ง ์ ์ฒด์ feature map์ ์ถ์ถํ๊ณ , ROI(Region Of Interest) Pooling ๊ธฐ๋ฒ์ ์ฌ์ฉํด, feature map์์ ROI์ ํด๋นํ๋ ๋ถ๋ถ๋ง ์ถ์ถํ๋ค. ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก FC layer๋ฅผ ๊ฑฐ์ณ region์ ๋ํ classification์ ์ํํ๊ณ , bounding box regression์ ์ํํด ๋ ์ ํํ bounding box๋ฅผ ์ป๋๋ค. ๊ทธ ๊ฒฐ๊ณผ R-CNN๋ณด๋ค ์ฝ 18๋ฐฐ ๋น ๋ฅธ ์๋๋ฅผ ๋ฌ์ฑํ ์ ์์์ง๋ง, ์ฌ์ ํ region proposal์ ์ํด huristicํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ธฐ์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์๋ ์์๋ค.
Faster R-CNN
- Faster R-CNN์์๋ region proposal๊น์ง neural network ๊ธฐ๋ฐ์ ๋ฐฉ๋ฒ์ ํ์ฉํ๋ ์ต์ด์ end-to-end object detection ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ค. Faster R-CNN์์๋ ๊ธฐ์กด์ time-consuming selective search ๋ฐฉ๋ฒ์ด ์๋ Region Proposal Network(RPN)์ ํตํด region proposal์ ์ํํ๋ค. RPN์ sliding window ๋ฐฉ์์ผ๋ก ๊ฐ ํฝ์ ์ ์์น๋ง๋ค k๊ฐ์ anchor box๋ฅผ ๊ณ ๋ คํ๋ค. Anchor box๋ ๊ฐ ํฝ์ ์์น์์ ๋ฐ์ํ ํ๋ฅ ์ด ๋์ bounding box๋ค์ ์ฌ์ ์ ์ ์ํด๋ ์ผ์ข ์ ํ๋ณด๊ตฐ์ด๋ผ ๋ณผ ์ ์๋ค. ๊ฐ ํฝ์ ์์น์์ 256์ฐจ์์ feature ๋ฒกํฐ๋ฅผ ์ถ์ถํ๊ณ , ์ด ๋ฒกํฐ๋ฅผ ์ ๋ ฅ์ผ๋ก classification layer๋ฅผ ๊ฑฐ์ณ object์ ์ฌ๋ถ๋ฅผ ํ๋ณํ๋ 2k๊ฐ์ classification ์ ์๋ฅผ ์ถ๋ ฅํ๊ณ , regresion layer๋ฅผ ๊ฑฐ์ณ 4k๊ฐ์ ์ขํ๊ฐ์ ์ถ๋ ฅํ๋ค.
Mask R-CNN
Mask R-CNN์ Instance Segmentation์ ์ํด ๊ณ ์๋ ๋ชจ๋ธ๋ก, ์ด๋ฆ์์ ์ ์ ์๋ฏ์ด Faster R-CNN๊ณผ ์ ์ฌํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง์ง๋ง ๋ช๊ฐ์ง ๊ฐ์ ์ ์ ๊ฐ์ง๋ค. Faster R-CNN์ ๊ฒฝ์ฐ RPN์ region proposal ๊ธฐ๋ฐ์ผ๋ก ROI pooling ๊ธฐ๋ฒ์ ์ฌ์ฉํ์๊ธฐ ๋๋ฌธ์ ์ ์ ์ขํ๋ง ๋ค๋ค์ผ๋, Mask R-CNN์์๋ ROIAlign์ด๋ผ๋ ์๋ก์ด pooling layer๋ฅผ ์ ์ํ์ฌ interpolation์ ๊ธฐ๋ฐ์ผ๋ก ์์์ ํฝ์ ์์ค์์์ pooling์ ์ง์ํ ์ ์๊ฒ ๋์๋ค.
๋ํ, Mask R-CNN์์๋ ๊ธฐ์กด์ Faster R-CNN์ classification, box-regression head์ ๋๋ถ์ด ๋ณ๋์ mask branch๋ฅผ ์ถ๊ฐํ์ฌ, ํ๋์ bounding box์ ๋ํด ๋ชจ๋ ํด๋์ค์ ๋ํ binary mask๋ฅผ ์์ฑํ๊ณ , classification head์ ์์ธก ๊ฒฐ๊ณผ๋ฅผ ํตํด ์ด๋ค mask๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ๋ค.
Mask Branch
- RoI๊ฐ input์ผ๋ก ๋ค์ด์ค๊ฒ ๋๋ฉด FCN์ ์ ์ฉํ convolutional network๋ฅผ ํต๊ณผํ๊ฒ ๋๋ค. ์ด๋ ๋ง์คํฌ๋ ๊ฐ class๋ง๋ค ์์ฑ๋๋ค.
- ์ผ๋ฐ์ ์ธ FCN์ ๊ฐ pixel์ ํด๋นํ๋ class label ๊ฐ์ output์ผ๋ก ๋ด๋ ๋ฐ๋ฉด, mask branch์ ์ ์ฉ๋ FCN์ ๋ฌผ์ฒด๊ฐ ์กด์ฌํ๋์ง ์ฌ๋ถ์ ๋ํ binary ๊ฐ์ output์ผ๋ก ๋ธ๋ค. ๋ฐ๋ผ์ ๊ธฐ์กด FCN๊ณผ ๋ค๋ฅธ loss function์ ์ฌ์ฉํ๋ค.
- Normal FCN: per-pixel softmax, multinomial cross-entropy loss
- Mask branch FCN: per-pixel sigmoid, binary cross-entropy loss
Mask R-CNN Loss
- mask branch์์๋ ๋ฌผ์ฒด์ class์ ๋ฐ๋ผ๊ฐ ์๋, ๋ฌผ์ฒด์ ์กด์ฌ ์ฌ๋ถ์ ๋ฐ๋ผ mask๋ฅผ ์์ฑํ๋ค.
RoIAlign
RoI, Region of Interest
Feature Extraction
- RoI๋ฅผ ์ฐพ๊ธฐ ์ํด Fast R-CNN์์๋ feature map์ ์ถ์ถํ๋ค. feature map์ ์ฌ์ด์ฆ๋ input ์ฌ์ด์ฆ๋ฅผ 32๋ก ๋๋ , ์ด๋ฏธ์ง ์ ๋ณด๋ฅผ ์์ถํ๋ค. ์์ ๊ทธ๋ฆผ์ ์์์์๋ 512x512x3์ โ 16x16x512๋ก ์์ถํ๋ค.
Get RoIs from the Feature Map
- ๋ชจ๋ RoI๋ ์ขํ์ ์ฌ์ด์ฆ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
Quantization of coordinates on the feature map
- Quantization : process of constraining an input from a large set of values(like real numbers) to a discrete set(like integers)
- ์ฌ์ง๊ณผ ๊ฐ์ ์์๋ฅผ ๋ณด๋ฉด bbox์ ์ฌ์ด์ฆ๋ 145x200์ด๋ฉฐ, top-left ์ขํ๋ (192,226)์ด๋ค. ์ฐ๋ฆฌ์ feature map์ 16x16์ธ๋ฐ, ์์ 200, 145์ ๊ฐ์ ์ซ์๋ 32๋ก ๋๋ ๋จ์ด์ง์ง ์๋๋ค.
- ๊ทธ๋์ ์์์ ์ ๋ฒ๋ ค, ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฌ์ง์ ํ๋์ ๋ถ๋ถ์ ์ ๋ณด๋ฅผ ์๊ฒ ๋๊ณ , ์ด๋ก์ ๋ถ๋ถ์์์ ์๋ก์ด ์ ๋ณด๋ฅผ ์ป๊ฒ๋๋ฉฐ ์ด๋ก์ธํด ์๋์ RoI๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋ค.
RoI Pooling
- ์ฌ์ด์ฆ๊ฐ ๋ค๋ฅธ ๊ฐ RoI๋ค์ ํฌ๊ธฐ๋ฅผ ๊ณ ์ ๋ ์ฌ์ด์ฆ๋ก ๋ง์ถฐ์ฃผ๊ธฐ ์ํด pooling์ ์งํํ๋ค. Pooling์ ์งํํ๋ฉฐ ๊ทธ๋ฆผ์ ๋ง์ง๋ง ํ๊ณผ ๊ฐ์ด ๋ ํ๋ฒ ์ ๋ณด๋ฅผ ์๊ฒ ๋๋ค.
RoI Align
- RoI Align์ ๊ธฐ์กด RoI, RoIPooling์ ์ ๋ณด ์์ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์๋ก์ด ๋ฐฉ๋ฒ๋ก ์ด๋ค. Mask R-CNN์ Instance Segmentation task๋ฅผ ์ํํ๊ธฐ์ pixel๊ฐ์ ๊ด๊ณ๊ฐ ์ค์ํ๋ค. ๋ฐ๋ผ์ ์ ๋ณด์ ์์ค์ด ์์ด์ผํ๋ค. RoI Align์ quantization์ ํ์ง ์๊ณ , RoI ๊ฐ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ค. RoI์ ๋ฒ์๋ฅผ 3x3 ์ฌ์ด์ฆ์ ๋ง์ถฐ width์ height๋ฅผ 3๋ฑ๋ถํ๊ณ , ๊ฐ ๋ฑ๋ถ๋ ๊ตฌ์ญ์ 4๋ฑ๋ถํ์ฌ bilinear interpolation์ ๊ณ์ฐํด ๊ฐ ์ง์ ์ ๊ฐ์ ๊ณ์ฐํ ์ ์๋ค. ์ด์ 4๋ฑ๋ถ๋ ๊ตฌ์ญ์ ๊ฐ์ poolingํ์ฌ 3x3 feature map์ ์์ฑํ ์ ์๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก RoI Align์ quantization์์ด pooling์ ์งํํ์ฌ ์ ๋ณด์ ์์ค์์ด pooling์ ์งํํ ์ ์๋ค.
Reference
- https://www.youtube.com/watch?v=RtSZALC9DlU
- https://velog.io/@imfromk/CV-Understanding-RoIsRegion-of-Interest
- https://kimdoing.medium.com/mask-r-cnn-649f78083547
- https://kimdoing.medium.com/fully-convolutional-networks-for-semantic-segmentation-4ca085ccb1b1
- https://wikidocs.net/148635
- https://panggu15.github.io/detection/Mask-R-CNN/
Leave a comment