[딥러닝] Object Detection( 객체 인식 ) - selective search 실습

김영민·2022년 9월 28일
0

DeepLearning

목록 보기
21/33
post-custom-banner

모든 이미지의 출처는 인프런 : 컴퓨터 비전 완벽 가이드 에 있으며, 공부 기록용으로 블로그를 작성하는 것입니다.

Object Detection의 어려움 !

object detection은 두 개 이상의 Object를 검출해야 하므로 기존의 Object localization과 다르게 굉장히 어렵습니다.
이를 해결하기 위해 처음으로 나온 방식은 Sliding Window 방식입니다.

Sliding Window 방식

  • Window를 왼쪽 상단부터 오른쪽 하단까지 연속적으로 이동시키면서 Object를 찾는 방식입니다.
  • 방법 1: 다양한 크기의 Window를 슬라이딩하는 방식
  • 방법 2: Window 크기는 고정한 채 원본 이미지를 다양한 크기로 변형하여 슬라이딩하는 방식

문제점

  • 수행 시간이 오래 걸리고 검출 성능이 낮음

Selective Search 방식

엄밀히 말해서는 Region Proposal 방식으로, 영역을 추정하는 방식인데 그 중에서 가장 유명한 기법 중 하나인
selective search를 설명하겠습니다.

  • 위의 그림처럼 원본 이미지 내의 컬러,무늬,크기,형태에 따라 유사한 Region을 그룹핑합니다.

  • Over segmentation된 이미지를 여러번 반복하여 유사한 Region끼리 그룹핑을 진행한 뒤, bounding box를 그립니다.

Selective Search 실습

1. selective search 설치

!pip install selectivesearch

2. 이미지 불러오기 및 출력

import selectivesearch
import cv2
import matplotlib.pyplot as plt
import os

img = cv2.imread('/content/sample_data/audrey01.jpeg')
img_rgb = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
print("image shape",img.shape)

plt.figure(figsize=(8,8))
plt.imshow(img_rgb)

plt.show()

3. selectivesearch 사용

import selectivesearch

#scale 크다 -> 큰 object 위주로 찾아라, min_size -> 적어도 min_size 이상의 object 찾아라
#regions -> object가 있을만한 공간
_, regions = selectivesearch.selective_search(img_rgb, scale=100, min_size=2000)

print(type(regions), len(regions))

출력: <class 'list'> 41

  • selective_search
    • scale : 찾을 Object의 크기 설정
    • min_size : 찾을 Object의 최소한의 크기

4. regions 출력

5. bounding box 그려보기


cand_rects = [cand['rect'] for cand in regions if cand['size'] > 10000] # rects만 가져와서 저장

green_rgb = (125,255,51)
img_rgb_copy = img_rgb.copy() # 그림 카피 뜨기

for rect in cand_rects:
  left=rect[0]
  top=rect[1]

  right = left + rect[2]
  bottom = top + rect[3]

  img_rgb_copy = cv2.rectangle(img_rgb_copy, (left,top),(right,bottom),color=green_rgb, thickness=2) 
  #사각형 좌표의 왼쪽 상단, 오른쪽 하단 입력

plt.figure(figsize=(8,8))
plt.imshow(img_rgb_copy)
plt.show()

  • cv2.rectangle로 사각형 그려주기

이렇게 selective search에 대해 알아보았습니다.

post-custom-banner

0개의 댓글