
https://bh-kaizen.tistory.com/73
[Object Detection] R-CNN ์ดํด๋ณด๊ธฐ (+SPPNet)
๋ค์ ์ฃผ๋ถํฐ ๋ํ ์ ํ๋ก์ ํธ๊ฐ ์งํ๋๋ค๊ทธ๋์ ๋ํ ์ ์ชฝ ๋ชจ๋ธ๋ค๋ ํํธ์ ์ผ๋ก ์๊ณ ์๊ฑฐ๋ ์ดํด๊ฐ ๋ถ์กฑํ ๋ถ๋ถ๋ค์ด ๋ง์๋๋ฐ ์ด๋ฒ ๊ธฐํ์ ์ ์ฒด์ ์ผ๋ก ๊ณต๋ถ ๋ฐ ์ ๋ฆฌ๋ฅผ ํ๊ณ ๋์ด๊ฐ๋ คํ๋ค ์๋
bh-kaizen.tistory.com
์ด์ ์๋ R-CNN๊ณผ SPPNet์ ์ดํด๋ณด์๋ค
๋ค์์ Fast R-CNN, Faster R-CNN์ธ๋ฐ Fast R-CNN์ SPPNet์ ๋ณํ, ์ข ๋ ๊ฐ์ ๋ ๋ฒ์ ผ์ ๊ฐ๊น๊ณ Faster R-CNN์ R-CNN์ ๋ฌธ์ ์ ๋ค์ ๋๋ถ๋ถ ๊ฐ์ ํ end-to-end ํ์ต ๊ฐ๋ฅํ ๋ํ ์ ๋ชจ๋ธ์ด๋ค
R-CNN ๊ณ์ด์ ์ ๋ฐ์ ์ธ ํ๋ฆ์ ์๋ ๊ธ์์ ์ ์ ๋ฆฌ๋์ด์๋ค
์ด๋ฒ์๋ ๋ ผ๋ฌธ์ด๋ ์ฝ๋ ๋ฑ์ ๋ณด๊ธฐ ์ ์ ์ ์ ๋ฆฌ๋ ๋ธ๋ก๊ทธ๊ธ๋ค๋ก ์ ์ฒด์ ์ธ ๋ด์ฉ ๊ตฌ์ฑ๊ณผ ์ค์ํ ๋ด์ฉ, ๊ฐ๋ ๋ค์ ๋จผ์ ์ดํด๋ณด์๋ค
- ๊ฐ์๋จน๋ Object Detection [3] Fast R-CNN
- CV - Fast RCNN
- Fast R-CNN ๋ ผ๋ฌธ ๋ฆฌ๋ทฐ
- ๋ ผ๋ฌธ๋ฆฌ๋ทฐ - Fast R-CNN ํบ์๋ณด๊ธฐ
- ๋ฅ๋ฌ๋ ์ปดํจํฐ ๋น์ ๋ฐฑ๊ณผ์ฌ์ - Fast R-CNN
- [๋ ผ๋ฌธ ๋ฆฌ๋ทฐ] R-CNN / Fast R-CNN / Faster R-CNN (2)
- Part K. Two-stage Detectors
- Fast R-CNN ๋ ผ๋ฌธ๋ฆฌ๋ทฐ: RoI Pooling Layer์ Truncated SVD
- [๋ ผ๋ฌธ ๋ฆฌ๋ทฐ] Fast R-CNN
๋ฌผ๋ก .. ์ ๋ฆฌ๋ ๊ธ์ ๋ด๋ ํ๋ฒ์ ์ดํด๋์ง ์์๋ค
๊ทธ๋์ ์ ๋ฏธ๋์ด์๊ฒ ๋ ผ๋ฌธ์ ๋์ ธ์ฃผ๊ณ ๊ฐ์ด๋ ํ์ต ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ ์์๋๋ก ์ฃผ์ ๋ด์ฉ๋ค์ ๋ํด ์ง๋ฌธ์ ๋์ ธ์ฃผ๊ฒ ํด์ ์ฌ๊ธฐ์ ๋๋ตํด๋ณด๋ ์์ผ๋ก ์กฐ๊ธ์ฉ ์ดํดํ๊ณ ๋ค์ ๋ธ๋ก๊ทธ๊ธ๋ก ๋์๊ฐ์ ํ์ธํ๊ณ ์ดํด๊ฐ ๋์๋์ง ์ฒดํฌํ๋ฉฐ ๊ณต๋ถํด๋ณด์๋ค

Fast R-CNN
๊ธฐ์กด ๋ชจ๋ธ์ ํ๊ณ์ (R-CNN, SPPNet)


๋ ผ๋ฌธ์์๋ ์ฒซ ํ์ด์ง์์ ์์ ๊ฐ์ด R-CNN์ SPPNet์ ๋ํ 3๊ฐ์ง ๋ฌธ์ ์ ๋ค์ ๋จผ์ ์ง์ ํ๋ค
- ํ์ต์ด ๋ค๋จ๊ณ๋ก ์ด๋ฃจ์ด์ ธ ๊ฐ๊ฐ ํ์ต๋๋ ๊ฒ (=end-to-end ํ์ต ๋ถ๊ฐ)
- ๊ทธ๋ฆฌ๊ณ ๊ฐ ๋จ๊ณ๋ณ๋ก ํ์ต์ ์ํค๋๋ฐ ํ์ต ๋ฆฌ์์ค๊ฐ ๋ง์ด ๋๋ ๊ฒ
- ์ธํผ๋ฐ์ค ์๋๊ฐ ๋๋ฆฌ๋ค๋ ๊ฒ
SPPNet์ SPP๋ ์ด์ด๋ฅผ ํตํด ์ฌ๋ฌ ๋ฌธ์ ๋ฅผ ๊ฐ์ ํ์ผ๋ ์ฌ์ ํ ํ๊ณ์ ๋ค์ด ์กด์ฌํ๋ค
- R-CNN๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ํน์ง ์ถ์ถ, ํ์ธ ํ๋, SVM ํ์ต, Bounding-box regressor ํ์ต์ผ๋ก ์ด์ด์ง๋ ๋ค๋จ๊ณ ํ์ดํ๋ผ์ธ
- ์ฌ์ ํ Feature๋ฅผ ๋์คํฌ์ ์ ์ฅํด์ผ ํจ.
- ์น๋ช ์ ์ธ ํ๊ณ: ์ ์๋ ํ์ธ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด SPP(Spatial Pyramid Pooling) ๋ ์ด์ด ์๋จ์ Convolutional layer๋ค์ ์ ๋ฐ์ดํธํ ์ ์์.
- ์ด๋ฌํ '๊ณ ์ ๋ Convolutional layer(Fixed convolutional layers)'์ ํ๊ณ๋ ๋งค์ฐ ๊น์ ๋คํธ์ํฌ(Very deep networks)์ ์ ํ๋๋ฅผ ์ ํํจ.
๊ณตํต์ ์ผ๋ก R-CNN๊ณผ SPPNet์ ํน์ง ์ถ์ถ (CNN) ๊ณผ ๋ถ๋ฅ/ํ๊ท ๋ชจ๋ธ ๊ฐ์ ํ์ต์ด ๋จ์ ๋์ด ์๋ค๋ ์ ์ด๋ค
์ผ๋ฐ์ ์ธ ํ๋์ ๋ชจ๋ธ์ ๊ฒฝ์ฐ ์์ธก๊ฐ๊ณผ ์ ๋ต๊ฐ ์ฌ์ด์ ์ค์ฐจ๋ฅผ ํตํด ๊ฐ์ค์น๋ค์ ์กฐ์ ํ๋ฉด์ ์ ๋ต์ ๊ฐ๊น๊ฒ ํ์ต์ ํ์ง๋ง ๋ฐ์ด๋ฉ ๋ฐ์ค๋ฅผ ์์ธกํ๋ ํ๊ท ๋ชจ๋ธ๊ณผ ํด๋์ค๋ฅผ ๋ถ๋ฅํ๋ ๋ถ๋ฅ ๋ชจ๋ธ์์ ๋ฐ์ํ ์ค์ฐจ๋ก CNN์ ํผ์ณ๋ค์ ๋ ์ข๊ฒ ์์ ํ ์๊ฐ ์๋ค
๊ทธ๋ฌ๋ ํ์ฌ์ ๊ตฌ์กฐ์์๋ CNN์ ๊ฐ์ค์น๋ค์ด ๋ถ๋ฅ๊ธฐ์ ์ต์ ํ ๊ณผ์ ์ ๋ง์ถฐ ์ ๋ฐ์ดํธ ๋์ง ๋ชปํ๋ค
์ด๋ฏธ์ง์ ํน์ง์ ์ ์ถ์ถํด์ผ CNN์ ๊ฑฐ์น ํผ์ณ๋งต์์ ํฌ์ํ RoI ๋ฒกํฐ๋ค์ด ๋ ์ ํํ๊ฒ ๋ถ๋ฅ๋๊ณ ์ขํ๊ฐ๋ค๋ ์ ์กฐ์ ๋ ์ ์์ ๊ฒ์ด๋ค
์ด๋ฅผ ์ข ํฉํด์ SPPNet๊ณผ Fast R-CNN์ ๋จผ์ ๋น๊ตํด์ ๋ณด๋ฉด ์๋์ ๊ฐ๋ค

- Fast R-CNN์์ Region Proposal ๋ถ๋ถ์ ์ฌ์ ํ ํตํฉ๋์ง ๋ชปํ์ผ๋ ๊ทธ ์ธ์ ๋ค๋ฅธ ๋ถ๋ถ๋ค์ ์ ๋ถ ํ๋์ ๋คํธ์ํฌ๋ก ํตํฉ๋์ด ์์์ ํ์ธํ ์ ์๋ค
- ์ฃผ๋ก ์ดํด๋ณผ ๋ด์ฉ์ SPP์ ๋ณํ์ธ RoI Pooling, ๋ถ๋ฅ์ ํ๊ท๋ฅผ ๋์์ ํ์ต ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด์ค Multi-task loss, 2๊ฐ์ง ํต์ฌ ์์ด๋์ด์ด๋ค
- ๊ทธ ์ธ์๋ RoI Pooling์ ํตํ ํจ๊ณผ์ ์ฑ๋ฅ ํฅ์, FC Layer๋ฅผ ์ต์ ํํ ๋ฐฉ๋ฒ๋ค๋ ๊ฐ๋จํ๊ฒ ๊ฐ์ด ์ดํด๋ณด์๋ค
์๋๋ ๋ ผ๋ฌธ์์ ์ ์ํ Fast R-CNN์ ๊ตฌ์กฐ์ด๋ค

- RoI Pooling layer๋ฅผ ํต๊ณผํด์ ๊ฐ๊ฐ ๋ถ๋ฅ์ ํ๊ท ๋ ์ด์ด๋ก ์ ๋ฌ๋๋ค๊ณ ํ๋๋ฐ ์ด RoI Pooling์ด ๋ญ๊น?
RoI Pooling
RoI Pooling ๋ ์ด์ด๋ Max Pooling์ ์ฌ์ฉํด ์ ๋ ํฐ๋ธ ์์น๋ก ์ป์ ํ๋ณด๋ค์ ์๋ณธ ์ด๋ฏธ์น๊ฐ CNN์ ๊ฑฐ์ณ ์ป์ ํผ์ณ๋งต์ RoI Projectionํ์ฌ ์ป์ RoI๋ค์ ๊ณ ์ ๋ ํฌ๊ธฐ H x W (ex: 7 x 7) ์ ์์ ํผ์ณ๋งต์ผ๋ก ๋ณํํ๋ค
์ด์ SPPNet์์ spatial pyramid pooling์ ๊ฒฝ์ฐ, ๋ค์ํ ํฌ๊ธฐ์ ๋น (1x1, 2x2, 4x4) ๊ณผ ๊ฐ์ ๋ค์ํ ํฌ๊ธฐ์ ํผ์ณ๋งต์ ๋ฝ์๋ค๋ฉด RoI Pooling์ ํ๋์ ๊ณ ์ ๋ ํฌ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค
๋์ ์๋ฆฌ
- ๊ณ ์ ํฌ๊ธฐ ๋ณํ: RoI Pooling์ ์ ๋ ฅ Feature Map ์์ ์๋ ํฌ๊ธฐ๊ฐ ๊ฐ๋ณ์ ์ธ RoI ์์ญ (h x w) ์ ๋คํธ์ํฌ๊ฐ ์๊ตฌํ๋ ๊ณ ์ ๋ H x W ํฌ๊ธฐ์ ๊ฒฉ์(Grid)๋ก ๋๋๋ค
- Max Pooling ์ ์ฉ: ์ด H x W ๊ฒฉ์์ ๊ฐ ์ (Sub-window) ๋ด๋ถ์์ Max Pooling์ ์ํํ๋ค. ์ฆ, ๊ฐ ์ ์์ ๊ฐ์ฅ ํฐ ๊ฐ๋ง์ ์ถ์ถํ์ฌ ์ต์ข ์ ์ธ H x W ํฌ๊ธฐ์ Feature Map์ ๊ตฌ์ฑํ๋ค
- ๊ฒฐ๊ณผ: ์ด ๊ณผ์ ์ ํตํด RoI์ ํฌ๊ธฐ (h, w) ์ ๋ฌด๊ดํ๊ฒ ํญ์ ์ผ์ ํ ๊ธธ์ด์ Feature Vector๋ฅผ ์ป์ด, ์ดํ์ FC Layer(Fully Connected Layer) ์ ์ ๋ ฅํ ์ ์๊ฒ ๋๋ค

- ๊ฐ๋จํ ์๋ฅผ ๋ค์ด, ์๋ณธ ํผ์ณ๋งต ํฌ๊ธฐ๊ฐ 49x49๋ก ๋์๊ณ ํฌ์ํด์ ์ป์ RoI ํฌ๊ธฐ๊ฐ 14x14์ด๋ค
- ๊ทธ๋ฌ๋ฉด h, w๋ 14,14์ด๊ณ H, W๋ 7x7๋ก ์ค์ ํ์ ๋
- h/H, h/W => 14/7, 14/7์ด ๋์ ์๋ธ ์๋์ฐ๋ 2x2 ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ค
- ์ด ์๋ธ ์๋์ฐ์์ Max Pool์ ์ํํ์ฌ ์ด 7x7 ํฌ๊ธฐ์ ํผ์ณ๋งต์ ๋ง๋ ๋ค
- ์์๋ ๊น๋ํ๊ฒ ๋๋ ์ง๋ ๊ฒฝ์ฐ๋ก ๋ค์์ง๋ง ์ค์ RoI๋ ํฌ๊ธฐ๋ค์ด ๋ชจ๋ ๋ค๋ฅด๊ณ ๋ค์ํ๊ธฐ ๋๋ฌธ์ ๋๋ถ๋ถ ์ง์ฌ๊ฐํ์ด๋ผ ์๊ฐํ๋ ๊ฒ์ด ์ข๋ค
- ๊ทธ๋์ ์์ ์ด๋ฏธ์ง ์์๋ ์ ๋ฐ ์ง์ฌ๊ฐํ์ผ๋ก ๋์ด์๋ ๊ฒ์ด๋ค
- ๋ํ, RoI Pooing์ ํ๊ธฐ ์ํด ์๋ธ์๋์ฐ๋ฅผ ๊ณ์ฐํ ๋ 32/7 ๊ฐ์ ๊น๋ํ๊ฒ ๋๋ ์ง์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด๋ฉฐ ์ด ๊ฒฝ์ฐ ๋จ์ํ ์์ํ (๋ฐ์ฌ๋ฆผ, ๋ฒ๋ฆผ) ์ ์ฌ์ฉํ๋ค๊ณ ํ๋ค
- ์ด๋ ๊ฒ ์ฒ๋ฆฌํ ๊ฒฝ์ฐ RoI์์ ๊ฐ์ฅ์๋ฆฌ๊ฐ ๊น์ฌ๋๊ฐ๋ฉด์ ์ ๋ณด ์์ค์ด ๋ฐ์ํ๊ณ , ์ด ๋ถ๋ถ์ ์ถํ ๊ฐ์ ํ ๋ฐฉ๋ฒ์ด RoIAlign์ด๋ค
์๋์ ๊ธ์์ RoI Pooling๊ณผ ๊ทธ ๊ณผ์ ์์ ํฝ์ ๋ค์ด ์์ค๋๋ ๋ด์ฉ๊น์ง ์ ๋ด๊ฒจ์์ผ๋ ํ๋ฒ ์ฝ์ด๋ณด๋ ๊ฑธ ์ถ์ฒํ๋ค
https://erdem.pl/2020/02/understanding-region-of-interest-ro-i-pooling
Understanding Region of Interest (RoI Pooling) - Blog by Kemal Erdem
Original Fast R-CNN architecture. Source: https://arxiv.org/pdf/1504.08083.pdf We’re going to discuss original RoI pooling described in Fast R-CNN paper (light blue rectangle on the image above). There is a second and a third version of that process call
erdem.pl
ํ์ง๋ฅผ ์ํ ํ์ธ ํ๋ (ํ์ต ๋ฐฉ์ ๋ฐ ์ญ์ ํ)
RoI Pooling์ด Fast R-CNN์์ end-to-end๋ก ํ์ตํ๊ธฐ ์ํ ๋ฉ์ธ ์์ด๋์ด ์ค ํ๋์ด๋ค
Fast R-CNN์ ๊ฐ์ฅ ์ค์ํ ๋ฅ๋ ฅ์ ๋ชจ๋ ๋คํธ์ํฌ ๊ฐ์ค์น๋ฅผ ์ญ์ ํ(Back-propagation)๋ก ํ์ต์ํค๋ ๊ฒ์ด๋ค
- SPPnet์ด ์คํจํ ๊ทผ๋ณธ ์์ธ: SPPnet์ ๊ฐ ํ์ต ์ํ(RoI)์ด ์๋ก ๋ค๋ฅธ ์ด๋ฏธ์ง์์ ์ฌ ๋ SPP ๋ ์ด์ด๋ฅผ ํตํ ์ญ์ ํ๊ฐ ๋นํจ์จ์ ์ด์๊ธฐ ๋๋ฌธ์ด์๋ค. ์ด๋ R-CNN๊ณผ SPPnet์ ํ์ต ๋ฐฉ์์ด์๋ค
- Fast R-CNN์ ํด๊ฒฐ์ฑ
(๊ณ์ธต์ ์ํ๋ง): Fast R-CNN์ Feature ๊ณต์ ์ ์ด์ ์ ํ์ฉํ๋ ํจ์จ์ ์ธ ํ์ต ๋ฐฉ๋ฒ์ ์ ์ํ๋ค.
๋ฏธ๋ ๋ฐฐ์น๋ฅผ N๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ๋จผ์ ์ํ๋งํ๊ณ ๊ฐ ์ด๋ฏธ์ง์์ R/N๊ฐ์ RoI๋ฅผ ์ํ๋งํ๋ ๊ณ์ธต์ (Hierarchical) ๋ฐฉ์์ ์ฌ์ฉํ๋ค- SPPNet/R-CNN์ ๋ฌธ์ :
์ด๋ค์ 128๊ฐ์ RoI๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด 128์ฅ์ ์๋ก ๋ค๋ฅธ ์ด๋ฏธ์ง์์ RoI๋ฅผ 1๊ฐ์ฉ ์ถ์ถํ์๋ค
๋ชจ๋ RoI๊ฐ ์๋ก ๋ค๋ฅธ ์ด๋ฏธ์ง์์ ์๊ธฐ ๋๋ฌธ์, ConvNet์ ํต๊ณผํ Feature Map์ ์ ํ ๊ณต์ ํ ์ ์์๊ณ ๋งค RoI๋ง๋ค ์๋ก์ด ์ฐ์ฐ์ด ํ์ํ๋ค - Fast R-CNN์ ํด๊ฒฐ :
2์ฅ์ ์ด๋ฏธ์ง์์ 64๊ฐ์ฉ RoI๋ฅผ ์ถ์ถํ๋ฉด, ์ด 64๊ฐ์ RoI๋ ๋จ ํ๋์ Feature Map์ ๊ณต์ ํฉ๋๋ค. - ๊ฒฐ๊ณผ: ์ด๋ฏธ ๊ณ์ฐ๋ Feature Map์ 64๋ฒ ์ฌํ์ฉํ ์ ์๊ฒ ๋๋ฏ๋ก, ๋ ผ๋ฌธ์์ ์ธ๊ธํ๋ฏ์ด R-CNN/SPPNet ๋ฐฉ์ ๋๋น ์ฝ 64๋ฐฐ ๋ ๋น ๋ฅธ ๋ฏธ๋ ๋ฐฐ์น ์ฐ์ฐ ์๋๋ฅผ ๋ฌ์ฑ
- ํจ์จ์ฑ: ๊ฐ์ ์ด๋ฏธ์ง์์ ์จ RoI๋ค์ Forward/Backward pass์์ ์ฐ์ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๋ค
- SPPNet/R-CNN์ ๋ฌธ์ :
- RoI Pooling Layer๋ฅผ ํตํ ์ญ์ ํ:
- ์๋ฆฌ: ์ญ์ ํ๋ argmax ์ค์์น๋ฅผ ๋ฐ๋ผ ๋ฏธ๋ถ ๊ฐ(Derivatives)์ ๋ผ์ฐํ ํ๋ค
- CNN ๊ธฐ์ธ๊ธฐ ๊ณ์ฐํ ๊ฒฝ์ฐ Max Pooling์์๋ ๊ฐ์ ์ ํํ๊ธฐ ๋๋ฌธ์ ์ญ์ ํ์ ์ ํ๋ ๊ฐ์ผ๋ก ํ๋ฌ๊ฐ๊ฒ ํ๋, ๊ธฐ์ธ๊ธฐ๋ฅผ ์ ๋ฌํ๋ ์ญํ ์ ํ๋ค
- ๋ฐ๋ผ์ ์์คํจ์ L์ ๋ ๊ธฐ์ธ๊ธฐ (partial L, partial yrj) ๋ RoI Pooling์ Max ๊ฐ์ ์ ํํ๊ฒ ํ ์ ๋ ฅ Feature Map์ ํฝ์ xi์๋ง ๋์ ๋์ด ์ ๋ฌ๋๊ณ , ๋๋จธ์ง ํฝ์ ์๋ 0์ด ์ ๋ฌ๋๋ค

๋ค์ ์ ๋ฆฌํด์๋ฉด ์ญ์ ํ ์๋ฆฌ (Backward):
H x W ์ถ๋ ฅ๊ฐ์ ๊ธฐ์ธ๊ธฐ(partial L/partial y)๊ฐ ์ด๋ป๊ฒ ์ ๋ ฅ Feature Map(x)์ผ๋ก ์ ๋ฌ๋๋๊ฐ?
- ํต์ฌ ์๋ฆฌ: argmax ์ค์์น ํ์ฉ: RoI Pooling์ Max Pooling ๊ธฐ๋ฐ์ด๋ฏ๋ก, ์ญ์ ํ ์์๋ Forward Pass์์ Max ๊ฐ์ ์ ํํ๋ ๊ทธ ์์น๋ฅผ '์ค์์น'์ฒ๋ผ ๊ธฐ์ตํ๋ค

- ๊ธฐ์ธ๊ธฐ ์ ๋ฌ: ์์ค ํจ์(L) ์์ ๊ณ์ฐ๋ ๊ธฐ์ธ๊ธฐ(partial L / partial y_rj)๋ Max Pooling ์ ์ ํ๋์๋ ์ ๋ ฅ Feature Map์ ํฝ์ x_i ์์น๋ก๋ง ๋์ ๋์ด(Accumulated) ์ ๋ฌ๋๋ค
- End-to-End์ ์์ฑ: ์ด argmax ์ค์์น ๋๋ถ์ ๊ธฐ์ธ๊ธฐ๊ฐ RoI Pooling ๋ ์ด์ด๋ฅผ ํต๊ณผํ์ฌ ๊ณต์ ๋ Convolutional Layer์ ๊ฐ์ค์น๊น์ง ๋๋ฌํ๊ฒ ๋๋ค
์ด๊ฒ์ด SPPnet์ด ํด๊ฒฐํ์ง ๋ชปํ๋ ํ์ต์ ๋จ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ End-to-End ํ์ต์ ๊ฐ๋ฅํ๊ฒ ํ ๊ฒฐ์ ์ ์ธ ๋ฉ์ปค๋์ฆ์ด๋ค
CNN ์ญ์ ํ ๊ณผ์ ์ ๋ํด์ ์๋ ๊ธ์ด ์ ์ค๋ช ํด์ฃผ์๋ค
์ฌ๋ฌ๋ฒ ์ ๋ ํ๋ฉด์ ๊ณต๋ถํ ๋ด์ฉ..
https://ratsgo.github.io/deep%20learning/2017/04/05/CNNbackprop/
CNN์ ์ญ์ ํ(backpropagation) · ratsgo's blog
์ด๋ฒ ํฌ์คํ ์์๋ Convolutional Neural Networks(CNN)์ ์ญ์ ํ(backpropagation)๋ฅผ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ง์ด ์ฐ๋ ์ํคํ ์ฒ์ด์ง๋ง ๊ทธ ๋ด๋ถ ์๋์ ๋ํด์๋ ์ ๋๋ก ์์ง ๋ชปํ๋ค๋ ์๊ฐ์ ์ ์ค์ค๋ก๋
ratsgo.github.io
Multi-task Loss
๋ค์์ end-to-end ํ์ต์ ์๋ํ๋ ๋๋ฒ์งธ ๋ฉ์ธ ์์ด๋์ด์ด๋ค
๊ฐ๋จํ๊ฒ ๋งํ์๋ฉด ๋ถ๋ฅ, ํ๊ท์ ์ฌ์ฉํ๋ ์ค์ฐจ๋ฅผ ํฉ์ณ์ ํ๋์ Loss๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค
Multi-task Loss์ ๊ตฌ์กฐ
๋ถ๋ฅ ์์ค $L_{cls}$ ๊ณผ ํ๊ท ์์ค $L_{loc}$ ์ ๊ฒฐํฉ

์ด ์์ค ํจ์๋ ๋ค์๊ณผ ๊ฐ์ด ์๋ํ๋ค
- $L_{cls}$ (๋ถ๋ฅ ์์ค): RoI๊ฐ ์ด๋ค ๋ฌผ์ฒด(ํน์ ๋ฐฐ๊ฒฝ)์ธ์ง ๋ถ๋ฅ (Log Loss ์ฌ์ฉ)
- $L_{loc}$ (ํ๊ท ์์ค): RoI์ ์ขํ๋ฅผ ์ ๋ต($v$)์ ๊ฐ๊น๊ฒ ์กฐ์ (Smooth L1 Loss ์ฌ์ฉ)
- $[u \ge 1]$ (๋ฐฐ๊ฒฝ ์ ์ธ): $\text{RoI}$๊ฐ ๋ฐฐ๊ฒฝ ํด๋์ค($u=0$)์ผ ๊ฒฝ์ฐ, ๋ฐ์ด๋ฉ ๋ฐ์ค๋ฅผ ์กฐ์ ํ ํ์๊ฐ ์์ผ๋ฏ๋ก $\text{L}_{loc}$์ ๊ณ์ฐ์ ์๋ต(๋ฌด์)ํ๋ค
์ด๋ฌํ Multi-task Loss ๊ตฌ์กฐ๋ฅผ ํตํด, ๋ถ๋ฅ์ ํ๊ท์์ ๋ฐ์ํ ์ค์ฐจ(Gradient)๊ฐ ํ๋์ RoI Pooling ๋ ์ด์ด๋ฅผ ๊ฑฐ์ณ CNN์ ๊ฐ์ค์น๋ก ๋์์ ์ ๋ฌ๋๋ค
์ด๋ก์จ CNN์ "๋ถ๋ฅ์๋ ์ข๊ณ , ์์น ์กฐ์ ์๋ ์ข์" ํน์ง์ ์ถ์ถํ๋๋ก ํตํฉ์ ์ผ๋ก ์ต์ ํ๋๋ค
Smooth L1 Loss
์ L1๋ L2๋ ์๋ Smooth L1 Loss ๋ฅผ ์ฌ์ฉํ์๊น?

๊ฐ๋จํ๊ฒ ๋ฆฌ๋ง์ธ๋๋ฅผ ํ๊ณ ๊ฐ์๋ฉด
L1 Loss๋ ์ค์ ๊ฐ๊ณผ ์์ธก๊ฐ ์ค์ฐจ์ ์ ๋๊ฐ์ ์ฌ์ฉํ๋ฉฐ, ์ผ์ฐจ์์ด์ฌ์ ์ด์์น์ ์ํฅ์ด ๋ํ์ง๋ง V ํํ๋ก ๋ฏธ๋ถ๋ถ๊ฐ๋ฅํ ์ง์ ์ด ์๋ค๋ ํน์ง์ด ์กด์ฌํ๋ค
L2 Loss๋ ์ค์ ๊ฐ๊ณผ ์์ธก๊ฐ ์ค์ฐจ์ ์ ๊ณฑ์ ์ฌ์ฉํ๋ฉฐ, ๋ชจ๋ ๊ตฌ๊ฐ์์ ๋ฏธ๋ถ ๊ฐ๋ฅํ์ง๋ง ์ด์์น์ ๋ฏผ๊ฐํ๋ค๋ ํน์ง์ด ์กด์ฌํ๋ค
- Smooth L1 Loss๋ R-CNN ๋ฐ SPPnet์์ ์ฌ์ฉ๋ L2 Loss๋ณด๋ค ์ด์์น(Outliers)์ ๋ ๋ฏผ๊ฐํ๊ณ ๋ก๋ฒ์คํธ(Robust)ํ L1 ์์ค์ด๋ค
- |x| < 1 ์ด๋ฉด L2 Loss๋ฅผ, ๊ทธ ์ธ์๋ L1 Loss๋ฅผ ์ฌ์ฉํ๋ค
- ํ๊ท ํ๊ฒ์ด ๋ฌดํ์ ์ปค์ง ์ ์์ ๋, L2 Loss๋ก ํ์ตํ๋ฉด ๊ธฐ์ธ๊ธฐ ํญ๋ฐ(Exploding gradients) ์ ๋ง๊ธฐ ์ํด ํ์ต๋ฅ ์ ์ ์คํ๊ฒ ์กฐ์ ํด์ผ ํ๋๋ฐ Smooth L1์ ์ด๋ฌํ ๋ฏผ๊ฐ๋๋ฅผ ์ ๊ฑฐํ๋ค

๊ฒฐ๋ก : Smooth L1 Loss๋ ์ค์ฐจ๊ฐ ์์ ์์ญ์์๋ L2์ ์ฅ์ (๋ถ๋๋ฌ์ด ๋ฏธ๋ถ)์ ์ทจํ๊ณ , ์ค์ฐจ๊ฐ ํฐ ์์ญ์์๋ L1์ ์ฅ์ (์ผ์ ํ ๊ธฐ์ธ๊ธฐ)์ ์ทจํจ์ผ๋ก์จ, ํ๊ท ๋ชจ๋ธ์ ์ด๊ธฐ ์ค์ฐจ๊ฐ ํฌ๋๋ผ๋ CNN์ ๊ฐ์ค์น๊ฐ ๊ณผ๋ํ๊ฒ ํ๋ค๋ฆฌ๊ฑฐ๋ ํญ๋ฐํ๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ ํตํฉ๋ End-to-End ํ์ต ํ์ดํ๋ผ์ธ์ ์์ ์ฑ์ ๋ณด์ฅํ๋ค
Fast R-CNN์ด End-to-End ํ์ต์ ๋์ ํ๋ฉด์, ๊ฒฝ๊ณ ์์ ํ๊ท ๋ชจ๋ธ($L_{loc}$)์์ ๋ฐ์ํ ์ค์ฐจ์ ๊ธฐ์ธ๊ธฐ๊ฐ RoI Pooling์ ๊ฑฐ์ณ CNN์ ๋ชจ๋ ๊ฐ์ค์น์๊น์ง ์ง์ ์ ๋ฌ๋๋๋ฐ, ์ด ๊ณผ์ ์์ ํ์ต์ ์์ ์ฑ์ ํ๋ณดํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํด์ก๋ค
Smooth L1 Loss vs Huber Loss
์ผ๋ฐ์ ์ธ ํ๊ท (regression) ํ๋ จ์๋ ์์ธก๊ฐ๊ณผ ์ค์ ๊ฐ ์ฐจ์ด์ ์ ๋๊ฐ์ธ L1 loss๋ ์์ธก๊ฐ๊ณผ ์ค์ ๊ฐ ์ฐจ์ด์ ์ ๊ณฑ์ธ L2 loss๋ฅผ ๋ชฉ์ ํจ์๋ก ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ์ ์๋ ค์ ธ ์๋ค์ํผ L2 loss๋ ๋ชจ๋ ๊ตฌ๊ฐ์์
hongl.tistory.com
์ฌ๊ธฐ์ Loss ํจ์ ์ค๋ช ์ ๋์ด์๋ค
https://woochan-autobiography.tistory.com/920#7.%20Fast%20RCNN%EC%9D%98%20Loss%20Function
CV - Fast RCNN
๐ ์ด ๊ธ์ ๊ถ์ฒ ๋ฏผ๋์ ๋ฅ๋ฌ๋ ์ปดํจํฐ ๋น์ ์๋ฒฝ ๊ฐ์ด๋ ๊ฐ์๋ฅผ ๋ฐํ์ผ๋ก ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ๋ชฉ์ฐจ SPPNet์ ํ๊ณ Fast RCNN๊ณผ SPPNet์ ์ฐจ์ด Fast RCNN ROI Pooling Softmax Fast RCNN์ ๊ตฌ์กฐ Fast RCNN์ Loss function
woochan-autobiography.tistory.com
์์ 2๊ฐ์ง ๋ฉ์ธ ์์ด๋์ด ์ธ์๋ ์ฐ์ฐ๋์ด ๋ง์ FC ๋ ์ด์ด๋ฅผ ํน์ด๊ฐ ๋ถํด (Truncated SVD) ๋ฅผ ํตํด ์์ ํ์ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋จ์ถ์ํจ ๋ฐฉ๋ฒ๋ ์กด์ฌํ์ง๋ง ์ฌํ๊ฒ๋ ํน์ด๊ฐ ๋ถํด๋ฅผ ์ ๋๋ก ์ดํดํ์ง ๋ชปํด์ ์ ๋ฆฌํ์ง ๋ชปํ๋ค
๊ฐ๋จํ๊ฒ ์ค๋ช ์ถ๊ฐํ์๋ฉด ํ๋์ FC ๋ ์ด์ด์์ ๊ฐ์ค์น ํ๋ ฌ, W๋ฅผ ํน์ด๊ฐ ๋ถํดํ์ฌ ๋ ๊ฐ์ ๊ฐ์ค์น ํ๋ ฌ๋ก ๋ง๋ ๋ค
์ฆ, ํ๋์ ํฌ๊ณ ๋ฌด๊ฑฐ์ด FC ๋ ์ด์ด๋ฅผ ๋ ๊ฐ์ ์๊ณ ๊ฐ๋ฒผ์ด ๋ ์ด์ด๋ก ๋ถํดํ๋ ๊ฒ์ด๋ค
์ ํ๋์๋ ๊ฐ์ด ์ด์ฌํ ๊ณต๋ถํ๊ธฐ...
https://holamundo.tistory.com/entry/prerequisite-Fast-R-CNN-Truncated-SVD
(prerequisite-Fast R-CNN) Truncated SVD
SVD(Singular Value Decomposition) HTML ์ฝ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋ ์์ค It is decomposed the matrix into three matrices when A is an m × n matrix. Each of the three matrices meets the following conditions. HTML ์ฝ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋
holamundo.tistory.com
์ด์ ์ง๊ธ๊น์ง์ ๋ด์ฉ๋ค์ ์ดํดํ๊ณ ์ ์๋์ ๊ตฌ์กฐ ๋น๊ต๋ฅผ ๋ณด๋ฉด ๋ ์ ์ดํด๋ ๊ฒ์ด๋ค

์์ง ํด๊ฒฐํด์ผํ ๋ฌธ์ ๋ค
Fast R-CNN์ ์ด์ ์ ์ฌ๋ฌ ๋ฌธ์ ์ ๋ค์ ๊ฐ์ ํ์ผ๋ ์ฌ์ ํ ์๋๊ฐ ๋๋ฆฐ ๋ณ๋ชฉ ์ง์ ์ด ์กด์ฌํ๋ฉฐ ์์ง ์๋ฒฝํ End-to-end ๋ชจ๋ธ์ด๋ผ๊ณ ํ ์ ์๋ค
๋ฐ๋ก Region Proposal, RoI(Region of Interest)๋ฅผ ์ถ์ถํ๋ ๋จ๊ณ๋ฅผ Selective Search๋ผ๋ CPU ๊ธฐ๋ฐ์ ์ธ๋ถ ์๊ณ ๋ฆฌ์ฆ์ ์์กดํ๋ค๋ ์ ์ด๋ค
Selective Search๋ ์ด๋ฏธ์ง ํ ์ฅ๋น RoI๋ฅผ ์์ฑํ๋ ๋ฐ ์ฝ 2์ด์ ์๊ฐ์ด ์์๋๋ค
๋คํธ์ํฌ ๋ด๋ถ ์ฐ์ฐ (CNN ํผ์ณ ์ถ์ถ ๋ฐ ๋ถ๋ฅ, ํ๊ท) ์ด 0.32์ด์ ๋ถ๊ณผํด๋, ์ ์ฒด ์์คํ ์ 2์ด ์ด์์ ๊ธฐ๋ค๋ ค์ผ ํ๊ธฐ ๋๋ฌธ์ ์ง์ ํ ์๋ฏธ์ ์ค์๊ฐ ํ์ง(Real-time Detection) ๋ถ๊ฐ๋ฅํ์๋ค
๋ฐ๋ผ์ ํ์ง ํ์ดํ๋ผ์ธ์ ๋ชจ๋ ์ฐ์ฐ์ ์ ๊ฒฝ๋ง๊ณผ GPU ๋ด๋ถ์์ ์ฒ๋ฆฌํด์ผ ํ๋ค๋ ํด๊ฒฐํด์ผํ ๋ฌธ์ ์ , ์ด ๋ง์ง๋ง ๋ณ๋ชฉ(Selective Search)์ ์ ๊ฑฐํ๊ณ , ๊ฐ์ฒด ์ ์(Proposal) ๋จ๊ณ๋ฅผ RPN(Region Proposal Network) ์ด๋ผ๋ ๋คํธ์ํฌ๋ก ๋ณํฉํ ๋ชจ๋ธ์ด ๋ค์ ๋ชจ๋ธ์ธ Faster R-CNN์ด๋ค
์ด์ ์ R-CNN, SPPNet ๊น์ง๋ ์ฃผ์ ๋ด์ฉ๋ค๊น์ง๋ง ์ด๋ก ์ ์ผ๋ก ์ผ์ถ ์ดํด๋ฅผ ์กฐ๊ธ ํ ๊ฒ ๊ฐ์ผ๋ฉด์๋ ์ฌ์ ํ ์ฝ๋๋ ์ค์ ๊ตฌํ๊น์ง ๋ฐ๋ผ๊ฐ๋๊ฒ ์ ๋ง ์ด๋ ต๋ค... ์ด๋ก ์ ์ผ๋ก๋ ์ํ๊ณผ ์ฌ๋ฌ ๊ฐ๋ ๋ค ๋ฑ ํ๊ณ ๋ค ๋ถ๋ถ์ด ๋๋ฌด๋๋ ๋ง๋ค
https://herbwood.tistory.com/9
Pytorch๋ก ๊ตฌํํ Fast R-CNN ๋ชจ๋ธ
์ด๋ฒ ํฌ์คํ ์์๋ gary1346aa๋์ github repository์ ์ฌ๋ผ์จ pytorch๋ก ๊ตฌํํ Fast R-CNN ์ฝ๋๋ฅผ ๋ถ์ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. jupyter notebook์ผ๋ก ์์ฑ๋์ด ์์ด ์ฝ๋๋ฅผ ์๋์ ์ผ๋ก ์ฝ๊ธฐ๊ฐ ํธํ๋ ๊ฒ ๊ฐ์ต๋
herbwood.tistory.com
๊ทธ๋๋ ์๋ฃ๋ AI ๋์ ๋ฐ์์ ์ต๋ํ ์ดํด๊ฐ ์๊ฐ๋ ๋ถ๋ถ๋ค ์ฐพ์์ ์กฐ๊ธ์ฉ ์ฑ์๋ด์ผ๊ฒ ๋ค
Faster R-CNN๊ณผ ๊ฐ์ด ์ ๋ฆฌํด๋ณด๋ ค ํ์ผ๋ Faster R-CNN์ ๊ฐ๋ฉด์ ๋ญ๊ฐ ๋ด์ฉ์ด ๋ ์ด๋ ค์์ง๊ณ ํ ๋์ด์ง ๋๋...
์ต๋ํ ๊ธ๋ก ์ ์ ๋ฆฌํด๋ณด๊ณ ์ถ์๋ฐ ์ดํด ๊ฐ๋ฅํ ๋ถ๋ถ๋ค๋ถํฐ ๊พธ์คํ ์ ๋ฆฌํด๋ด์ผ๊ฒ ๋ค
'AI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Object Detection] R-CNN ์ดํด๋ณด๊ธฐ (+SPPNet) (0) | 2025.11.27 |
|---|---|
| ํ ์คํธ feature vector ์ดํด๋ณด๊ธฐ (0) | 2025.10.29 |
| ํ ์คํธ ๋ถ๋ฅ - Hard Example Mining (0) | 2025.10.28 |
| VGGNet (ICLR 2015) ์์ฝ ๋ฐ ๋ฆฌ๋ทฐ (0) | 2024.01.29 |