- toc {:toc}
Overview of SPPnet
SPPnet ์ ๊ธฐ์กด CNN(e.g. AlexNet) ์ ์ด๋ฏธ์ง ์ ๋ ฅ์ 224x224 ์ ๊ฐ์ด ๊ณ ์ ์ผ๋ก ์ค์ ํด์ผ ํ๋ ๋จ์ ์ ํด๊ฒฐํ๋ Spatial Pyramid Pooling(SPP) ๋ฐฉ์์ ์ ์ํ๋ค. SPP ๋ฅผ ํตํด ์ ๋ ฅ์ ํฌ๊ธฐ๊ฐ ์ด๋ป๋ ๊ฐ์ ๊ณ ์ ๊ธธ์ด ๋ฒกํฐ ํํ์ ์์ฑํ ์ ์๋ค.
- SPPnet ์ ์ ์ฒด์ ์ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ ๋ ฅ ์ด๋ฏธ์ง๋ฅผ CNN ์ ๋ฃ๋๋ค.
- CNN ์ผ๋ก๋ถํฐ ์ถ์ถ๋ ํน์ง๋งต์ Spatial Pyramid Pooling layer ๋ฅผ ์ ์ฉํ๋ค.
- Spatial Pyramid Pooling layer ๋ฅผ ํตํด ๋์จ ๊ณ ์ ๊ธธ์ด ๋ฒกํฐ ํํ์ fully-connected layers ์ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉํ๋ค.
Problem
- ์ด์ CNN ๊ตฌ์กฐ์ ๊ฒฝ์ฐ ์ ๋ ฅ ํฌ๊ธฐ๊ฐ 224x224 ๋ก ์ ๋ ฅ ์ด๋ฏธ์ง์ ๋น์จ๊ณผ ํฌ๊ธฐ๊ฐ ์ ํ๋์๋ค.
- ๋น์จ, ํฌ๊ธฐ ์ ํ์ ์ด๋ฏธ์ง์ ์๊ณก, ์ ๋ณด์ ์๊ณก, ์์ค์ ๋ง๋ค๊ณ ์ ํ๋์ ์ํฅ์ ๋ฏธ์น ์ ์๋ค.
CNN ๊ตฌ์กฐ์์ ๊ณ ์ ๊ธธ์ด ๋ฒกํฐ๊ฐ ํ์ํ ๋ถ๋ถ์ fc layer ๊ฐ ์ฌ์ฉ๋ ๋์ด๋ฏ๋ก SPPnet ์์๋ conv layers ๋ ์ด๋ฏธ์ง ํฌ๊ธฐ์ ๊ด๊ณ์์ด ์ฌ์ฉํ๊ณ , fc layer ์ด์ ์ SPP ๋ฅผ ์ฌ์ฉํ์ฌ ๊ณ ์ ๊ธธ์ด ๋ฒกํฐ๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฃ์ด์ฃผ๋ ๊ตฌ์กฐ๋ฅผ ์ทจํ๋ค.
Main Idea - Spatial Pyramid Pooling
Spartial Pyramid Pooling ์ ๋ฐฉ์์ ํน์ง์ ํจ๊ป ๋ชจ์ผ๋ BoW(Bag of Words) ๋ฐฉ์์์ ์ฐฉ์ํ๋ค๊ณ ํ๋ค.
Why is Conv layer fine?
- Conv layer 5 ๊ฐ, Fully-connnected layer 2 ๊ฐ๋ก ๊ตฌ์ฑ๋ CNN ์ ๊ฐ์ ํ์.
- ์ ๊ทธ๋ฆผ์ (a) Pascal VOC 2007 ์ด๋ฏธ์ง, (b) conv5 ์ ํน์ง๋งต, (c) conv5 ์ ๋ํ ์ด๋ฏธ์ง๋ท ์ด๋ฏธ์ง์ ๋ฐ์ ์ ๋๋ฅผ ํ์ํ ๊ทธ๋ฆผ์ด๋ค.
(a), (b) ๋ฅผ ๋น๊ตํ์ ๋ ๋ฌผ์ฒด์ ํน์ง, ํ์ฒด๋ฅผ ๋ํ๋ธ ๋ถ๋ถ์ ๊ฐํ๊ฒ ํ์ฑํ๊ฐ ๋์ด ์๋ ๋ถ๋ถ์ ์ ์ ์๋ค. ๋๋ฌธ์ conv layer ์์์ ๋ฏธ๋ฆฌ ์ด๋ฏธ์ง๋ฅผ ์กฐ์ ํ ํ์์์ด conv ๋ฅผ ๊ฑฐ์น ํ ํน์ง๋งต์ ์ฌ์ฉํ๋๋ผ๋ ์๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ณด์ธ๋ค๋ ๊ฒ์ ์ ์ฆํ๋ค.
Spatial Pyramid Pooling
SPP ๋ spatial bins ์ ์ค์ ํ๋ค. Bin ์ ์ ๊ทธ๋ฆผ์ 4x4, 2x2, 1x1 ์ ์ฌ๊ฐํ ํ๋๋ฅผ ๋งํ๋ค. ์ ๊ทธ๋ฆผ์์๋ bin ์ ๊ฐ์๋ 21 ๊ฐ์ด๋ค.
์ดํ, ํด๋น bin ์ ๊ฐ์์ ๋ง๋ pooling ๊ฐ์๊ฐ ์ฐ์ถ๋๊ณ (e.g. 21bin ์ผ ๋ 4x4, 2x2, 1x1 pooling) ๊ฐ pooling ์ ๋ํด window size ์ stride ๋ฅผ ์กฐ์ ํด ๊ณ ์ ํฌ๊ธฐ์ pooling ์ถ๋ ฅ์ ์์ฑํ๋ค. ์ฆ, pooling ํ์ฌ ๋์ฌ ์ถ๋ ฅ์ ๊ณ ์ ํ๊ณ ์ด๋ฏธ์ง๊ฐ ํด๋น ํฌ๊ธฐ๋ก ์ถ๋ ฅ๋๋๋ก ์ค์ ํ๋ค. ์ด๋์ pooling ์ MaxPooling ์ด๋ค.
- Window_size = Ceil(feature map size / pooling size)
- Stride = Floor(feature map size / pooling size)
- ex) 13x13 feature map, 3x3 pooling ์ ํ๋ ๊ฒฝ์ฐ
- window size = ceil(13/3) = 5
- stride = floor(13/3) = 4
- ๋ค์์ ํตํด 3x3 pooling ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
- Window_size ์ Stride ๋ adaptive ํ๊ฒ ์ค์ ๋๋ค.
์ดํ pooling ์ถ๋ ฅ์ concat, flatten ์ํด์ผ๋ก์จ ํ๋์ ๊ณ ์ ๋ ๊ธธ์ด์ ๋ฒกํฐ ํํ์ผ๋ก ์ค์ ํ ์ ์๋ค.
SPP ๋ฅผ ํตํด 4x4, 2x2, 1x1 pooling ํ๋ ๊ฒฝ์ฐ๋ฅผ ํํํ ๊ทธ๋ฆผ์ด๋ค. ๋ค์ํ ํฌ๊ธฐ์ ์ถ์ถ์ ํตํด ์ด๋ฏธ์ง์ ๋ค์ํ ๊ณต๊ฐ์ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ค. ํฐ pooling ๊ฒฐ๊ณผ๋ ๊ด๋ฒ์ํ ์ ๋ณด, ์์ pooling ๊ฒฐ๊ณผ๋ ์ธ๋ถ์ ์ธ ์ด๋ฏธ์ง ์ ๋ณด๋ฅผ ๊ฐ๋๋ค.
Object Detection of SPPnet
- SPPnet ์ Object Detection ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ ๋ ฅ ์ด๋ฏธ์ง๋ฅผ CNN ์ ๋ฃ๋๋ค.
- CNN ์ผ๋ก๋ถํฐ ์ถ์ถ๋ ํน์ง๋งต์ Selective Search ์ ๊ฐ์ Proposal Method ๋ฅผ ์ฌ์ฉํด RoI ๋ฅผ ์ ์ ํ๋ค.
- ๊ฐ RoI ์ ๋ํด Spatial Pyramid Pooling layer ๋ฅผ ์ ์ฉํ๋ค.
- Fully-connected layers ๋ฅผ ํต๊ณผํ๊ณ ๋ ๊ฒฐ๊ณผ๋ฅผ cache ๋ก ์ ์ฅํ๋ค.(SVMs ์ Bbox reg ๊ฐ ์ฐ์ฐ์ ๊ณต์ ํ์ง ์๊ธฐ ๋๋ฌธ)
- SVM ์ ํตํด ๋ถ๋ฅ ์์ ์ ํ๋ค.
- Bbox reg ์ Non Maximum Suppression ์ ํตํด์ bounding box ๋ฅผ ๊ตฌํ๋ค.
Compare RCNN with SPPnet
- ์ฅ์
- SPPnet ์ RCNN ์ 2000 ๊ฐ์ RoI ์ ๋ํด ๊ฐ๊ฐ CNN ์ ์ ์ฉํจ์ผ๋ก์จ ๋ฐ์ํ๋ ๋น์ฉ์ ํ๋์ ์ด๋ฏธ์ง์ CNN ์ ์ ์ฉํจ์ผ๋ก์จ ๊ฐ์์์ผฐ๋ค
- ์ ๋ ฅ ์ด๋ฏธ์ง์ ํฌ๊ธฐ, ๋น์จ์ ์ํฅ์ ๋ฐ์ง ์๋๋ค.
- Pyramid ๋ฐฉ์์ ํตํด ์ฌ๋ฌ ๊ณต๊ฐ์ ํน์ง์ ์ถ์ถํด FC layer ๋ก ์ ๋ฌํ๋ค.