• toc {:toc}

Overview of R-CNN structure

image

image


Faster R-CNN

Fast RCNN μ—μ„œ CNN 연산을 κ³΅μœ ν•˜κ³  RoI Pooling 을 μ μš©ν•¨μœΌλ‘œμ¨ λΉ„μš©λ„ κ°μ†Œμ‹œν‚€κ³  κΉŠμ€ λ„€νŠΈμ›Œν¬μ—μ„œμ˜ ν•™μŠ΅λ„ κ°€λŠ₯ν•˜λ„λ‘ λ§Œλ“€μ—ˆλ‹€. Faster RCNN 은 Fast RCNN 의 κ΅¬μ‘°μ—μ„œ μ‹€μ‹œκ°„ 객체 탐지λ₯Ό μœ„ν•œ 속도 κ°œμ„ μ— μ΄ˆμ μ„ 맞좰 ꡬ쑰λ₯Ό κ°œμ„ ν–ˆλ‹€.

[image

](https://paperswithcode.com/method/faster-r-cnn)

Faster R-CNN 의 ꡬ쑰λ₯Ό κ°„λ‹¨ν•˜κ²Œ 압좕해보면 RPN(Regional Proposals Networks) + Fast R-CNN κ³Ό κ°™κ³ , 전체적인 λ™μž‘ μˆœμ„œλŠ” μ•„λž˜μ™€ κ°™λ‹€.

  1. 전체 이미지λ₯Ό CNN 에 μž…λ ₯ν•˜μ—¬ νŠΉμ§•λ§΅μ„ μΆ”μΆœν•œλ‹€.
  2. νŠΉμ§•λ§΅μ„ RPN 에 μž…λ ₯ν•΄ Regional Proposals λ₯Ό μΆ”μΆœν•œλ‹€.
  3. νŠΉμ§•λ§΅μ„ RPN 을 톡해 뽑아낸 Regional Proposals 에 따라 νŠΉμ§•λ§΅μ„ RoI Pooling ν•˜κ³  κ³ μ •λœ 크기의 νŠΉμ§•λ§΅μ„ μΆ”μΆœν•œλ‹€.
  4. κ³ μ •λœ 크기의 νŠΉμ§•λ§΅μ„ 톡해 λΆ„λ₯˜, 객체 탐지λ₯Ό ν•œλ‹€.
  • CNN 을 ν†΅ν•œ νŠΉμ§•λ§΅μ΄ RPN, Classifier 에 ν•¨κ»˜ μ‚¬μš©λ˜λ©΄μ„œ νŠΉμ§•λ§΅μ„ κ³΅μœ ν•˜λŠ” ν˜•νƒœλ₯Ό κ°–λŠ”λ‹€.

Problems of Fast R-CNN

image

  • Fast R-CNN 은 전체 이미지λ₯Ό μž…λ ₯ λ°›κ³ , RoI Pooling, Softmax λ₯Ό ν†΅ν•œ End-to-End ν•™μŠ΅μ„ ν•  수 μžˆλŠ” ꡬ쑰λ₯Ό λ§Œλ“€μ–΄λ‚΄λ©° 더 κ°œμ„ λœ ꡬ쑰λ₯Ό λ³΄μ˜€λ‹€.
  • ν•˜μ§€λ§Œ, Fast R-CNN μ—μ„œ Regional Proposals λ₯Ό μΆ”μΆœν•  λ•Œ μ‚¬μš©ν•˜λŠ” Selective Search μ•Œκ³ λ¦¬μ¦˜μ€ Regional Proposals λ₯Ό μΆ”μΆœν•˜λŠ” μ‹œκ°„μ΄ 많이 κ±Έλ¦°λ‹€λŠ” 단점을 κ°–λŠ”λ‹€.

image

  • μœ„ 그림은 Regional Proposals λ₯Ό μΆ”μΆœν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜λ§ˆλ‹€ μ‹œκ°„, 결과에 λŒ€ν•΄ μΈ‘μ •ν•œ λ„ν‘œμ΄λ‹€.
  • 주둜 μ‚¬μš©λλ˜ SS 의 경우 λ‹€λ₯Έ 방식에 λΉ„ν•΄ ν™•μ‹€νžˆ λ§Žμ€ μ‹œκ°„μ΄ κ±Έλ¦¬λŠ” 것을 확인할 수 μžˆλ‹€.
  • SS 보닀 더 λΉ λ₯Έ EdgeBoxes 방식이 κ³ μ•ˆλ˜μ—ˆμœΌλ‚˜, κ·ΈλŸΌμ—λ„ Regional Proposal λΆ€λΆ„μ˜ μ‹œκ°„ μ†Œλͺ¨κ°€ λ§Žλ‹€.
  • Fast R-CNN μ—μ„œ μ‚¬μš©ν•œ 기쑴의 Regional Proposals 방식은 CPU λ₯Ό 기반으둜 κ΅¬ν˜„λ˜μ—ˆκ³  λ”₯λŸ¬λ‹ λ„€νŠΈμ›Œν¬λŠ” GPU λ₯Ό μ‚¬μš©ν•œλ‹€. λ•Œλ¬Έμ— Faster R-CNN μ—μ„œλŠ” Regional Proposals λ°©μ‹μ—μ„œ 병λͺ© ν˜„μƒμ΄ λ°œμƒν•œλ‹€λŠ” 점에 μ£Όλͺ©ν–ˆλ‹€.

병λͺ© ν˜„μƒμ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ CNN 을 μ‚¬μš©ν•΄ Region Proposals λ₯Ό μΆ”μΆœν•˜λŠ” RPN κ³Ό Anchor Box κ³ μ•ˆν–ˆλ‹€. RPN κ³Ό Anchor Box λŠ” λ‹€μŒμ˜ μž₯점을 κ°–λŠ”λ‹€.

  1. ν•™μŠ΅ν•œ κ°€μ€‘μΉ˜λ₯Ό Proposals 을 μΆ”μΆœν•  λ•Œ κ³΅μœ ν•΄ μ‚¬μš©ν•  수 있기 λ•Œλ¬Έμ— μΆ”λ‘  λ‹¨κ³„μ—μ„œ Proposal 을 κ³„μ‚°ν•˜λŠ” λΉ„μš©μ΄ 맀우 μž‘λ‹€. (이미지 λ‹Ή 10ms)
  2. Regional Proposals λ₯Ό μΆ”μΆœν•˜λŠ” λ°©μ‹κΉŒμ§€ End-to-End 둜 ν•™μŠ΅ν•΄ 더 쒋은 객체λ₯Ό 감지할 수 μžˆλ‹€.
  3. CNN 도 RPN 을 ν†΅ν•΄μ„œ attention λ§€μ»€λ‹ˆμ¦˜κ³Ό μœ μ‚¬ν•˜κ²Œ νŠΉμ • 뢀뢄을 더 μ§‘μ€‘ν•΄μ„œ λ³Ό 수 μžˆλ„λ‘ ν•™μŠ΅ν•œλ‹€.

Network Structure

image

Faster R-CNN 의 전체적인 λ„€νŠΈμ›Œν¬ κ΅¬μ‘°λŠ” λ‹€μŒκ³Ό κ°™λ‹€. herbwoodλ‹˜ 의 λ„€νŠΈμ›Œν¬ 그림을 μ°Έκ³ ν–ˆλ‹€. Faster R-CNN 은 λ‹€μŒκ³Ό 같이 RPN, Fast R-CNN 의 두 ꡬ쑰둜 λ‚˜λˆ„μ–΄μ§€κ³ , VGG λ₯Ό ν†΅κ³Όν•œ 같은 νŠΉμ§•λ§΅μ΄ RPN, Fast R-CNN 으둜 λ‚˜λˆ„μ–΄μ Έ κ³΅μœ λœλ‹€.

RPN

RPN(Regional Proposal Networks) λŠ” FCN(Fully Convolutional Networks) 둜 이루어져 μžˆμ–΄, μœ„μ˜ λ„€νŠΈμ›Œν¬ κ·Έλ¦Όκ³Ό 같이 3x3 conv, 1x1 conv λ₯Ό μ μš©ν•œλ‹€.

image

μœ„λŠ” RPN 의 ꡬ쑰이닀. RPN 의 μž‘λ™ 방식은 λ‹€μŒκ³Ό κ°™λ‹€.

  1. μœ„ λ„€νŠΈμ›Œν¬μ˜ ꡬ쑰와 같이 VGG λ₯Ό ν†΅κ³Όν•œ νŠΉμ§•λ§΅μ— 3x3 conv λ₯Ό μ μš©μ‹œν‚¨λ‹€. (νŒ¨λ”©μ„ μ μš©ν•΄ νŠΉμ§•λ§΅μ˜ ν¬κΈ°λŠ” λ³€ν•˜μ§€ μ•Šκ³  λ™μΌν•˜λ‹€.)
  2. Sliding Window 방식을 μ‚¬μš©ν•˜μ—¬ νŠΉμ§•λ§΅μ˜ cell 각각에 λŒ€ν•΄ k 개의 anchor box 듀을 μ‚¬μš©ν•˜μ—¬ 객체λ₯Ό νƒμ§€ν•œλ‹€.
  3. 1x1 conv λ₯Ό μ‚¬μš©ν•΄ 각 anchor box 에 λŒ€ν•œ cls layer, reg layer 의 값을 μ‚°μΆœν•œλ‹€.
  4. Anchor box λ§ˆλ‹€ cls, reg layer λ₯Ό 톡해 객체 포함 유무 점수λ₯Ό κ°€μ§€κ³  μ‘°μ •λœ bbox 값을 κ°–λŠ”λ‹€.
  5. Non-Maximum Suppression 을 μ‚¬μš©ν•˜μ—¬ κ°€μž₯ 객체 포함 μ μˆ˜κ°€ 높은 bbox λ₯Ό μ‚°μΆœν•œλ‹€.

전체 λ„€νŠΈμ›Œν¬ ꡬ쑰 κ·Έλ¦Όμ—μ„œ RPN ꡬ쑰λ₯Ό 보면 1x1 conv κ°€ 2 κ°€μ§€λ‘œ λ‚˜λˆ„μ–΄μ§€λŠ” 것을 λ³Ό 수 μžˆλŠ”λ°, μœ„ κ·Έλ¦Όμ—μ„œ λ³Ό 수 μžˆλ‹€μ‹œν”Ό Classifier, Bbox regressor 둜 λ‚˜λˆ„μ–΄μ§„λ‹€.

  • Classifier : 각 Anchor box 에 λŒ€ν•΄ 객체 포함 μœ λ¬΄μ— λŒ€ν•œ 점수λ₯Ό λ§€κΈ΄λ‹€. (Object, Not Object 점수λ₯Ό μ§€λ…€μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— h x w x 2*9 νŠΉμ§•λ§΅μ„ μΆ”μΆœν•œλ‹€.)
  • Bounding box regressor : Anchor box 의 μœ„μΉ˜λ₯Ό μ‘°μ •ν•˜λŠ” bbox μ‘°μ • μ’Œν‘œλ₯Ό μ„€μ •ν•œλ‹€. (4 개의 μ’Œν‘œκ°’μ„ κ°€μ Έμ•Ό ν•˜κΈ° λ•Œλ¬Έμ— h x w x 4*9 νŠΉμ§•λ§΅μ„ μΆ”μΆœν•œλ‹€.)

Anchor Box

객체λ₯Ό 탐지할 λ•Œ μš°λ¦¬λŠ” Selective Search 와 같은 방식을 μ‚¬μš©ν–ˆλ‹€. 이 방식은 segmentation 을 μ μš©ν•΄ λΆ„λ₯˜ν•œ 객체에 λŒ€ν•΄ bbox λ₯Ό μ μš©ν•΄ μ˜μ—­μ„ μΆ”μΆœν•˜λŠ” λ°©μ‹μ΄μ—ˆλ‹€. ν•˜μ§€λ§Œ λ”°λ‘œ 객체λ₯Ό λΆ„λ₯˜ν•˜λŠ” 것 없이 μ˜μ—­μ„ μΆ”μΆœν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— Anchor λ₯Ό 톡해 μΆ”μΆœν•˜λŠ” 방법을 μ‚¬μš©ν–ˆλ‹€.

image

Conv λ₯Ό 톡해 μ΄λ―Έμ§€λŠ” λ‹€μŒκ³Ό 같이 일정 크기의 grid 만큼 μ—°κ²°λ˜κ³ , grid cell 은 각각 일정 크기의 이미지λ₯Ό ν•¨μΆ•ν•˜κ³  μžˆλ‹€. 즉, 원본 이미지가 800x800 이고 νŠΉμ§•λ§΅μ΄ 8x8 일 λ•Œ cell ν•˜λ‚˜λŠ” 100x100 만큼의 이미지 정보λ₯Ό ν•¨μΆ•ν•˜κ³  μžˆλ‹€λŠ” μ˜λ―Έμ΄λ‹€. Anchor Box 방식은 이런 μ„±μ§ˆμ„ μ΄μš©ν•΄ νŠΉμ§•λ§΅μ— anchor box λ₯Ό μ μš©μ‹œν‚¨λ‹€.

image

Anchor λŠ” μœ„ κ·Έλ¦Όκ³Ό 같이 일정 크기와 일정 λΉ„μœ¨λ‘œ 사전 μ„€μ •ν•œ k 개의 bbox λ₯Ό μ˜λ―Έν•œλ‹€. 이 anchor λ₯Ό νŠΉμ§•λ§΅μ˜ 각 cell 에 λͺ¨λ‘ μ μš©ν•˜μ—¬ λ‹€μ–‘ν•œ 크기의 객체λ₯Ό 인식할 수 μžˆλ„λ‘ ν•œλ‹€.

  • ex) μœ„ 고양이 μ΄λ―Έμ§€μ˜ 경우 (원본 이미지 : 800x800, νŠΉμ§•λ§΅ : 8x8)
  • 8x8 의 cell 에 9 개의 anchor λ₯Ό μ μš©ν•΄ 8x8x9 개의 anchor κ°€ ν˜•μ„±λœλ‹€.

Anchor Box λŠ” λ‹€μŒκ³Ό 같은 식을 톡해 μ •μ˜ν•œλ‹€.

  • s : scale, μ •μ‚¬κ°ν˜•μΌ λ•Œμ˜ 길이
  • w : width
  • h : height
  • μœ„ μˆ˜μ‹μ€ width:height = 1:2 인 경우λ₯Ό μ˜λ―Έν•œλ‹€.

image

μœ„ 그림의 경우 Anchor Box λ₯Ό μ‚¬μš©ν–ˆμ„ λ•Œ 원본 이미지 ν¬κΈ°μ—μ„œ 포함할 수 μžˆλŠ” 크기λ₯Ό 보여쀀닀. 원본 μ΄λ―Έμ§€μ˜ λŒ€λΆ€λΆ„μ„ ν¬ν•¨ν•˜λŠ” 것을 확인할 수 μžˆλ‹€.

  • 원본 이미지 크기 : 800x600
  • νŠΉμ§•λ§΅ 크기 : 50x38 (16 λ°° sub-sampling)
  • 총 anchor 개수 : 50x38x9 = 1900

RPN Loss

  • : mini-batch μ•ˆ anchor 의 index
  • : i 번째 anchor 의 객체가 ν¬ν•¨λ˜μ–΄ μžˆμ„ ν™•λ₯ 
  • : anchor κ°€ positive 인 경우 1, negative 인 경우 0
    • negative 인 경우 μ μš©ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • : 예츑 bbox 의 μ‘°μ •λœ μ’Œν‘œ
  • : μ •λ‹΅ bbox 의 μ’Œν‘œ
  • : 객체인지 μ•„λ‹Œμ§€μ— λŒ€ν•œ log loss
  • : Smooth L1 loss
  • : mini-batch 의 크기 (i.e., =256)
  • : anchor 의 μœ„μΉ˜μ˜ 개수 (i.e., ~2,400)
  • : balancing parameter (Default = 10)
    • 10 으둜 와 κ°€ μœ μ‚¬ν•˜κ²Œ λ§žμΆ°μ„œ μ‹€ν—˜ν–ˆλ‹€.
  • Faster R-CNN 의 전체 손싀 ν•¨μˆ˜μ™€ RPN 손싀 ν•¨μˆ˜ 2 κ°œκ°€ ν•¨κ»˜ μ‚¬μš©λœλ‹€.

RPN 은 End-to-End 둜 μ˜€μ°¨μ—­μ „νŒŒ, SGD λ₯Ό ν†΅ν•΄μ„œ ν•™μŠ΅λœλ‹€.

Sharing Features (need to complement)

λ…Όλ¬Έμ—μ„œλŠ” Faster R-CNN 을 ν•™μŠ΅μ‹œν‚€κΈ° μœ„ν•΄ RPN κ³Ό Fast R-CNN 을 λ²ˆκ°ˆμ•„ ν•™μŠ΅ν•˜λŠ” Alternating Training 방식을 μ‚¬μš©ν•œλ‹€.

  1. RPN μ—μ„œ anchor box 와 ground truth box λ₯Ό 톡해 positive/negative 데이터셋을 ꡬ성해 RPN 을 ν•™μŠ΅μ‹œν‚¨λ‹€. 이 λ•Œ RPN 에 μ‚¬μš©λ˜λŠ” backbone λ„€νŠΈμ›Œν¬λ„ λ―Έμ„Έ μ‘°μ •λœλ‹€.
  2. RPN 을 ν•™μŠ΅ν•œ ν›„ RPN μ—μ„œ Regional Proposals λ₯Ό 생성해 Fast R-CNN 을 ν•™μŠ΅μ‹œν‚¨λ‹€.
  3. Fast R-CNN 이 ν•™μŠ΅λ˜λ©΄ κ³ μ •μ‹œν‚€κ³  RPN 을 λ‹€μ‹œ λ―Έμ„Έ μ‘°μ •ν•œλ‹€.
  4. 이후 RPN 을 κ³ μ •ν•˜κ³  Fast R-CNN 을 ν•™μŠ΅ν•œλ‹€.
  • Backbone λ„€νŠΈμ›Œν¬λ₯Ό 톡해 μƒμ„±ν•œ νŠΉμ§•λ§΅μ„ κ³΅μœ ν•¨μœΌλ‘œμ¨ μ„œλ‘œμ˜ νŠΉμ§•μ„ κ³΅μœ ν•˜λŠ” 방식을 μ˜λ―Έν•œλ‹€.

Results

  1. Sharing Features

image

νŠΉμ§• 곡유 μΈ‘λ©΄μ—μ„œ νŠΉμ§•μ„ κ³΅μœ ν•œ λͺ¨λΈμ΄ κ³΅μœ ν•˜μ§€ μ•Šμ€ λͺ¨λΈλ³΄λ‹€ 더 높은 μ„±λŠ₯을 λ³΄μΈλ‹€λŠ” λ©΄μ—μ„œ Regional Proposals μΆ”μΆœκ³Ό νƒμ§€κΈ°μ˜ νŠΉμ§•μ„ κ³΅μœ ν•˜λŠ” 것이 더 높은 μ„±λŠ₯을 λ³΄μΈλ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€. λ˜ν•œ RPN 의 cls 와 reg κ°€ 없을 λ•Œλ₯Ό 각각 확인해봀을 λ•Œ reg κ°€ μ—†λŠ” 경우 μ„±λŠ₯이 비ꡐ적 많이 ν•˜λ½ν•˜λŠ” 것을 보아 regressor λ₯Ό 톡해 bbox λ₯Ό μ‘°μ •ν–ˆμ„ λ•Œ κ³ ν’ˆμ§ˆμ˜ Regional Proposals 이 μΆ”μΆœλ¨μ„ μ•Œ 수 μžˆλ‹€.

  1. Inference time

image

μΆ”λ‘  μ„±λŠ₯을 확인해봀을 λ•Œ Fast R-CNN 은 0.5 fps 인 반면 Faster R-CNN 은 5 fps, 더 μž‘μ€ λ„€νŠΈμ›Œν¬μΈ ZF λ₯Ό μ‚¬μš©ν–ˆμ„ λ•ŒλŠ” 17 fps λ₯Ό 보이며 μΆ”λ‘  속도도 많이 μ€„μ˜€μŒμ„ 확인할 수 μžˆλ‹€.

  1. Comparing Fast R-CNN with Faster R-CNN

image

Faster R-CNN 이 이전 Fast R-CNN 보닀 더 높은 μ„±λŠ₯을 λ³΄μΈλ‹€λŠ” 것을 확인할 수 μžˆλ‹€.

μ°Έκ³ λ¬Έν—Œ