- 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๋ก ์ ๋ฌํ๋ค.