๋ค์ ์ฃผ๋ถํฐ ๋ํ ์ ํ๋ก์ ํธ๊ฐ ์งํ๋๋ค
๊ทธ๋์ ๋ํ ์ ์ชฝ ๋ชจ๋ธ๋ค๋ ํํธ์ ์ผ๋ก ์๊ณ ์๊ฑฐ๋ ์ดํด๊ฐ ๋ถ์กฑํ ๋ถ๋ถ๋ค์ด ๋ง์๋๋ฐ ์ด๋ฒ ๊ธฐํ์ ์ ์ฒด์ ์ผ๋ก ๊ณต๋ถ ๋ฐ ์ ๋ฆฌ๋ฅผ ํ๊ณ ๋์ด๊ฐ๋ คํ๋ค
์๋์ ๊ฐ์ ๋ฐ ์๋ฃ๋ค์ ์ฐธ๊ณ ํ์๋ค
https://www.boostcourse.org/ai341
์ฌํ์ฉ ์ฐ๋ ๊ธฐ๋ฅผ ํ์ฉํ ๋ฅ๋ฌ๋ (1) - Detection
๋ถ์คํธ์ฝ์ค ๋ฌด๋ฃ ๊ฐ์
www.boostcourse.org

๊ฐ์์์ ์ ์ํ Object Detection์ ์ญ์ฌ๋ก ๊ณต๋ถํ๊ณ ์ ๋ชฉํํ ์ฃผ์ ๋ชจ๋ธ๋ค์ด๋ค
์๋๋ 2014๋ ๋ถํฐ Object Detection ๊ด๋ จ ๋ชจ๋ธ ๋ฐ ๋ ผ๋ฌธ๋ค(๊ณต์ ์ฝ๋) ์ ์ ๋ฆฌํ ๊นํ์ด๋ค
https://github.com/hoya012/deep_learning_object_detection
GitHub - hoya012/deep_learning_object_detection: A paper list of object detection using deep learning.
A paper list of object detection using deep learning. - hoya012/deep_learning_object_detection
github.com

MUST READ๋ผ๊ณ ๋นจ๊ฐ์์ผ๋ก ์ฒดํฌ๋ ๋ถ๋ถ๊ณผ ๊ฑฐ์ ๋์ผํ๋ค
๋ ผ๋ฌธ ๋ฆฌ๋ทฐ๋ผ๊ธฐ๋ณด๋จ ๊ฐ ๋ชจ๋ธ๋ง๋ค์ ํน์ง๊ณผ ํ๊ณ์ ๋ค, ์ด์ ์ ์ด๋ค ๋ฌธ์ ์ ์ ๊ฐ์ ํ๊ธฐ ์ํด ์๋ก์ด, ์ข์ ์์ด๋์ด๊ฐ ๋์๋์ง ๋ฑ์ด ์ฃผ์ด๋ฉฐ ์ผ๋ถ ์ฝ๋๋ค๋ ๊ณต๋ถํ๊ณ ๊ธธ์ง ์์ผ๋ฉด ๊ฐ์ด ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณด๋ คํ๋ค
- ๋ค๋ฃฐ ๋ชจ๋ธ: R-CNN, Fast R-CNN, Faster R-CNN
- ํต์ฌ ๋ด์ฉ:
- ๋ชจ๋ธ์ ์ ์ฒด์ ์ธ ๊ตฌ์กฐ ๋ณํ
- Selective Search์ ๋๋ฆฐ ์๋ ๋ฌธ์ .
- ROI Pooling์ผ๋ก CNN ์ฐ์ฐ์ ๊ณต์ ํ๊ฒ ๋ ํ์ .
- RPN(Region Proposal Network): GPU ์์์ ๋ฐ์ค๋ฅผ ์ถ์ฒํ๊ฒ ๋ ๊ฒฐ์ ์ ๊ณ๊ธฐ.
- (Code) RPN์ Anchor ์์ฑ ๋ก์ง ๋ฐ Loss ๊ณ์ฐ ๋ถ๋ถ.
R-CNN
- ๋ ผ๋ฌธ ๋งํฌ
- ๋ ผ๋ฌธ ์ ์์ ์๋ณธ ์ฝ๋๋ caffe ๊ธฐ๋ฐ์ด๋ผ pytorch๋ก ๊ตฌํ๋์ด ์๋ ๋ค๋ฅธ ๋ ํฌ๋ฅผ ์ฐธ๊ณ
https://herbwood.tistory.com/5
R-CNN ๋ ผ๋ฌธ(Rich feature hierarchies for accurate object detection and semantic segmentation) ๋ฆฌ๋ทฐ
์ด๋ฒ ํฌ์คํ ๋ถํฐ๋ ๋ณธ๊ฒฉ์ ์ผ๋ก Object Detection ๋ชจ๋ธ์ ๋ํด ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ด๋ค ๋ ผ๋ฌธ์, ์ด๋ค ์์์ ๋ฐ๋ผ ์ฝ์ด์ผํ ์ง ๊ณ ๋ฏผํ๋ ์ค, hoya๋์ด ์์ฑํ์ 2014~2019๋ ๋๊น์ง์ Object Detection ๋ ผ
herbwood.tistory.com
https://herbwood.tistory.com/6
Pytorch๋ก ๊ตฌํํ R-CNN ๋ชจ๋ธ
์ด๋ฒ ํฌ์คํ ์์๋ R-CNN ๋ชจ๋ธ์ pytorch๋ฅผ ํตํด ๊ตฌํํ ์ฝ๋๋ฅผ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์์ง ์ฝ๋ ๊ตฌํ์ ์ต์์น ์์ object-detection-algorithm๋์ github ์ ์ฅ์์ ์ฌ๋ผ์จ R-CNN ๋ชจ๋ธ ๊ตฌํ ์ฝ๋๋ฅผ ๋ถ์ํ
herbwood.tistory.com
์ด ๋ถ์ ๊ธ๋ง ์ ๋ ํ๊ณ ์ ๊ณต๋ถํด๋ ์ดํดํ๋๋ฐ๋ ๋ฌธ์ ์๊ณ ์ถฉ๋ถํ ์ ๋๋ก ์ ๋ฆฌ ๋ฐ ์ค๋ช ์ด ์ ๋์ด์๋ค
๋ค๋ง ๋ ํฌ์ ์ฝ๋๋ค์ด ์์ฑ๋์ง ์ค๋๋์ ๊ณต๋ถํ๊ธฐ ์ ํ๋ฒ ๋ ์ฒดํฌํด๋ณด๋๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค
์ ์ ๋ฆฌ๋์ด ์๋ ๊ธ์ ๋ณด๋ฉด ๋๋๋ฐ ์ ๊ตณ์ด ์ ๋ฆฌํ๋๊ฐ ์ถ๊ธฐ๋ ํ์ง๋ง ์ ๋ฆฌ๋ ๊ธ์ ๋ณด๋ ๊ฒ๊ณผ ์ง์ ๋ด๊ฐ ์ดํดํ๋๋ก ์ ๋ฆฌํด๋ณด๋ ๊ฒ์๋ ํฐ ์ฐจ์ด๊ฐ ์๋ค๊ณ ์๊ฐํ๋ค
๋จผ์ , R-CNN์ ์ ๋ฐ์ ์ธ ํ์ง ํ๋ก์ธ์ค๋ ์๋์ ๊ฐ๋ค

- ์ด๋ฏธ์ง ์ ๋ ฅ
- Selective Search๋ก ์ฝ 2000๊ฐ์ RoI(Region of Interest) ์ถ์ถ
- RoI(Region of Interest)์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํด ๋ชจ๋ ๋์ผํ ์ฌ์ด์ฆ๋ก ๋ณํ: ๊ฐ๊ธฐ ๋ค๋ฅธ ์ฌ์ด์ฆ์ ํ๋ณด์์ญ์ ๋์ผํ ์ฌ์ด์ฆ๋ก warping ํ๋ค. (CNN์ ๋ง์ง๋ง์ธ FC layer์ ์ ๋ ฅ ์ฌ์ด์ฆ๊ฐ ๊ณ ์ ์ด๋ฏ๋ก Wraping ํด์ผํจ)
- RoI๋ฅผ CNN์ ๋ฃ์ด, feature๋ฅผ ์ถ์ถ: 1๊ฐ์ ์ด๋ฏธ์ง์ ๋์ผํ ์ฌ์ด์ฆ์ 2000๊ฐ์ ํ๋ณด ์์ญ์ด ์กด์ฌ
- CNN์ ํตํด ๋์จ feature๋ฅผ 1) SVM์ ๋ฃ์ด ๋ถ๋ฅ, 2) regression์ ํตํด bounding box๋ฅผ ์์ธก
- NMS ์ ์ฉํ์ฌ bounding box ์ต์ ํ
R-CNN ๊ตฌ์กฐ
๋ ผ๋ฌธ์์๋ 3๊ฐ์ง ๋ชจ๋๋ก ๊ตฌ์ฑ๋์ด ์๋ค๊ณ ์ด์ผ๊ธฐํ๋ค
Region Proposal → CNN ํน์ง ์ถ์ถ (Feature Extractor) → Classification + Regression (SVM ๋ถ๋ฅ + Bbox ์ขํ ์์น ๋ณด์ )

1. Region Proposal
- ๋์์ด ์์ ๊ฒ์ผ๋ก ์์๋๋ ํ๋ณด๊ตฐ๋ค ์ ์
- Selective Search๋ผ๋ ์ธ๋ถ ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ (ํ๋์ ์ด๋ฏธ์ง์์ 2000๊ฐ region proposal ์์ฑ)
โ R-CNN = region proposal์ด ๋คํธ์ํฌ ๋ฐ์์ ์ด๋ฃจ์ด์ง๋ค - ์ ์๋ proposal์ ๊ณ ์ ํฌ๊ธฐ ์ ๋ ฅ์ผ๋ก ๋ณํ. ์ ์๋ ๋ฐ์ค๋ฅผ ์ด๋ฏธ์ง์์ ์๋ผ ๊ณ ์ ํฌ๊ธฐ(227x227) ๋ก ๋ฆฌ์ฌ์ด์ฆ (warping)
Selective Search๊ฐ ๋์ํ๋ ๊ณผ์ ์ ์๋ ์ฌ์ง๊ณผ ๊ฐ๋ค

region proposal์ด ์ธ๋ถ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด ๋คํธ์ํฌ ๋ฐ์์ ์ด๋ค์ง๋ ๊ฒ์ ์ฆ ๊ฐ์ GPU๊ฐ ์๋ CPU ์ฐ์ฐ์ด ์ด๋ฃจ์ด์ง๋ฉฐ End-to-End ํ์ต์ด ๋ถ๊ฐ๋ฅํ๋ค
๋ํ, CNN์ Inference๊ฐ proposals ์๋งํผ ๋ฐ๋ณต๋๊ธฐ์ ์ฒ๋ฆฌ ์๋๊ฐ ๋งค์ฐ ๋๋ ค์ง๋ค
Selective Search ๊ด๋ จ๋ ์์ธํ ๋ด์ฉ์ ์๋ ๊ธ์ ์ ์ ๋ฆฌ๋์ด ์๋ค
ํด๋น ์๊ณ ๋ฆฌ์ฆ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ค์นํด์ ์ฌ์ฉํ๊ฑฐ๋ ๋๋ OpenCV์ ๊ธฐ๋ฅ์ผ๋ก๋ ๊ตฌํ๋์ด ์์ผ๋ฏ๋ก ์ ํํด์ ์ฌ์ฉ๊ฐ๋ฅํ๋ค
https://developer-lionhong.tistory.com/31
[Object Detection] Selective Search (์ ํ์ ํ์)
๊ฐ์ ์ด์ ํฌ์คํ ์์ ๋ฐฐ์ด Sliding Window ๋ฐฉ์์ ์ผ์ ํฌ๊ธฐ์ window๊ฐ ์ด๋ฏธ์ง์ ๋ชจ๋ ์์ญ์ slidingํ๋ฉด์ ๊ฐ์ฒด๋ฅผ ์ฐพ๊ธฐ ๋๋ฌธ์ ๊ณ์ฐ๋์ด ๋งค์ฐ ๋ง๋ค๋ ๋จ์ ์ด ์์์ต๋๋ค. ์ด ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด์
developer-lionhong.tistory.com
https://woochan-autobiography.tistory.com/910
CV - Selective Search๋ก Region Proposal ํด๋ณด๊ธฐ
๐ ์ด ๊ธ์ ๊ถ์ฒ ๋ฏผ๋์ ๋ฅ๋ฌ๋ ์ปดํจํฐ ๋น์ ์๋ฒฝ ๊ฐ์ด๋ ๊ฐ์๋ฅผ ๋ฐํ์ผ๋ก ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ๋ชฉ์ฐจ selectivesearch ์ค์น ๋ฐ ์ด๋ฏธ์ง ๋ก๋ ๋ฐํ๋ Region Proposal ์ ๋ณด ๋ณด๊ธฐ Bounding Box ์๊ฐํ selectivesearch
woochan-autobiography.tistory.com
python opencv ๊ฐ๋จ ์์ ์ฝ๋
import cv2
import matplotlib.pyplot as plt
# ์ด๋ฏธ์ง ๋ถ๋ฌ์ค๊ธฐ
img = cv2.imread("image.jpg")
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# Selective Search ์ด๊ธฐํ
ss = cv2.ximgproc.segmentation.createSelectiveSearchSegmentation()
ss.setBaseImage(img)
ss.switchToSelectiveSearchFast() # ๋น ๋ฅธ ๋ชจ๋ (๋๋ switchToSelectiveSearchQuality())
# RoI ์คํ
rects = ss.process()
print("RoI proposals:", len(rects))
# ์์ ๋ช ๊ฐ๋ง ์๊ฐํ
for i, (x, y, w, h) in enumerate(rects[:100]):
cv2.rectangle(img_rgb, (x, y), (x+w, y+h), (255, 0, 0), 1)
plt.figure(figsize=(10,10))
plt.imshow(img_rgb)
plt.axis("off")
plt.show()
2. Feature Extractor (CNN)
- ์ ์๋ Region์ ๋ํด์ CNN์ ํตํด ๊ณ ์ ๋ ๊ธธ์ด์ ํผ์ณ ๋ฒกํฐ๋ฅผ ์ถ์ถ
- ๋ ผ๋ฌธ์์๋ AlexNet ์ฌ์ฉ -> ์ต์ข region๋น ํผ์ณ์ ํฌ๊ธฐ : 2000x4096

์์ ๊ตฌ์กฐ์ ๊ฐ์ด Selective Search๋ฅผ ๊ฑฐ์ณ ๋์ Region๋ค์ warp, ๋ฆฌ์ฌ์ด์ฆ๋ก ์ํจ ๋ค์ CNN์ ๊ฑฐ์ณ ํผ์ณ ๋ฒกํฐ๋ฅผ ์ถ์ถํ์๋ค
ํผ์ณ๋ฅผ ์ถ์ถํ๋ CNN, ๋ฐ์ด๋ฉ๋ฐ์ค๋ฅผ ๋ถ๋ฅํ๋ SVM, ๋ฐ์ด๋ฉ๋ฐ์ค์ ์์น๋ฅผ ์กฐ์ ํ๋ Bbox Regression ๋ถ๋ถ๊น์ง, ํ์ต์ ์์ผ์ผํ ํํธ๋ค์ด ์ฌ๋ฌ๊ฐ ์กด์ฌํ์ฌ ๊ฐ๊ฐ์ ํ์ต์์ผ์ค์ผํ๋ค
์ธ ๊ฐ์ ๋ถ๋ฆฌ๋ ํ์ต ๋จ๊ณ (SVM + BBox regression ๋ถ๋ฆฌ)
R-CNN ํ์ต์ ์ธ ๋จ๊ณ ์กฐ๊ฐ์ผ๋ก ๋๋๋ค.
- CNN์ ImageNet์ผ๋ก pretrain ํ, ๊ฐ proposal์ ๋ฃ์ด feature vector ์ถ์ถ
- ๊ทธ feature๋ฅผ ์ฌ์ฉํด ํด๋์ค๋ณ SVM ํ์ต
- bbox regression ๋ณ๋ ํ์ต
์ฌ๊ธฐ์ CNN์ ๊ฑฐ์ณ์ ๋์จ feature vector๋ Classification, BBox Regression์ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉ๋๋ค
์ธํผ๋ฐ์ค์๋ ์ฌ์ฉ๋๊ณ SVM, Linear Regression ๋ชจ๋ธ์ ํ์ต์ํค๋๋ฐ๋ ์ฌ์ฉ๋๋ค
๋ ผ๋ฌธ์์ ํ์ต์ ์ํค๋ ๊ณผ์ ์ ์๋ ๋ด์ฉ์ฒ๋ผ CNN ํ์ต ์ํค๊ณ .. ํผ์ณ ๋ฒกํฐ ๋ฝ์๊ฑฐ๋ก SVM ํ์ต ์ํค๊ณ .. ๋น์ทํ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ ๋ฑ ๊ฝค ๋ณต์กํ๋ฐ ๋ณด๋ค์ํผ ๊ฐ ๋ชจ๋์ ์ถ๋ ฅ์ ๋ค๋ฅธ ๋ชจ๋์ ์ ๋ ฅ์ผ๋ก ํ์ต์์ผ์ผํ๋, end-to-end๊ฐ ์๋ ํํ์ด๋ค

์ฆ, ์ ์ฒด๊ฐ ์๋ก ๋ฐ๋ก ๋๊ธฐ ๋๋ฌธ์ ์๋ํฌ์๋๊ฐ ์๋๋ค
์์ ๋งํฌ ๋จ๊ธด herbwood๋์ ๊ธ์์ ๋ ผ๋ฌธ์ Hard Negative Mining๊น์ง ์ด๋ป๊ฒ ์ ์ฉ๋์ด ํ์ตํ๋์ง ์ ์ ๋ฆฌ๋์ด ์์ผ๋ ์ฐธ๊ณ
3. Classification + BBox Regression (+NMS)
๋ง์ง๋ง ๋จ๊ณ์์ R-CNN์ ๊ฐ ๊ฐ์ฒด ํ๋ณด์์ญ(Region Proposal)์ ๋ํด ๋ ๊ฐ์ง ์์ ์ ์ํํ๋ค:
- ํด๋์ค ๋ถ๋ฅ(Classification)
- ์์น ๋ณด์ (Bounding Box Regression)
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ NMS(Non-Max Suppression)๋ก ์ค๋ณต ๋ฐ์ค๋ฅผ ์ ๊ฑฐํ๋ค
3-1. Classification: CNN Feature → ํด๋์ค๋ณ Linear SVM
Selective Search๋ก ์ป์ ๊ฐ proposal์ CNN์ ์ ๋ ฅ๋์ด ๊ณ ์ ๊ธธ์ด์ feature vector๋ก ๋ณํ๋๋ค.
์ด feature vector๋ ํด๋์ค๋ณ Linear SVM์ ์ ๋ ฅ๋๋ค. (์: person์ฉ SVM, dog์ฉ SVM, car์ฉ SVM ๊ฐ๊ฐ ์กด์ฌ)
SVM์ ๋ค์ ๋ ๊ฐ์ง ๊ฐ์ ์ถ๋ ฅํ๋ค:
- decision score (confidence score ): ์ด proposal์ด ํด๋น ํด๋์ค์ ์ํ ๊ฐ๋ฅ์ฑ์ ๋ํ๋ด๋ ์ ์
(โป ํ๋ฅ ์๋. Softmax์ ๋ฌ๋ฆฌ ํ๋ฅ ์ ์๋ฏธ ์์) - ์์ธก ํด๋์ค: ์ฌ๋ฌ SVM ์ค ๊ฐ์ฅ ๋์ score๋ฅผ ๊ฐ์ง ํด๋์ค ์ ํ
SVM score๋ NMS์ ์ต์ข ranking์ ์ฌ์ฉ๋๋ค
3-2. Bounding Box Regression: ์์น ๋ณด์
R-CNN์ ๊ฐ ํด๋์ค๋ณ๋ก bounding box regressor๋ฅผ ๋ณ๋๋ก ํ์ตํ๋ค.
์ด ํ๊ท ๋ชจ๋ธ์ ๋ชฉํ๋ proposal์ ์์น๋ฅผ ๋ ์ ํํ๊ฒ ๋ณด์ ํ๋ ๊ฒ์ด๋ค.
์ฒ์ ๋ดค์ ๋ ์ด๋ป๊ฒ ํ์ต์ ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ถ๋ก ์ ์ด๋ป๊ฒ ํด์ ๋ฐ์ด๋ฉ ๋ฐ์ค ์ขํ๋ฅผ ์กฐ์ ํ๋์ง๊ฐ ๋ง์ด ํท๊ฐ๋ ธ๋๋ฐ ์ด ๋ถ๋ถ์ ํ๊ท ๋ชจ๋ธ์ ํ์ต๊ณผ ์ถ๋ก ์ ๋ถ๋ฆฌํด์ ์๊ฐํ๋ ๊ฒ์ด ๋์์ด ๋๋ค
ํ์ต ๋จ๊ณ (Training)
๋ชฉํ: Proposal์ GT ๋ฐ์ค์ ์ต๋ํ ๊ฐ๊น๊ฒ ์กฐ์ ํ ์ ์๋ offset์ ์์ธกํ๋๋ก ํ์ต
๋ฐ์ดํฐ ๊ตฌ์ฑ:
1. Proposal ์ขํ (์๋ณธ ์ด๋ฏธ์ง ๊ธฐ์ค)
- Selective Search๋ก ์์ฑ๋ ํ๋ณด ์์ญ ๋ฐ์ด๋ฉ ๋ฐ์ค ์ขํ
2. CNN feature vector
- Proposal์ CNN ์ ๋ ฅ ํฌ๊ธฐ๋ก warp/resize ํ feature ์ถ์ถ
- Linear regressor์ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉ
3. GT bounding box ์ขํ (์๋ณธ ์ด๋ฏธ์ง ๊ธฐ์ค)
- Proposal์ด ๋ง์ถฐ์ผ ํ๋ ์ ๋ต
Target(offset) ๊ณ์ฐ: Proposal๊ณผ GT ๋ฐ์ค ๊ฐ ๊ด๊ณ๋ฅผ scale-invariant, ๋ก๊ทธ ์ค์ผ์ผ๋ก ๋ณํ
๋ชจ๋ธ ํ์ต: CNN feature → Linear layer → offset ์์ธก

- Loss: SSE(MSE) + L2 ์ ๊ทํ
- ์กฐ๊ฑด: IoU ≥ 0.6์ธ proposal๋ง ํ์ต์ ์ฌ์ฉ (GT์ ์ถฉ๋ถํ ๊ฒน์น๋ ๊ฒฝ์ฐ)


์ถ๋ก ๋จ๊ณ (Inference)
- ๋ชฉํ: ํ์ต๋ ๋ชจ๋ธ์ ์ด์ฉํด proposal ์ขํ๋ฅผ ์ค์ ์ด๋ฏธ์ง์์ ์กฐ์
- ๊ณผ์ :
- Proposal์ CNN ์ ๋ ฅ ํฌ๊ธฐ๋ก warp → feature ์ถ์ถ
- Feature vector๋ฅผ Linear BBox Regressor์ ์ ๋ ฅ
- ๋ชจ๋ธ์ด ์์ธกํ offset์ proposal ์ขํ์ ์ ์ฉ → ์กฐ์ ๋ bounding box ์์ฑ
- ํด๋์ค ์ ์์ ํจ๊ป NMS๋ฅผ ํตํด ์ต์ข ๊ฒ์ถ ๋ฐ์ค ์ ์
- ํต์ฌ: ํ์ต ์ GT์์ offset์ ์์ธกํ๋๋ก ๋ฐฐ์ ๋ค๋ฉด, ์ถ๋ก ์์๋ proposal์ feature๋ง์ผ๋ก ์๋ณธ ์ด๋ฏธ์ง ๊ธฐ์ค bounding box๋ฅผ ๋ณด์ ํ ์ ์์
3. NMS (Non-Maximum Suppression)๋ก ์ต์ข ๋ฐ์ค ์ ํ
๊ฐ ํด๋์ค๋ณ๋ก:
- SVM score๋ก proposal์ ์ ๋ ฌ
- IoU๊ฐ ๋์ ๋ฐ์ค ์ค score๊ฐ ๋ฎ์ ๋ฐ์ค๋ฅผ ์ ๊ฑฐ
- ํด๋์ค๋ณ score ์ ๋ ฌ
- ๊ฐ proposal์ ๋ํด SVM ์ ์(score)๋ฅผ ๊ณ์ฐ
- ํน์ ํด๋์ค ๊ธฐ์ค์ผ๋ก score๋ฅผ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
- ์ค๋ณต ์ ๊ฑฐ
- ๊ฐ์ฅ ๋์ score๋ฅผ ๊ฐ์ง ๋ฐ์ค๋ฅผ ๊ธฐ์ค(box A)์ผ๋ก ์ ํ
- ๋ค๋ฅธ ๋ชจ๋ ๋ฐ์ค์ IoU(Intersection over Union) ๊ณ์ฐ
- IoU๊ฐ threshold ์ด์(์: 0.5)์ธ ๋ฐ์ค๋ ์ ๊ฑฐ
- ๋ฐ๋ณต
- ์ ๊ฑฐํ ๋ฐ์ค๋ฅผ ์ ์ธํ๊ณ ๋จ์ ๋ฐ์ค ์ค ๊ฐ์ฅ ๋์ score ์ ํ
- ๋ค์ IoU ๊ณ์ฐ ํ threshold ์ด์์ด๋ฉด ์ ๊ฑฐ
- ๋จ์ ๋ฐ์ค๊ฐ ์์ ๋๊น์ง ๋ฐ๋ณต
์ด ๊ณผ์ ์ ๊ฑฐ์ณ ์ค๋ณต ์์ด ๊ฐ์ฅ ์์ ์๋ ๋ฐ์ค๋ง ๋จ๊ธฐ๊ฒ ๋๋ค.
GT์ ๊ฐ์ฅ ๊ฐ๊น์ด, ์ค์ฝ์ด๊ฐ ๋์ ๋ฐ์ค์ ๋น๊ตํ๋ฉด์ ๋ง์ด ๊ฒน์น๋ ๋ค๋ฅธ ๋ฐ์ด๋ฉ ๋ฐ์ค๋ค์ ๊ฐ์ ์ค๋ธ์ ํธ๋ก ํ๋จํ๊ณ ๋ง์ด ๊ฒน์น์ง ์๋, IoU๊ฐ์ด ๊ธฐ์ค์ดํ๋ผ๋ฉด ์์ ๋ค๋ฅธ ์ค๋ธ์ ํธ๋ผ๊ณ ํ๋จํ๋ ํํ์ด๋ค
3) NMS (Non-Maximum Suppression) & Anchor box
## ์๋ก ์์ [1) General process of object detection](https://wikidocs.net/152376) ์์ ์ธ๊ธํ๋ฏ, ๋๋ค์์ objec…
wikidocs.net
NMS ์๊ณ ๋ฆฌ์ฆ์ R-CNN ๋ฟ ์๋๋ผ ๋ค์ ๋ชจ๋ธ๋ค ๊ทธ๋ฆฌ๊ณ YOLO์์๋ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ์ด๊ธฐ์ ์์๋ ํ์๊ฐ ์๋ค
์ง๊ธ๊น์ง์ ์ ๋ฐ์ ์ธ ํ๋ฆ๋๋ฅผ ์ ๋ฆฌํ์๋ฉด ์๋์ ๊ฐ๋ค
์๋ณธ ์ด๋ฏธ์ง
โโโโโโโโโโโโโโโโโโโโโโโโโ
โ Object(s) โ
โโโโโโโโโโโโโโโโโโโโโโโโโ
โฌ Selective Search
2000๊ฐ์ Proposal Boxes (์๋ณธ ์ขํ)
โฌ Warp/Resize
CNN ์
๋ ฅ ํฌ๊ธฐ
โฌ CNN Feature Extractor
Feature Vector (๊ณ ์ ๊ธธ์ด)
โฌ โฌ
Linear SVM Linear BBox Regressor
ํด๋์ค ์์ธก Offset ์์ธก (t_x, t_y, t_w, t_h)
โฌ โฌ
Class Score Offset ์ ์ฉ
โฌ
์กฐ์ ๋ Bounding Box
โฌ
NMS
โฌ
์ต์ข
๊ฒ์ถ ๋ฐ์ค
ํ๊ณ์
1. ์ ๋ ฅ ์ด๋ฏธ์ง ์๊ณก ๋ฌธ์
- R-CNN์ AlexNet๊ณผ ๊ฐ์ CNN์ ๊ทธ๋๋ก ์ฌ์ฉํ๊ธฐ ์ํด ๋ชจ๋ Region Proposal์ ๊ณ ์ ํฌ๊ธฐ(์: 224×224)๋ก warp/resizeํด์ผ ํจ
- ์ด ๊ณผ์ ์์:
- ์ด๋ฏธ์ง ๋น์จ์ด ์๊ณก๋ ์ ์์
- ์ค์ํ ์๊ฐ ์ ๋ณด ์์ค ๊ฐ๋ฅ
- ๊ฒฐ๊ณผ: ์์ ๊ฐ์ฒด๋ ์ธ๋ฐํ ๊ตฌ์กฐ๊ฐ ์๋ ์์ญ์ ํน์ง ์์ค ๊ฐ๋ฅ
2. ๋๋ฆฐ ํ์ต/์ถ๋ก ์๋
- Selective Search๋ก ์์ฑ๋ ์ฝ 2,000๊ฐ์ proposal์ ๊ฐ๊ฐ CNN์ ํต๊ณผ์์ผ feature๋ฅผ ์ถ์ถ
- ํ์ต๊ณผ ํ ์คํธ ๋ชจ๋ ๋งค์ฐ ๋๋ฆผ
- ๋จ์ ์ด๋ฏธ์ง ํฌ๊ธฐ/ํ๋กposal ๊ฐ์๊ฐ ์ฆ๊ฐํ๋ฉด ์๋ ๋ฌธ์ ์ฌํ
3. GPU ํ์ฉ ๋นํจ์จ
- Selective Search์ SVM์ GPU์ ์ต์ ํ๋์ด ์์ง ์์
- CNN feature ์ถ์ถ๋ง GPU์์ ๋น ๋ฅด๊ฒ ์ํ๋๋ฉฐ, ๋๋จธ์ง ๊ณผ์ ์ CPU ์ค์ฌ
- ๊ฒฐ๊ณผ: ํ๋์จ์ด ์ฑ๋ฅ์ ์ถฉ๋ถํ ํ์ฉํ์ง ๋ชปํจ
4. Computation Sharing ๋ถ๊ฐ / End-to-End ํ์ต ๋ถ๊ฐ
- R-CNN์ ๊ตฌ์กฐ์ ์ผ๋ก CNN, SVM, Bounding Box Regression ์ธ ๊ฐ์ง ๋ชจ๋์ด ๋ถ๋ฆฌ๋์ด ์์
- ํน์ง:
- CNN ํ์ต → feature ์ถ์ถ → SVM ํ์ต → BBox Regression ํ์ต ์์ผ๋ก ๋จ๊ณ๋ณ ์ฒ๋ฆฌ
- Backpropagation์ด SVM/BBox Regression๊น์ง ์ฐ๊ฒฐ๋์ง ์์ CNN ํ๋ผ๋ฏธํฐ๊ฐ ๋์์ ์ ๋ฐ์ดํธ ๋ถ๊ฐ
- ๊ฒฐ๊ณผ: End-to-End ํ์ต ๋ถ๊ฐ, ์ต์ ํ ํจ์จ์ด ๋จ์ด์ง
R-CNN ๋ค์ Fast R-CNN ์ผ๋ก ๋์ด๊ฐ๊ธฐ ์ ์, SPPNet๋ ํ๋ฒ ๋ณด๋ฉด ์ข๋ค
SPPNet์์๋ R-CNN์ ์ผ๋ถ ํ๊ณ์ ๋ค์ ๊ทน๋ณตํ๋ ค๋ ์๋๊ฐ ์์์ผ๋ฉฐ, ์ฌ๊ธฐ์์ ์ฐ์ธ Spatial Pyramid Pooling (SPP)์ ๋ค์ ๊ณ๋ณด์ ๋ชจ๋ธ์ธ Fast R-CNN์ ํต์ฌ์ ์ธ ๊ธฐ๋ฒ RoI(Region of Interest) Pooling ์ ์ํ์ผ๋ก ์ฐ์๊ธฐ ๋๋ฌธ์ ๋ค์ ๋์ฌ 2 Stage ๋ชจ๋ธ๋ค์ ์ดํดํ๋๋ฐ ํฐ ๋์์ด ๋๋ค
SPPNet
SPPNet์ ๋ํด ์ ํํ ์ดํด๊ฐ ์ ์๋์ ์๋ ๋ธ๋ก๊ทธ๊ธ๋ค์ ์ฌ๋ฌ๋ฒ ์ ๋ ํ๊ณ ๋์์ผ ์ข ์ ๋ฆฌ๊ฐ ๋์๋ค
SPPNet (Spatial Pyramid Pooling)
๋ ผ๋ฌธ ๋ฆฌ๋ทฐ - SPPNet ํบ์๋ณด๊ธฐ
[Object Detection] SPP(Spatial Pyramid Pooling)Net
[ML] SPP (Spatial Pyramid Pooling) Object Detection ๋ชจ๋ธ
๊ฐ์๋จน๋ Object Detection [2] Spatial Pyramid Pooling Network
SPPNet์ ์ด์ ์ R-CNN ํ๊ณ์ ๋ค ์ค ๋ ๊ฐ์ง ๋จ์ ๋ค์ ๊ฐ์ ํ์๋ค
- ์
๋ ฅ ์ด๋ฏธ์ง ๊ฐ์ ๋ณํ: ๊ฐ์ฒด ํ๋ณด ์์ญ(RoI)์ ํฌ๊ธฐ๊ฐ ์ด๋ป๋ FCN์ ๋ฃ๊ธฐ ์ํด Crop, Warp์ ํตํด ๊ฐ์ ๋ก ๊ณ ์ ๋ ํฌ๊ธฐ(224x224)๋ก ๋ณํํด์ผ ํ๋ค. ์ด ๊ณผ์ ์์ ์ด๋ฏธ์ง ์๊ณก๊ณผ ์ ๋ณด ์์ค์ด ๋ฐ์
โก๏ธ No Crop, No Warp!! ์ด๋ค ํฌ๊ธฐ๋ ๊ฐ๋ฅ!! - CNN ์ค๋ณต ์ฐ์ฐ์ ๋ญ๋น: ์์ฒ ๊ฐ์ RoI๋ง๋ค CNN ์ฐ์ฐ์ ์ฒ์๋ถํฐ ๋๊น์ง ๊ฐ๋ณ์ ์ผ๋ก ๋ฐ๋ณตํด์ผํ๋ ๊ฒ. ํ๋์ ์ด๋ฏธ์ง์ ๋ํด์ 2000๋ฒ CNN์ ํต๊ณผ ํด์ผํ๋ฏ๋ก ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ ์
โก๏ธ 2000๋ฒ CNN ํต๊ณผ?! Nope. โ ์ด์ ๋จ ํ ๋ฒ์ด๋ฉด ์ถฉ๋ถํฉ๋๋ค

๊ธฐ์กด์๋ RoI๊ฐ crop/warp๋ฅผ ๊ฑฐ์น๊ณ CNN์ ์ ๋ถ ๊ฑฐ์ณค๋ ์์๊ฐ CNN์ ๋จผ์ ๊ฑฐ์น๊ณ SPP ๋ ์ด์ด๋ฅผ ๊ฑฐ์น๋ ์์ผ๋ก ๋ณ๊ฒฝ๋์๋ค
SPPNet์ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ๋ค

Feature Map ๊ณต์
SPPNet์ 2000๋ฒ์ CNN ์ฐ์ฐ์ ๋จ 1ํ๋ก ์ค์ธ 'Feature Map ๊ณต์ (Feature Map Sharing)' ๊ฐ๋ ์ ๋์ ํ๋ค
์ขํ ํฌ์(Coordinate Projection) ์ด๋ผ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์๋ค
SPPNet์ R-CNN์ฒ๋ผ RoI๋ง๋ค ์๋ณธ ์ด๋ฏธ์ง๋ฅผ ์๋ฅด๋ ๋์ , ์๋์ ๊ฐ์ด ์ฒ๋ฆฌํ๋ค
1. ์ ์ฒด ์ด๋ฏธ์ง CNN ์ฐ์ฐ (๋จ 1ํ): ์ ๋ ฅ ์ด๋ฏธ์ง ์ ์ฒด์ ๋ํด CNN์ Convolution Layer๋ฅผ ํ ๋ฒ๋ง ์ํํ์ฌ Feature Map์ ์์ฑํ๋ค

2. ์ ๋ ํฐ๋ธ ์์น ํ์ฉ: ์๋ณธ ์ด๋ฏธ์ง์์ ์ ๋ ํฐ๋ธ ์์น๋ก ์ป์ 2,000๊ฐ์ RoI ์ขํ๋ฅผ ์ค๋นํ๋ค
3. ์ขํ ํฌ์: CNN์ ์ถ์ ๋น์จ(์: 16)์ ์ด์ฉํ์ฌ, 2,000๊ฐ์ RoI ์ขํ๋ฅผ Feature Map์์ ์์ญ ์ขํ๋ก ๋จ์ํ๊ฒ ํ์ฐํ๋ค (์: x=32 โก๏ธ x'=2)

์ด๋ก์จ SPPNet์ ๋น์ผ CNN ์ฐ์ฐ์ ์ค๋ณตํ์ง ์๊ณ , ์ด๋ฏธ ๋ง๋ค์ด์ง Feature Map์์ ์ขํ์ ํด๋นํ๋ ์์ญ๋ง ๋ฝ์์ ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค
SPP (Spatial Pyramid Pooling)
Feature Map์์ RoI ์์ญ์ ์๋ผ๋ด๋, ๊ทธ ์์ญ๋ค์ ํฌ๊ธฐ๋ ์ฌ์ ํ ์ ๊ฐ๊ฐ์ด๋ค
์ด ์์ญ์ FCN์ ๋ฃ๊ธฐ ์ํด SPP(Spatial Pyramid Pooling) Layer ์ ํตํด ๊ณ ์ ๋ ๊ธธ์ด์ ๋ฒกํฐ๋ก ๋ง๋ค ์ ์๋ค
SPP Layer์ ์๋ ๋ฐฉ์


SPP Layer๋ ๊ธฐ์กด ํ๋ง์ฒ๋ผ ํํฐ ํฌ๊ธฐ๋ฅผ ๊ณ ์ ํ๋ ๋์ , ์ต์ข ์ถ๋ ฅ๋ฌผ์ ๊ฐ์(Bin)๋ฅผ ๊ณ ์ ํ๋ค
- ๋ค์ค ํด์๋ ๋ถํ : ์ ๋ ฅ Feature ์์ญ์ ํฌ๊ธฐ์ ์๊ด์์ด, ํด๋น ์์ญ์ 4x4 (16๊ฐ), 2x2 (4๊ฐ), 1x1 (1๊ฐ) ์ ๊ฐ์ ๊ณ ์ ๋ ๊ทธ๋ฆฌ๋ ๊ฐ์๋ก ๋๋๋ค
- Max Pooling: ๊ฐ ๊ทธ๋ฆฌ๋(Bin) ๋ด์์ Max Pooling์ ์ํํ์ฌ ๊ฐ 1๊ฐ๋ฅผ ์ถ์ถ
- ๋ฒกํฐ ๊ฒฐํฉ: ๋ชจ๋ ๋ ๋ฒจ์์ ์ถ์ถ๋ ๊ฐ๋ค์ ํฉ์นฉ๋๋ค. (์: 16 + 4 + 1 = 21๊ฐ์ ๊ฐ)
๋ฐ๋ผ์ ์ด๋ค ํฌ๊ธฐ์ Feature Map ์์ญ์ด ๋ค์ด์ค๋๋ผ๋, ํญ์ 21๊ฐ x ์ฑ๋ ์๋งํผ์ ๊ณ ์ ๋ ๊ธธ์ด์ ๋ฒกํฐ๊ฐ FCN์ผ๋ก ์ ๋ฌ๋๋ค
์ด๋ก์จ SPPNet์ ์ ๋ ฅ ์ด๋ฏธ์ง ํฌ๊ธฐ์ ์ ์ฝ์์ ์์ ํ ๋ฒ์ด๋๊ฒ ๋์๋ค
SPPNet์ ๋ณด๋ฉด์ ์ดํด๋ฅผ ๋ชปํ๋ ๋ถ๋ถ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค
1. SPP ๋ ์ด์ด์์ FCN์ผ๋ก ์ด๋ป๊ฒ ํญ์ ๊ณ ์ ๋ ํฌ๊ธฐ์ ๋ฒกํฐ๋ง ๋ง๋ค์ด์ฃผ๋๊ฐ?
- SPP ๋ ์ด์ด์์ ๋น๋ํ์ฌ ํ๋งํ๋ ๋ถ๋ถ์ ์ ๋๋ก ์ดํดํ์ง ๋ชปํ๋ค
- ์๋ณธ ์ด๋ฏธ์ง ์ ์ฒด๋ฅผ CNN ๊ฑฐ์ณ์ ๋์จ ํผ์ณ๋งต์ ์ ๋ ํฐ๋ธ ์์น๋ก ์ฐพ์ RoI์ ์ขํ๋ฅผ ์ค์ด๋ค์ ํผ์ณ๋งต ๋น์จ๋งํผ ์กฐ์ ํ์ฌ ํฌ์ํ๋ค
- ๊ทธ๋ฌ๋ฉด ์ ๋ ํฐ๋ธ ์์น๋ก ์ป์ RoI ํฌ๊ธฐ๋ค์ด ์ ๊ฐ๊ฐ์ธ ๊ฒ์ฒ๋ผ ํฌ์๋ RoI๋ค๋ ํฌ๊ธฐ๊ฐ ์๋ก ๋ค๋ฅผ ๊ฒ์ด๋ค
- ์ด๋ ํ๋ง์ ์ ์ฉํ๋๋ฐ ์ด์ ์ ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ํ๋ง๊ณผ๋ ๋ค๋ฅด๋ค
- ์ด์ ์ ๋ฐฐ์ด Max, Average Pooling์ 2x2, 3x3 ์ด๋ ๊ฒ ์ผ์ ํฌ๊ธฐ์์ ํ๋์ ๊ฐ์ ๋ฝ๋ ํํ์์ผ๋ ๋น๋์ ์ฌ์ฉํ ํ๋ง์ ํผ์ณ๋งต์ด ์ด๋ค ํฌ๊ธฐ๋ ๋ฌด์กฐ๊ฑด ๊ฐ์ ํฌ๊ธฐ๋ก ๋์ค๊ฒ๋ ๋ง๋๋ ํ๋ง์ด๋ค
- ์์ ๋ถ์คํธ์ฝ์ค ๊ฐ์ ์์์ฒ๋ผ 2x2 ํผ๋ผ๋ฏธ๋๋ผ๋ฉด 32x32 ์ด๋ฏธ์ง๋ 64x64 ๋ ์ ๋ถ 4๋ฑ๋ถ๋ด์ด 4์ฐจ์์ผ๋ก ํํ๋ฅผ ๊ณ ์ ์์ผ์ค๋ค
- ๋น๋ ํ๋ง์ ์ดํดํ๋ ๊ฒ์ด ํคํฌ์ธํธ!!
2. ์ ๋ ํฐ๋ธ ์์น๋ก 2,000๋ฒ CNN ์ฐ์ฐํ๋ ๊ฒ์ด ์ด๋ป๊ฒ 1๋ฒ์ผ๋ก ์ค์ด๋๋๊ฐ?
- ์์ ๋ด์ฉ๊ณผ ๊ฒน์น์ง๋ง ์ฌ๊ธฐ์ ํต์ฌ์ ์ ๋ ํฐ๋ธ ์์น๋ก ์ป์ RoI ์ขํ๋ฅผ ์๋ณธ ์ด๋ฏธ์ง๋ฅผ CNN ๊ฑฐ์ณ์ ์ป์ ํผ์ณ๋งต์ ํฌ์ํ๋ ๊ฒ์ด๋ค
- ์๋ณธ์ ์ด๋ฏธ์ง ํฌ๊ธฐ๊ฐ 224x224, ํผ์ณ๋งต์ 14x14 ๋ผ๋ฉด ์ถ์ ๋น์จ์ 16์ด๋ค
- RoI ์ค ํ๋์ ์ขํ๊ฐ (32, 48)์ด๊ณ ๋๋น๋ 64, ๋์ด๊ฐ 96์ด๋ผ๋ฉด ๊ฐ๊ฐ 16์ผ๋ก ๋๋ ์ค๋ค
- ๊ทธ๋ผ ํผ์ณ๋งต์ ํฌ์๋ RoI์ ์ขํ๋ (2, 3), ๋๋น์ ๋์ด๋ 4, 6์ด ๋๋ค
- ๋ฐ๋ผ์ ์๋ณธ ์ด๋ฏธ์ง์ (32, 48)์์ ์์ํ๋ 64, 96 ํฌ๊ธฐ์ RoI๋ 14x14 ํฌ๊ธฐ์ ํผ์ณ๋งต์์ (2,3) ์์ ์์ํ๋ 4x6 ํฝ์ ์์ญ์ ํด๋นํ๋ค
์! CNN ์ ํ๋ฒ๋ง ๊ฑฐ์น๋ค๊ณ ํด์ ๋ฝ์๋ธ ํผ์ณ๋งต์์ ์ ๋ ํฐ๋ธ ์์น๋ฅผ ํ๋ ์๊ฐํ๋๋ฐ ๋ค์ ์๊ฐํด๋ณด๋ ๊ทธ๋ ๊ฒ ์์ถ๋๊ณ ์์์ง ํผ์ณ๋งต์์๋ ์ ๋ ํฐ๋ธ ์์น๊ฐ ์ ๋๋ก ๋์ํ ์ ์๊ฒ ๊ตฌ๋. ์๋ณธ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ํฐ๋ธ ์์น๋ฅผ ์ํํ๋ค์ ํผ์ณ๋งต์ ๋ง๊ฒ ์ขํ์ ๋น์จ์ ์กฐ์ ํ์ฌ RoI ํผ์ณ๋งต๋ค์ ๋ฝ์๋ธ๋ค์ ์ฌ๊ธฐ์ ์ฌ๋ฌ ๊ท๊ฒฉ์ ํ๋ง์ ์ ์ฉํ์ฌ FC ๋ ์ด์ด์ ๋๊ฒจ์ค ํผ์ณ ๋ฒกํฐ์ ํฌ๊ธฐ๋ฅผ ๊ณ ์ ์ํจ๊ฑฐ๊ตฌ๋.
ํ๊ณ์
SPPNet์ ๋ค์๊ณผ ๊ฐ์ ๋ ๊ฐ์ง ์ฃผ์ ํฌ์ธํธ๋ฅผ ๋จ๊ฒผ๋ค
- Feature Map ๊ณต์ : ์ดํ ๋ชจ๋ ํจ์จ์ ์ธ 2-Stage ๊ฐ์ฒด ์ธ์ ๋ชจ๋ธ(Fast R-CNN, Faster R-CNN)์ ๊ธฐ๋ฐ์ด ๋์๋ค
- RoI ํ๋ง์ ์ํ: SPP Layer์ ์์ด๋์ด๋ Fast R-CNN์ RoI Pooling Layer์ Mask R-CNN์ RoI Align Layer๋ก ์ด์ด์ก๋ค
R-CNN์ ์ฌ๋ฌ ๋ฌธ์ ์ ๋ค์ ํจ๊ณผ์ ์ผ๋ก ํด๊ฒฐํ์ง๋ง ์ฌ์ ํ ํ๊ณ์ ๋ค์ด ์กด์ฌํ๋ค
- ๋๋ฆฐ Region Proposal: ์ฌ์ ํ ๋๋ฆฐ ์ ๋ ํฐ๋ธ ์์น(CPU ์ฐ์ฐ)์ ์์กดํ์ฌ ์ ์ฒด ์๋๋ฅผ ๋๋ฆฌ๊ฒ ๋ง๋ค์๋ค
- ๋ถ๋ถ ํ์ต: FCN์ ์ ์ธํ CNN์ Convolution Layer๋ ํ์ต๋์ง ์์ ๋ชจ๋ ๋ชจ๋ธ์ ์ ์ฒด์ ์ธ ํ์ต, End-to-end ํ์ต์ด ๋ถ๊ฐ๋ฅํ๋ค
์ด๋ฌํ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ณ SPPNet์ ์์ด๋์ด๋ฅผ ์์ฑ์ํจ ๋ชจ๋ธ์ด ๋ฐ๋ก ๋ค์ ๋จ๊ณ์ธ Fast R-CNN์ด๋ค
Fast R-CNN์ SPPNet์ SPP Layer๋ฅผ RoI Pooling์ผ๋ก ๋จ์ํํ์ฌ ๋คํธ์ํฌ ์ ์ฒด์ End-to-End ํ์ต์ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์๋ค
์ด๋ฒ์๋ R-CNN์ ๋๋ต์ ์ธ ๊ตฌ์กฐ์ ์ด๋ค ํน์ง๋ค์ด ์๋์ง, ๊ทธ๋ฆฌ๊ณ R-CNN์ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๋ ค๋ ์๋์ Fast R-CNN ๋ชจ๋ธ์์๋ถํฐ ๋์ค๋ RoI ํ๋ง์ ๋ผ๋๊ฐ ๋๋ SPP๊น์ง ์ดํด๋ณด์๋ค
๋ ผ๋ฌธ, ๋ธ๋ก๊ทธ, ๊ตฌ๊ธ๋ง ๋ฐ GPT ๋ฑ ์ฌ๋ฌ ์๋ฃ๋ค์ ๋ง์ด ์ฐธ๊ณ ํ๊ณ ์ง์ง๊ธฐ ๊ฐ์ ๋๋๋ ์์ง๋ง ์ ๋ง ๊ทธ๋๋ก ๋ณต๋ถ๋ง ํ๋ค๋ฉด ์ง์ง๊ธฐ์ ๋ถ๊ณผํ์ ๊ฒ์ด๋ค
์งง์ ๊ธฐ๊ฐ ๋ด์ ๋ด์ผํ ๋ชจ๋ธ๋ค์ด ์์ฌ์๋ค๋ณด๋ ๋ ผ๋ฌธ์์๋ ์ด๋ค ์์ผ๋ก ํ๋ค - ๊ฐ์ ๋จ์ํ ์คํ์ ์ธ ๋ถ๋ถ์ ๋ฐฐ์ ํ๊ณ ์ด๋ค ๊ตฌ์กฐ, ํํ๋ค๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ ๊ฐ๊ฐ์ด ์ด๋ป๊ฒ ํ์ต๋๊ณ ์ธํผ๋ฐ์ค๋ ์ด๋ป๊ฒ ๋๋์ง, ์ ์ถ๋ ฅ์ ํํ ๋ฑ ๋ชจ๋ธ๊ณผ ์ฃผ์ ์์ด๋์ด ๊ทธ๋ฆฌ๊ณ ์ด ๋ชจ๋ธ์ ๋จ์ ๊ณผ ํ๊ณ์ ์์ฃผ๋ก ๋ณด์๋ค
์ ์ถ๋ ฅ์ด ์ด๋ป๊ฒ ์ด๋ค์ง๋์ง๋ ์ ๋ง ์ค์ํ๋ฐ ์ด๋ ๊ฒ ๊ธ๋ก ์ ๋ฆฌํด๋ณด๋ ค ํ์ง ์์๋ค๋ฉด ์๋ง ๋ฐ์ด๋ฉ๋ฐ์ค๋ฅผ ์์ธกํ๊ณ ์กฐ์ ํ๋ ๋ถ๋ถ์์ ์ด๋ค ํํ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ๊ณ ์ถ๋ ฅ๋๋ ์์ธก๊ฐ์ ์ด๋ค ๊ฒ์ธ์ง, ์ด๋ป๊ฒ Region Proposal์ ๋ฐ์ด๋ฉ ๋ฐ์ค ์ขํ๊ฐ์ GT์ ๊ฐ๊น๊ฒ ์กฐ์ ํ๋์ง ๋ฑ์ ๋ชจ๋ฅธ์ฑ ์ง๋์ณค์ ๊ฒ ๊ฐ๋ค
๋ฌผ๋ก ์์ง๋ ๋ชจ๋ฅด๋ ๋ถ๋ถ๋ค์ด ๋ง๊ธด ํ๋ฐ ์๋์ R-CNN ์ฝ๋ ๋ฆฌ๋ทฐ๊ธ๊ณผ ์์ฑํ AI ๋ฑ์ ๋์์ ๋ฐ์ ์ง๊ธ๊น์ง ์ดํด๋ณธ ๋ด์ฉ๋ค์ด ์ฝ๋๋ก ์ด๋ป๊ฒ ๊ตฌํ๋์ด ์๋์ง๋ ํ๋ฒ ์ดํด๋ณด๋ฉด์ ๋ ๊น๊ฒ ์ดํดํด๋ณด๋ คํ๋ค
https://herbwood.tistory.com/6
Pytorch๋ก ๊ตฌํํ R-CNN ๋ชจ๋ธ
์ด๋ฒ ํฌ์คํ ์์๋ R-CNN ๋ชจ๋ธ์ pytorch๋ฅผ ํตํด ๊ตฌํํ ์ฝ๋๋ฅผ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์์ง ์ฝ๋ ๊ตฌํ์ ์ต์์น ์์ object-detection-algorithm๋์ github ์ ์ฅ์์ ์ฌ๋ผ์จ R-CNN ๋ชจ๋ธ ๊ตฌํ ์ฝ๋๋ฅผ ๋ถ์ํ
herbwood.tistory.com
์ฐธ๊ณ ์๋ฃ
Object Detection for Dummies Part 3: R-CNN Family
NMS (Non-Maximum Suppression) & Anchor box
'AI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Object Detection] Fast R-CNN ์ดํด๋ณด๊ธฐ (0) | 2025.12.01 |
|---|---|
| ํ ์คํธ feature vector ์ดํด๋ณด๊ธฐ (0) | 2025.10.29 |
| ํ ์คํธ ๋ถ๋ฅ - Hard Example Mining (0) | 2025.10.28 |
| VGGNet (ICLR 2015) ์์ฝ ๋ฐ ๋ฆฌ๋ทฐ (0) | 2024.01.29 |