Fast R-CNN notable drawback
- Fast rcnn์ Selective Search๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์ํ๋์๊ธฐ ๋๋ฌธ์ bottleneck์ด ๋ฐ์ํ์์ต๋๋ค.(region proposal์ CPU์ฐ์ฐ์ด๊ณ region-based CNN์ GPU ์ฐ์ฐ)
- ๊ทธ๋์ detection ๋คํธ์ํฌ์ ์ฑ๋ฅ์ ์๋ฌด๋ฆฌ ๊ฐ์ ์์ผ ๋ดค์ Selective Search, region proposals์ ์๊ฐ์ ๊ทธ๋๋ก ์ถ๊ฐ๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์๋๋ฅผ ๊ฐ์ ์ํค์ง ๋ชปํ๋ค๋ ๋จ์ ์ด ์์์ต๋๋ค.
์ค์๊ฐ ์ถ๋ก ์ ๋ชฉํ๋ก ์ ์ ํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋น ๋ฅธ ์ถ๋ก ์ด ๊ฐ๋ฅํ๋ค
1. Faster R-CNN: RPN + Fast R-CNN
๊ทธ๋์ faster rcnn์ Cpu์์ ์งํ๋๋ Selective search์ ๋ฐฉ์์ด ์๋ Region proposal ์์ฑํ๋ ๋คํธ์ํฌ๋ gpu์ ๋ฃ๊ธฐ ์ํด Conv layer์์ Region proposal์ ์์ฑ์ํค๋ ๊ตฌ์กฐ๋ก ๋ณ๊ฒฝํ์์ต๋๋ค.
- Region proposal: selective search(CPU) -> RPN(GPU)
- proposal ๋จ๊ณ์์ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ํฌ๊ฒ ๋จ์ถ
RPN shares Convolutional layer with Detection Network
- fully convolutional network (FCN)
- end-to-end
- Cpu์์ ์งํ๋๋ Selective search์ ๋ฐฉ์์ด ์๋ Region proposal ์์ฑํ๋ ๋คํธ์ํฌ๋ gpu์ ๋ฃ๊ธฐ ์ํด Conv layer์์ Region proposal์ ์์ฑ์ํค๋ ๊ตฌ์กฐ๋ก ๋ณ๊ฒฝํ์์ต๋๋ค.
- Fast R-CNN๊ตฌ์กฐ์์ conv feature map๊ณผ RoI Pooling์ฌ์ด์ RoI๋ฅผ ์์ฑํ๋ Region Proposal Network๊ฐ ์ถ๊ฐ๋ ๊ตฌ์กฐ๋ก
- RPN์ Detection Network์ Convolutional layer๋ฅผ ๊ณต์ ํ๋ ํ๋์ ๋คํธ์ํฌ๋ก ์ผ์ข ์ fully convolutional network (FCN)์ ๋๋ค.
- ์ฆ, region proposal ์์ฑ์ end-to-end๋ก ํ์ต ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
RPN ์ attention ๋ชจ๋๊ณผ ๊ฐ์ด fast RCNN์ด ๋ด์ผํ ๊ณณ์ ์ ์
์ด๋ฅผ ํตํด fast RCNN์ ์ ์ํ ๊ณณ์์ detectionํด์ค๋ค.
2. Architecture
Module
- RPN: region proposal ์ ์ถ์ถํ๋ deep fully convolutional network
- Fast R-CNN detector: ์์ ์ถ์ถํ region proposal ์ ์ฌ์ฉํด object detection
2.1. RPN
- anchor boxes ์ด์ฉ(various proportions)- sliding window
- Image -> conv feature map -> sliding window
RPN์ region proposal์ ๋ฝ์๋ด๋ network์ ๋๋ค. ๋ค์ํ ํฌ๊ธฐ์ ๋น์จ์ ๊ฐ์ง๋ "anchor" boxes๋ฅผ ์ด์ฉํ๋๋ฐ, ์ด๋ image์์ conv feature map์ ๋ฝ์๋ธ ๋ค, ํด๋น map์์ sliding window ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ filter๋ผ๊ณ ๋ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋์ filter๊ฐ ์ฌ๋ฌ ๊ฐ์ anchor boxes๋ก ๋ณํํ๊ฒ ๋ฉ๋๋ค
๊ทธ ํ ์ด feature์ 2๊ฐ์ง ๋ถ๊ธฐ๋ก ๋๋๊ฒ ๋ฉ๋๋ค.
- 1. ๊ฐ proposal๋ค์ด ๋ฌผ์ฒด์ธ์ง ์๋์ง ์ ์๋ฅผ ๋งค๊ธฐ๋ ๋ถ๋ถ(์ผ์ชฝ)์ด๋ฉฐ
- 2. ๊ฐ proposal๋ค์ ์์น๋ฅผ regressionํ๋ ๋ถ๋ถ(์ค๋ฅธ์ชฝ)์ ๋๋ค.
์ฌ๊ธฐ์ k๋ ํ๋์ sliding window์์ ๋์ค๋ anchor box์ ๊ฐ์์ ๋๋ค. (๋ณธ ๋ ผ๋ฌธ์์๋ k๋ฅผ 9๋ก ์ค์ ํ์ต๋๋ค.)
2.2 Anchor: Translation-Invariant Anchors
- Anchors: scale(128, 256, 512), ratio(1:1, 1:2, 2:1)
- k(9) = scale(3) * ratio(3)
(* multibox์ ๊ฒฝ์ฐ k-means ๋ฐฉ์์ ์ฌ์ฉ-> non-translation Invariant)
๊ฐ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ์ ์ค์(๋นจ๊ฐ ์ )์ผ๋ก๋ถํฐ ๋ค์ํ ํฌ๊ธฐ(128, 256, 512)์ ๊ฐ๋ก์ธ๋ก๋น(1:1, 1:2, 2:1)๋ฅผ ๊ฐ๋ anchor box๋ฅผ 9๊ฐ ์์ฑํ๋ค.
๋ณธ ๋ ผ๋ฌธ์์๋ 60*40์ ํฌ๊ธฐ๋ก *9ํ๋ฉด 2๋ง๊ฐ์ ๋์ ๋ฌด์ํ ์ต์ปค๋ฐ์ค๊ฐ ์์ฑ๋๋๋ฐ, ์ด๋ฏธ์ง ์์ object๊ฐ ์์ง์ธ๋ค๋ฉด proposal๋ ์์ง์ด๊ณ ์์ธก๊น์งํ ์ ์์ด์ผํ๋ค.
- Anchor: binary label(object)
- ground-truth(์ค์ object ์์น)์์ IoU๋ฅผ ํตํด anchor์ label๋ฅผ ๋ถ์ฌํจ
- positive: IoU > 0.7
- negative: IoU < 0.3
- ๋ค์ํ ํฌ๊ธฐ์ object detection ๊ฐ๋ฅ, ์๊ฐ ๋จ์ถ
2.2 RPN ๋์
- ์งง์ ๋ถ๋ถ์ด 600pixel์ ๊ฐ๋๋ก 600 by 1000 3์ฑ๋๋ก ๋ฐ์ ํ pre-trained VGG16 ๋ชจ๋ธ์ ํตํด 16์ผ๋ก ๋๋ 40 by 60 512์ฑ๋์ feature map์ ์ ๋ฌ ๋ฐ์ RPN์ ์ ๋ ฅํ๋ค.
- 3 by 3 sliding window์ anchor boxes๋ฅผ ์ฌ์ฉํ convolutional ์ฐ์ฐ์ผ๋ก feature map ์ถ์ถํ๋ค. ์ด๋ feature map ํฌ๊ธฐ๋ฅผ ๋์ผํ๊ฒ 40 by 60 ๋ก ์ ์งํ๊ธฐ ์ํด์๋ padding์ 1๋ก ์ง์ ํด ์ค๋ค.
- ์ถ์ถ๋ feature map์ ๋ํ 1*1 convolutional ์ฐ์ฐ์ผ๋ก region proposals ์ถ์ถํฉ๋๋ค.
- 2๊ฐ์ง๋ก ํ์ต๋ฉ๋๋ค.
- classification layer์์ channel ์๋ 2 × 9(anchor box ๋ด object ์กด์ฌ ์ฌ๋ถ × anchor box ๊ฐ์)
- regression layer์์ channel ์๋ 4 × 9(bounding box ์ขํ 4๊ฐ × anchor box ๊ฐ์)
- ์ด๋ ๊ฒ region proposals๋ RoI Pooling์ ๊ฑฐ์ณ Fast R-CNN์ ์ ๋ฌ๋ฉ๋๋ค.