RetinaNet ๊ตฌ์กฐ์ ํ์ต ๋ฐฉ์
1. ๊ฐ์ฒด ํ์ง(Object-Detection)์ RetinaNet์ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
๊ฐ์ฒด ํ์ง(Object-Detection)์ ์ด๋ฏธ์ง์์ ๊ฐ์ฒด์ ์์น์ ์ข
๋ฅ๋ฅผ ๋์์ ์์๋ด๋ ์ปดํจํฐ ๋น์ ๊ธฐ์ ์
๋๋ค.
ํฌ๊ฒ ๋ณด๋ฉด Two-stage ๋ฐฉ์๊ณผ One-stage ๋ฐฉ์์ผ๋ก ๋๋ฉ๋๋ค.
- Two-stage ๋ฐฉ์ (ex. Faster R-CNN)
๋จผ์ ํ๋ณด ์์ญ(Region Proposal)์ ๋ฝ๊ณ , ๊ทธ ํ์ ํด๋์ค๋ฅผ ์์ธกํฉ๋๋ค.
์ด ๋ฐฉ์์ ๋ ๋จ๊ณ๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ์ ํํ์ง๋ง ๊ตฌ์กฐ๊ฐ ๋๋ฆฌ๊ณ ๋ณต์กํฉ๋๋ค.
- One-stage ๋ฐฉ์(ex. YOLO, SSD)
์ด๋ฏธ์ง ์ ์ฒด๋ฅผ ํ ๋ฒ์ ์ฒ๋ฆฌํ๋ฉฐ ๋น ๋ฅธ ์๋๊ฐ ์ฅ์ ์
๋๋ค.
ํ์ง๋ง Two-stage์ ๋นํด ์ ํ๋๊ฐ ๋ฎ๋ค๋ ๊ฒ ๋จ์ ์ด์์ต๋๋ค.
์ด๋ฐ ๊ตฌ์กฐ์ ์ฐจ์ด ๋๋ฌธ์ One-stage ๋ฐฉ์์ ๋ ์๋๊ฐ ๋น ๋ฅด์ง๋ง ์ ํ๋์์๋ ๋ถ์กฑํ์ต๋๋ค.
๊ทธ ์ด์ ์ค ํ๋๋ ํ์ต ์ค ๋ฐฐ๊ฒฝ(background)์ ์๊ฐ ๋๋ฌด ๋ง๊ณ , ์ ๋ต ๊ฐ์ฒด๋ ๋๋ฌด ์ ๋ค๋ ๋ถ๊ท ํ ๋ฌธ์ ๋๋ฌธ์
๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ์ ๋ฉด์ผ๋ก ํด๊ฒฐํ ๋
ผ๋ฌธ์ด ๋ฐ๋ก Focal Loss for dense Object Detection์
๋๋ค.
Dense Object Detection์ด๋?
-> ์
๋ ฅ ์ด๋ฏธ์ง์ ๋ชจ๋ ์์น(grid cell)๋ง๋ค ์ฌ์ ์ ์๋ ์ฌ๋ฌ anchor ๋ฐ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ธกํ๋ ๋ฐฉ์์ ์๋ฏธํ๋ค.
2. RetinaNet์ ๊ตฌ์กฐ: FPN๊ณผ ๋ถ๋ฆฌ๋ ๋ ์๋ธ๋ท
RetinaNet์ ๋จ์ํ์ง๋ง ๊ฐ๋ ฅํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ค.
ํฌ๊ฒ ๋ณด๋ฉด ๋ค์ ์ธ ๋จ๊ณ๋ก ๋๋ ์ ์๊ฒ ์ต๋๋ค.
1) Backbone: ResNet + FPN

๋ฐฑ๋ณธ์์ ์ถ์ถํ feature๋ฅผ ๊ธฐ๋ฐ์ผ๋ก, top-down ๊ฒฝ๋ก์ lateral connection์ ๊ฒฐํฉํ์ฌ FPN์ ํผ์ฒ๋งต(P3~P7)์ ๊ตฌ์ฑํฉ๋๋ค.
์ด ๊ตฌ์กฐ๋ ๋ค์ํ ํด์๋์ ํผ์ฒ๋งต์ ๋์์ ํ์ฉํ ์ ์๋๋ก ํ์ฌ, ๋ค์ค ์ค์ผ์ผ ๊ฐ์ฒด ํ์ง๋ผ๋ ์๋ก์ด ํจ๋ฌ๋ค์์ ์ ์ํ์ต๋๋ค.
2) Detection Head (์๋ธ๋ท)

* ์ด ๋ถ๋ถ์์ ์ฃผ์ํ ๋ถ๋ถ์, FPN์ ๊ฐ ๋ ๋ฒจ(P3 ~ P7)์ feature map์ด upsampling ์์ด ๊ทธ๋๋ก ์๋ธ๋ท์ ์ ๋ฌ๋๋ค๋ ๊ฒ์
๋๋ค.
Classification ์๋ธ๋ท์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋ฉ๋๋ค:
(3 * 3 conv, 256 filters + Relu) * 4 + (3 * 3 conv * num_anchors filters * num_classes)
-> ๊ฐ ์์น์ anchor์ ๋ํด ํด๋์ค๋ณ ํ๋ฅ ์ ์ถ๋ ฅํฉ๋๋ค.
Box Regression ์๋ธ๋ท๋ ์ ์ฌํ ๊ตฌ์กฐ์ด๋ฉฐ:
(3 * 3 conv, 256 filters + Relu) * 4 + (3 * 3 conv * num_anchors * 4 filters)
-> ๊ฐ anchor๊ฐ ground-truth box๋ก ๊ฐ๋ ค๋ฉด ์ผ๋ง๋ ์ด๋(offset)ํด์ผํ๋์ง๋ฅผ ์์ธกํฉ๋๋ค.
3) Anchors
(์ด ๊ฐ๋
์ ์ดํดํ๋๋ฐ ํ์ฐธ ๊ฑธ๋ ธ์ต๋๋ค. ๋ถ๋ ์ด ๊ธ์ ์ฝ์ผ์๋ ๋ถ๋ค์ ๋น ๋ฅด๊ฒ ์ดํดํ์๊ธธโฆ)

RetinaNet์์๋ ๊ฐ ์์น๋ง๋ค 3๊ฐ์ง scale๊ณผ 3๊ฐ์ง aspect ratio์ ์กฐํฉ์ผ๋ก ์ด 9๊ฐ์ anchor๊ฐ ์ ์๋ฉ๋๋ค.
- 3๊ฐ์ง ์ค์ผ์ผ = {1.0, 2^(1/3), 2^(2/3)}
- 3๊ฐ์ง aspect ratio = {1:1, 1:2, 2:1}
์ด๋ฌํ anchor๋ FPN์ P3๋ถํฐ P7๊น์ง์ feature map ์์ ๋ฐฐ์น๋๋ฉฐ(๊ฐ ์
๋ง๋ค ์์น),
๊ฐ ํผ์ฒ๋งต์ ํด์๋(stride)์ ๋ฐ๋ผ anchor์ ํฌ๊ธฐ๋ ๋ฌ๋ผ์ง๋๋ค.
์๋ฅผ ๋ค์ด, P3๋ stride 8์ด๋ฏ๋ก ์๋ณธ ์ด๋ฏธ์ง์ 8 ร8 ํฝ์
์์ญ๋ง๋ค ํ๋์ ํฝ์
๋ก ๋งคํ๋๊ณ , P7์ stride 128๋ก 128 ร128 ์์ญ์ ๋ด๋นํฉ๋๋ค.
์ฆ, FPN feature map์ ๊ฐ ํฝ์
์ ์๋ณธ ์ด๋ฏธ์ง์์ ํน์ ์์น๋ฅผ ๋ํํ๋ฉฐ,
๊ทธ ํ๋์ ํฝ์
์์ 9๊ฐ์ anchor box๊ฐ ๋ฐฐ์น๋๋ ๊ตฌ์กฐ์
๋๋ค.
์ด์ฒ๋ผ stride๊ฐ ํด์๋ก ํฐ ๊ฐ์ฒด๋ฅผ ๋ด๋นํ๊ณ , stride๊ฐ ์์์๋ก ์์ ๊ฐ์ฒด๋ฅผ ๋ด๋นํ๊ฒ ๋์ด,
RetinaNet์ ํ ์ด๋ฏธ์ง์์ ์๋ง ๊ฐ์ anchor๋ฅผ ์กฐ๋ฐํ๊ฒ ์์ฑํ๋ฉฐ ์์ ๋ฌผ์ฒด๋ถํฐ ํฐ ๋ฌผ์ฒด๊น์ง ํญ๋๊ฒ ํ์งํ ์ ์๋ ๊ธฐ๋ฐ์ ๊ฐ์ถ๊ฒ ๋ฉ๋๋ค.
์์ฝ
FPN ๋ ๋ฒจ์ ํฝ์
= anchor ์ค์ฌ์
- ํฝ์
๋ง๋ค anchor 9๊ฐ (scale ร aspect ratio ์กฐํฉ)
- stride๊ฐ ์ปค์ง์๋ก ํฐ anchor, ์ ์ ํด์๋
- P3~P7 ์ ์ฒด๋ฅผ ํ์ฉํ์ฌ ๋ค์ค ์ค์ผ์ผ ๊ฐ์ฒด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌ
3. RetinaNet์ ํ์ต ๋ฐฉ์: Anchor ๊ธฐ๋ฐ ํ์ต
RetinaNet์ anchor ๊ธฐ๋ฐ dense detection ๋ชจ๋ธ์
๋๋ค. ํ ์ด๋ฏธ์ง๋น ์๋ง ๊ฐ์ anchor๊ฐ ์กด์ฌํ๊ณ , ์ด๋ค ๊ฐ๊ฐ์ ๋ํด์ ํ์ต ์ฌ๋ถ๋ฅผ ํ๋จํฉ๋๋ค.
1) Label ์ ์ ๋ฐฉ์
๊ฐ anchor์ ๋ํด์ GT box์์ IoU๋ฅผ ๊ณ์ฐํ์ฌ ๋ค์ ๊ธฐ์ค์ผ๋ก ๋ผ๋ฒจ์ ์ง์ ํฉ๋๋ค.
- IoU >= 0.5 -> Positive (foreground)
- IoU < 0.4 -> Negative (background)
- ๊ทธ ์ฌ์ด [0.4, 0.5) -> Ignore
2) ํ์ต ์์ค ๊ตฌ์ฑ
- Classification Loss๋ Focal Loss๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- Regression Loss๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ Smooth L1 Loss์
๋๋ค.
- Positive anchor(foreground)๋ง Regression ๋์์ด ๋๋ฉฐ, Negative anchor(background)๋ Classification์์๋ง ๊ณ์ฐํฉ๋๋ค.
์ด๋ฌํ ํ์ต ๋ฐฉ์์ ๊ธฐ์กด ๋ชจ๋ธ๋ณด๋ค ๋ ๋ง์ anchor๋ฅผ ๋ค๋ฃจ๋ฉด์๋, ์ ํํ๊ฒ ํ์ตํ ์ ์์ต๋๋ค.
4. Focal Loss: ๋ถ๊ท ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ํต์ฌ ์์ด๋์ด
๊ธฐ์กด CE Loss๋ ์ฌ์ด ๋ฐฐ๊ฒฝ ์ํ์ด ๋๋ฌด ๋ง์ ์ ์ฒด ์์ค์์ ์ง๋ฐฐ์ ์ธ ๋น์ค์ ์ฐจ์งํฉ๋๋ค. ์ด๋ก ์ธํด ๋ชจ๋ธ์ ์ง์ง ์ด๋ ค์ด ์์์ ๊ฐ์ฒด ์ํ์ ์ ํ์ตํ์ง ๋ชปํ๊ฒ ๋ฉ๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด RetinaNet์ ๋ค์๊ณผ ๊ฐ์ Focal Loss๋ฅผ ์ ์ํฉ๋๋ค.
Focal Loss: ์์ ๋ฐฐ๋ถ๊ณผ ๊ทธ๋ํ ํด์ - https://small0753.tistory.com/m/30
Focal Loss์ ๊ด๋ จํ ๋ด์ฉ์ ํด๋น ๋ธ๋ก๊ทธ์์ ๋ณผ ์ ์์ต๋๋ค.
5. RetinaNet์ด ๋จ๊ธด ์์์ ๋ฐฉํฅ
๊ตฌ์กฐ์ ์์
RetinaNet์ FPN๊ณผ ๋ ๊ฐ์ head๋ผ๋ ๊ฐ๋จํ ๊ตฌ์กฐ๋ง์ผ๋ก๋ Two-stage ๋ชจ๋ธ์ ๋ฅ๊ฐํ๋ ์ ํ๋๋ฅผ ๋ฌ์ฑํ๋ฉฐ, ์ดํ ๋ฑ์ฅํ ์๋ง์ ๊ฐ์ฒด ํ์ง ๋ชจ๋ธ์ ์ง์์ ์ธ ์ํฅ์ ๋ผ์น ๋ชจ๋ธ์
๋๋ค.
๋ฌด์๋ณด๋ค๋ Focal Loss๋ ์์ค ํจ์ ์์ฒด์ ์ค๊ณ๋ฅผ ํตํด class imbalance ๋ฌธ์ ๋ฅผ ๊ตฌ์กฐ์ ์ผ๋ก ํด๊ฒฐํ๋ค๋ ์ ์์, ๊ฐ์ฒด ํ์ง ์ฐ๊ตฌ์ ํจ๋ฌ๋ค์์ ๋ฐ๊ฟ๋์๋ค๊ณ ํ ์ ์์ต๋๋ค.
์ดํ ๊ฐ์ฒด ํ์ง ๋ถ์ผ๋ anchor-free ๋ฐฉ์, attention ๊ธฐ๋ฐ์ head, transformer ๊ธฐ๋ฐ backbone ๋ฑ์ผ๋ก ๋น ๋ฅด๊ฒ ์งํํ๊ณ ์์ง๋ง, RetinaNet์ ๊ทธ ์์์ ์์ โOne-stage ๋ชจ๋ธ๋ ์ ํ๋์ ํจ์จ์ฑ์ ๋์์ ์ถ๊ตฌํ ์ ์๋ค โ๋ ๊ฐ๋ฅ์ฑ์ ์ฆ๋ช
ํด ๋ธ, ์ ํ์ ์ด ๋ ๋ชจ๋ธ์ด๋ผ ํ ์ ์์ต๋๋ค.
โธป
๊ทธ๋ฆฌ๊ณ ์ด ๋ธ๋ก๊ทธ๋ฅผ ๋ง๋ฌด๋ฆฌํ ์ฆ์, ์ ์๊ฒ ์ด๋ฐ ์๊ฐ์ด ๋ค์์ต๋๋ค:
โ๊ทธ๋ฐ๋ฐ, ์ ํํ RetinaNet ๊ตฌ์กฐ์์๊น? ๋ค๋ฅธ ๊ตฌ์กฐ์๋ค๋ฉด ๊ฐ๋ฅํ์๊น?โ
โ์ ๋ฐฑ๋ณธ์ผ๋ก ResNet์ ์ผ์๊น? ๋ง๊ณ ๋ง์ ๋ค๋ฅธ ๋คํธ์ํฌ๋ค๋ ์๋๋ฐโฆโ
์ฌ์ค RetinaNet์ ์์ ํ ์๋กญ๊ฒ ๋ชจ๋ ๊ฑธ ์ค๊ณํ ๋ชจ๋ธ์ด๋ผ๊ธฐ๋ณด๋ค๋, ๊ทธ ๋น์๊น์ง ๊ฒ์ฆ๋ ๊ธฐ์ ๋ค์ ์์ฃผ ์๋ฆฌํ๊ฒ ํตํฉํ ๊ตฌ์กฐ์
๋๋ค.
โข FPN์ ์ด๋ฏธ Faster R-CNN์์ ๋ฐ์ด๋ ์ฑ๋ฅ ํฅ์์ ๋ณด์ฌ์ฃผ๋ฉฐ ๋ค์ค ์ค์ผ์ผ ํํ์ ๊ฐ์ ์ ์
์ฆํ๊ณ ,
โข ResNet์ ๊น์ ๋คํธ์ํฌ์์๋ ์์ ์ ์ธ ํ์ต์ด ๊ฐ๋ฅํ๋ค๋ ์ ์์ ๊ฐ์ฅ ์ ๋ขฐ๋ฐ๋ backbone์ด์์ผ๋ฉฐ,
โข Anchor-based ๊ตฌ์กฐ๋ SSD ๋ฑ์ ๋ชจ๋ธ์์ ์ฑ๊ณต์ ์ผ๋ก ํ์ฉ๋, ๋น์๋ก์ ๊ฐ์ฅ ๋ฒ์ฉ์ ์ด๊ณ ์ง๊ด์ ์ธ detection ํ๋ ์์ํฌ์์ฃ .
์ฆ, RetinaNet์ ์๋ก์ด ์์ด๋์ด(Focal Loss)๋ฅผ ์์ ์ ์ธ ๊ตฌ์กฐ ์์ ์ค์ฉ์ ์ผ๋ก ์น์ ๋ชจ๋ธ์ด์๊ณ , ๊ทธ๊ฒ์ด ์ด ๋ชจ๋ธ์ด ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ํ์ ๋ชจ๋ธ๋ค์๊ฒ๊น์ง ์ํฅ์ ์ค ์ ์์๋ ํต์ฌ ์ด์ ์์ต๋๋ค.
6. ๋ง๋ฌด๋ฆฌ
RetinaNet์ ๋จ์ง ๋ชจ๋ธ ํ๋๊ฐ ์๋๋ผ One-stage ๊ฐ์ฒด ํ์ง๊ธฐ์ ํ๊ณ๋ฅผ ๊ตฌ์กฐ์ ์์ค ํจ์ ์ค๊ณ๋ก ๊ทน๋ณตํด ๋ธ ์ฌ๋ก์
๋๋ค.
๊ฐ์ฒด ํ์ง๋ฅผ ๊ณต๋ถํ๊ฑฐ๋ ๊ตฌํํด๋ณด๊ณ ์ถ์ ๋ถ๋ค์๊ฒ RetinaNet์ ๋ฐ๋์ ํ ๋ฒ ์ง๊ณ ๋์ด๊ฐ์ผ ํ ๊ธฐ์ค์ ์ด๋ผ๊ณ ํ ์ ์๊ฒ ์ต๋๋ค.
Reference:
Focal Loss for Dense Object Detection: https://arxiv.org/abs/1708.02002