ํต์ฌ ์์ด๋์ด
Feature Extraction, classification, bounding box regression๊น์ง ํ๋ฒ์ ํ์ตํ ์ ์๋ ๋ชจ๋ธ์ ๋ง๋ค์!
Fast R-CNN์ ์ด์ SSP Net์ด ๊ฐ์ง๋ ํ๊ณ์ ์ ๊ทน๋ณตํ๋ ์๋์์ ์ถ๋ฐํ๋ค. SSP Net์ 1) Multi stage model์ด๊ณ 2) FC layer ๋ง ํ์ต ์ํฌ ์ ์๋ค๋ ํ๊ณ์ ์ด ์์๋ค.
์๊ณ ๋ฆฌ์ฆ
- pretrained model๋ก ๋ถํฐ feature map์ ์ถ์ถํ๋ค.
- Selective Search๋ฅผ ํตํด ์ฐพ์ ๊ฐ๊ฐ์ ROI์ ๋ํด *ROI Pooling์ ์งํํ๋ค. ๊ทธ ๊ฒฐ๊ณผ๋ก ๊ณ ์ ๋ ํฌ๊ธฐ์ feature vector๋ฅผ ์ป๋๋ค.
- feature vector๋ FC layer๋ฅผ ํต๊ณผํ๊ณ ๋๊ฐ์ branch๋ก ๋๋๋ค.
- ํ๋์ branch์์๋ softmax๋ฅผ ํต๊ณผํ์ฌ ํด๋น ROI๊ฐ ์ด๋ค ๋ฌผ์ฒด์ธ์ง clasification์ ์งํํ๋ค.
- ๋ค๋ฅธ branch์์๋ bounding box regression์ ํตํด selective search๋ก ์ฐพ์ ๋ฐ์ค์ ์์น๋ฅผ ์กฐ์ ํ๋ค.
ํต์ฌ ์์๋ multi stage model์์ end-to-end๋ก model์ ๊ตฌ์ฑํ๋ค๋ ๊ฒ์ ์๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก๋ ์๋, ์ ํ๋, ํ์ต ์๋ ๋ชจ๋๋ฅผ ํฅ์์์ผฐ๋ค๋๋ฐ ์์๊ฐ ์๋ค.
ROI polling
Roi pooling์ ์์ด๋์ด๋ ์์ ๋ณด์๋ SPP Net๊ณผ ์ ์ฌํ๋ค. SPP Net์, pretrained model์ผ๋ก ๋ถํฐ ๋์ถ๋๋ feature map์ผ๋ก ๋ถํฐ, ํผ๋ผ๋ฏธ๋ filter๋ฅผ ๊ฑฐ์น ํ ์ด๋ฅผ vectorize ํ์ฌ ๊ณ ์ ๋ ๊ฐ์์ vector๋ฅผ ์ป์ ์ ์์๋ค. ์ด ์์ด๋์ด๋ฅผ ์กฐ๊ธ ๋ณ๊ฒฝํ์ฌ ์ ์ํ๋ ๊ฒ์ด Roi pooling์ด๋ค.
- feature map์์ Selective search๋ฅผ ํตํด Resion Proposal์ ์งํํ๋ค.
- ์ด proposal์ Roi pooling์ ์งํํ์ฌ ๊ณ ์ ๋ ํํ์ ์์ feature map์ ๋ง๋ ๋ค.
Roi pooling์, Resion Proposal์ ๊ณ ์ ๋ ํํ์ output ๋ชจ์์ผ๋ก ๋ฐ๊พผ๋ค. (H x W) ํฌ๊ธฐ์ feature map์ output์ผ๋ก ์ํ๋ค๋ฉด, proposal์ ์ด์ ๋ง๊ฒ ์นธ์ ๋๋ ํ, max pooling์ ์งํํ๋ค. ์ด๋ ๊ฒ ๋๋ฉด ํญ์ ๊ฐ์ ํฌ๊ธฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
Multi Task Loss
๋ฅ๋ฌ๋์ ๊ณต๋ถํ๋ฉด์ ๊ฐ์ฅ ์๋กญ๊ณ ์ฆ๊ฑฐ์ ๋ ๋ถ๋ถ์ ์์คํจ์ ๋ถ๋ถ์ด์๋ค. object detection์ ๊ธฐ๋ณธ์ ์ผ๋ก bounding box regression๊ณผ classication์ ๋์์ ์งํํด์ผ ํ๋ Task์ด๋ค. ๊ทธ๋์ ์์ ์ ๊ทผ์ multi stage๋ก ์ด๋ฃจ์ด์ก์๋ค. ํ์ง๋ง ์ด Fast R-CNN์์ ์ฒ์์ผ๋ก ์ด ๋๊ฐ์ง task๋ฅผ ํ๋๋ก ์ฎ๋ ๋ฐฉ๋ฒ์ด ๊ณ ์๋๋ค.
์ฐ๋ฆฌ๋ ์ด๋ฏธ์ง๋ก ๋ถํฐ feature map์ ์ถ์ถํ๊ณ , ์ด feature map์์ Roi๋ฅผ ์ ์ ๋ฐ์ Roi pooling์ ํตํด feature vector๋ฅผ ๋ง๋ค์๋ค. ์ด์ ์ด ๋ฒกํฐ๋ก classification๊ณผ bounding box regression์ ์ ์ฉํ์ฌ ๊ฐ๊ฐ์ loss๋ฅผ ์ป์ด๋ด๊ณ , ์ด๋ฅผ back propagationํ์ฌ ์ ์ฒด ๋ชจ๋ธ์ ํ์ต์ํค๋ฉด ๋๋ค. ์ด ๋ Task ๋ชจ๋๋ฅผ ๋ฐ์ํ ์์คํจ์๋ฅผ ๋ณด์.
L(p, u, t^u, v) = L\_{cls}(p, u) + \lambda\[u \ge 1\]L\_{loc}(t^u, v)๊ฐ ๋ณ์ ํ๋ํ๋์ ๋ํด์ ์์๋ณด์. ๋จผ์ , ๋, Softmax๋ฅผ ํตํด ์ป์ด๋ธ ๊ฐ์ ํ๋ฅ ๊ฐ์ด๋ค.(์ด์ฐ ํ๋ฅ ๋ถํฌ) ์ธ ์ด์ ๋ K๊ฐ์ object์ ๋ฐฐ๊ฒฝ(์๋ฌด ๋ฌผ์ฒด๋ ์๋)์ ์ถ๊ฐํ ๊ฒ์ด๋ค. ๋ ํด๋น Roi์ ground truth label ๋ฒกํฐ์ด๋ค.
๋ค์์ผ๋ก๋ bounding box regression์ ์งํํ๋ค. ๊ณ ์ ์ฒ๋ฆฌ๋ feature map์ ๊ฐ์ง๊ณ regression์ ํ์ ๋ ๊ฒฐ๊ณผ๋, ๊ฐ๊ฐ์ class (K + 1) ์ ๋ํด ๊ฐ๊ฐ x, y, w, h๋ฅผ ์กฐ์ ํ๋ ํ๋ผ๋ฏธํฐ ๋ฅผ ๋ฆฌํดํ๋ค. ๋ง๋ก ํ์ด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. feature map์ผ๋ก ๋ถํฐ 1๋ฒ ํด๋์ค ์ผ ๋ (x, y, w, h)๋ฅผ (, , , ) ๋ก ๋ณํ์์ผ. 2๋ฒ ํด๋์ค ์ผ๋๋ โฆ(์ค๋ต). ์ด ์ค์์ ์ฐ๋ฆฌ๊ฐ ํ๊ณ ์ถ์ ๊ฒ์, ์ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ์ด๋ฅผ ์์ ํ๋ loss function์ ๋ง๋ค๊ณ ์ถ์ ๊ฒ์ด๋ฏ๋ก ์ด ๊ฒฐ๊ณผ๋ค ์ค ground truth์ ์ํ๋ u๋ฒ์งธ t๋ง ๊ฐ์ ธ์์ ์ฌ์ฉํ๋ค. ๋ ground truth bounding box ์กฐ์ ๊ฐ์ ํด๋นํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด์ ๊ฐ๊ฐ์ loss function์ ๋ํด์ ์์๋ณด์. ๋จผ์ classification loss ๋ log loss๋ฅผ ์ฌ์ฉํ๋ค. ๋ชป๋ง์ถ ์๋ก ํจ๋ํฐ๋ฅผ ํฌ๊ฒ ์ค๋ค.
location
์ ๋ด๋นํ๋ loss๋ ์๋์ ๊ฐ๋ค.
bounding box๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์์ธก ์กฐ์ ๊ฐ์์ ์ค์ ์กฐ์ ๊ฐ์ smooth L1์ ํต๊ณผ์ํจ ๊ฒ์ ํฉ์ ์ฌ์ฉํ๋ค.
smooth\_{L_1}(x) = \\begin{cases} 0.5x^2 & \mbox {if }\left| x \right| \< 1 \mbox{ is even} \\ \\left| x \right|-0.5 & otherwise \\end{cases}์ ์๋ค์ ์คํ ๊ณผ์ ์์ ๋ผ๋ฒจ ๊ฐ๊ณผ ์ง๋์น๊ฒ ์ฐจ์ด๊ฐ ๋ง์ด ๋๋ outlier
๊ฐ ๋ง์๊ณ , ์ด๋ฐ outlier
์ ๋ฏผ๊ฐํ๊ฒ ๋ฐ์ํ๋ L2 loss๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ gradient explode
ํ์์ด ๋ฐ์ํ๋ ๊ฒ์ ํ์ธํ๋ค๊ณ ํ๋ค. ์ด๋ฅผ ์ ์ดํ๊ธฐ ์ํด customํ loss function์ ์ฌ์ฉํ๋ค.
Backpropagation through RoI Pooling Layer
์ด์ ๋คํธ์ํฌ๋ฅผ ํ์ตํ๋ฉด ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด์ ์ SSP Net์ ๋ณด๋ฉด, feature map
์ ๋ฝ์๋ธ ํ, SSP๋ฅผ ๊ฑฐ์ณ ๋์จ vector๋ค์ ๋ํด FC layer๋ฅผ ๊ตฌ์ฑํ๊ณ , ์ด ๋จ๊ณ๋ง ํ์ต์์ผฐ๋ ๊ฒ์ ๊ธฐ์ตํ ๊ฑฐ๋ค.(fine tuning) ์ ๋
ผ๋ฌธ์์ ์ ์๋ค์, ์ด๋ฏธ์ง์ ํน์ง์ ์ถ์ถํ๋ ๊ฐ์ฅ ์ค์ํ ์ญํ ์ธ CNN์ด ํ์ต๋ ์ ์๋ค๋ ๊ฒ์ ์ง์คํ๋ค. ์ฆ, ์ด๋ ๋จ๊ณ๊น์ง fine tuning์ ์งํํ ๊ฒ์ธ์ง, ๋ ๊ทธ fine funing์ ์งํํ ๊ฒฝ์ฐ ํ์ต์ด ์งํ์ด ๋๋์ง(์ญ์ ํ๊ฐ ์ ๋ฌ์ด ๋๋์ง)๋ฅผ ์ด๋ก ์ ์ผ๋ก ๊ฒ์ฆํ๋ค.
๋ผ๊ณ ํ๋ ๊ฒ์ CNN์ ํตํด ์ถ์ถ๋ feature map
์์ ํ๋์ feature
๋ฅผ ์๋ฏธํ๊ณ ์ด๋ ์ค์์ด๋ค. ์ ์ฒด Loss์ ๋ํด์ ์ด ํผ์ณ ๊ฐ์ ํธ๋ฏธ๋ถ ๊ฐ์ ๊ตฌํ๋ฉด ๊ทธ ๊ฐ์ด ๊ณง xi์ ๋ํ loss ๊ฐ์ด ๋๋ฉฐ ์ญ์ ํ ์๊ณ ๋ฆฌ์ฆ์ ์ํํ ์ ์๋ค. ์ด์ ํผ์ณ ๋งต์์ RoI๋ฅผ ์ฐพ๊ณ RoI Pooling
์ ์ ์ฉํ๊ธฐ ์ํด์ H x W
ํฌ๊ธฐ์ grid๋ก ๋๋๋ค. ์ด ๊ทธ๋ฆฌ๋๋ค์ sub-window
๋ผ ๋ถ๋ฅด๋ฉฐ, ์ ์์์์ j
๋ ๋ช๋ฒ์งธ sub-window
์ธ์ง๋ฅผ ๋ํ๋ด๋ ์ธ๋ฑ์ค์ด๋ค. ๋ ์ด Roi Pooling
์ ํต๊ณผํ์ฌ ์ต์ข
์ ์ผ๋ก ์ป์ด์ง ouput์ ๊ฐ์ด๋ฉฐ ์ด ์ญ์ ์ค์์ด๋ค.
๊ฐ ์ต์ข
prediction
๊ฐ์ ์ํฅ์ ์ฃผ๋ ค๋ฉด ๊ฐ ์ํ๋ ๋ชจ๋ Roi
์ sub-window
์์ ํด๋น ๊ฐ ์ต๋๊ฐ์ด ๋์ผ ํ๋ค. ๋ Roi
์ sub-window index j
๊ฐ ์ฃผ์ด์ก์ ๋, ์ต๋ ํผ์ณ ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ๋งํ๋ค.
์ฆ ์์์ ๋ณด๋ฉด \[i = i^\*(r, j)\] ์ด๋ ๊ฒ ํํ๋์ด ์๋๋ฐ, ์ต๋ ํจ์ณ ์ธ๋ฑ์ค๊ฐ ๋ด๊ฐ ๊ตฌํ๊ธธ ์ํ๋ ํผ์ณ์ ๊ฐ์ ๋๋ 1์ return, ์๋๋ฉด 0 ์ return ํ๋ผ๋ ์๋ฏธ์ด๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ์ด ๊ฐ์ ๊ฐ์ง๊ณ ์๊ณ , ๋ฐ์ํ๋ ๋ชจ๋ ์ด ๊ฐ์ ๋ํด์ ์ ์ฉ์์ผ์ฃผ๋ฉด ์ ๋ํ gradient
๋ฅผ ๊ตฌํ ์ ์๋ค.
์ข ํฉํ๋ฉด, ์ฐ๋ฆฌ๋ ์์ ๊ตฌํ multitask loss๋ฅผ RoI Pooling layer๋ฅผ ํต๊ณผํ์ฌ CNN ๋จ๊น์ง fine-tuning ํ ์ ์๋ค. ์ ์๋์ ์คํ์ ํตํด์ ์ค์ ๋ก CNN๋จ ๊น์ง fine tuning ํ๋ ๊ฒ์ด ์ฑ๋ฅ ํฅ์์ ๋์์ด ๋์๋ค๋ ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋ค.
์ ์คํ ๊ฒฐ๊ณผ๋ fine-tuning ํ๋ ๊น์ด๋ฅผ ์กฐ์ ํด๊ฐ๋ฉฐ ์ฑ๋ฅ ๋ณํ๋ฅผ ์คํํ ๊ฒ์ด๋ค. CNN์ ๋จ์ ๊น์ด ํ์ต์ํฌ ์๋ก ์ฑ๋ฅ์ด ํฅ์๋์์ผ๋ฉฐ, ์ด ๋ ํ ์คํธ์ ์์๋๋ ์๊ฐ ๋ณํ๋ ๊ฑฐ์ ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์ฆ, CNN ๋จ์ Object Detection์ ๋ง๊ฒ๋ fine-tuning ํ๋ ๊ฒ์ด ์ฑ๋ฅ ํฅ์์ ํค ํฌ์ธํธ์๋ค.
์์
end-to-end
๋ชจ๋ธ ์ ์- ํ์ต ๋จ๊ณ ๊ฐ์ํ
- ์ ํ๋, ์ฑ๋ฅ ๊ฐ์
ํ๊ณ
- region proposal์ selective search๋ฅผ ์ฌ์ฉ
- ์ด๋ CPU ์ฐ์ฐ์ผ๋ก๋ง ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋ณ๋ชฉ์ด ๋ฐ์
- ์ด ๋ถ๋ถ์ด inference๋ฅผ ์ํํ๋๋ฐ ์์ด ๊ฐ์ฅ ๋ง์ ์๊ฐ์ ์ฐจ์งํจ