관리 메뉴

DeseoDeSeo

[Open cv] object Detection(객체 탐지) 본문

Open cv

[Open cv] object Detection(객체 탐지)

deseodeseo 2023. 10. 26. 11:12

object Detection(객체 탐지)

 : 이미지 내에서 객체(사물, 사람 등)를 감지해 내는 것 (어디에 있는지)

  활용분야 : 체온 측정, cctv위급상황 감지, 드론을 활용한 교통상황 파악, 자율주행 차 차량 거리 파악

 

객체 탐지 알고리즘의 역사 

 < 발전 순서 >

1. Traditional Detection Methods (가장 기본적인 방법)

    : 슬라이딩 윈도우  : 고정된 크기의 Window(초록박스)로 이미지의 좌상단부터 우하단으로 일일이 객체를 검출해

                                     나가는 방식

                                   < 문제점 > 

                                      : 객체가 없는 영역도 무조건 Sliding해야하며 여러 Scale의 이미지를 스캔하여 검출하는 방식

                                        (수행시간⬆ , 검출성⬇)

2. Two-stage detector

  영역 추정과 탐지, 두 단계를 따로 수행하는 방식

    - Sliding window의 비효성으로 인해 R-CNN알고리즘에서는 객체가 있을법한 2000여개의 영역을 찾고 

    - 문제점 : 객체들이 다른 크기를 가지고 있으면 후보 영역을 찾는 정확도가 떨어진다. 

   

     선택적 검색(Selective Search)

       - 처음에는 분할된 모든 부분들을 Bounding box로 만들어 리스트에 추가

          색상, 무늬, 크기, 형태에 따라 유사독가 비슷한 부분들을 그룹핑(Bbox 개수 감소)

         1,2단계를 계속 반복

        - 장점 : 정확하다.

        - 단점 : 느리다.

 

    

3. One-stage detector

  selective search방식으로 인해 높은 정확도 객체 탐지가 가능하지만 여전히 낮은 속도로 실시간 적용 어려움.

- 영역 추정과 객체 탐지를 통합해 한 번에 수행함.

- (장점) : 탐지 속도의 획기적인 향상으로 실시간 탐지가 가능하다.

 

YOLO 

 : one-stage dector 방식으로 실시간 객체 검출 알고리즘의 선봉장

16년 v1 ~ 22년 v8까지 오픈소스로 출시됨.

v1은 two-stage detector의 faster R-CNN(vgg16 적용) 보다 6배 빠른 속도로 논문에 기재됨.

CNN(이미지 인식 )  VS  YOLO(객체탐지)

라벨링을 쉽게 해주는 웹 사이트

https://roboflow.com/

 

Roboflow: Give your software the power to see objects in images and video

With just a few dozen example images, you can train a working, state-of-the-art computer vision model in less than 24 hours.

roboflow.com

 

< YOLO를 사용하기 위한 환경설정 진행 >

Anaconda Prompt에서

 

activate opencv 

pip install git-python  : python과 git을 연동하기 위해 필요한 라이브러리

conda install git

git clone https://github.com/ultralytics/yolov5

 

GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite

YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite. Contribute to ultralytics/yolov5 development by creating an account on GitHub.

github.com

cd yolov5

pip install -r requirements.txt

jupyter notebook