* 공부한 내용 뇌피셜로 정리 *

Non max suppression 기법

Non max suppression 기법은 Object detection 알고리즘에서 사용되는 방법중 하나 입니다.

Object detection은 있을만한 위치를 모두 예측 하므로 위에 그림과 가이 겹치는 bounding box가 많아 집니다.

이렇게 겹치는 bounding box가 많을때 비슷한 것을 제거하고 가장 적합한 것을 선택하는 기법입니다.

NMS수행 로직은 어렵지 않습니다.

 

1단계

Object detected 된 bounding box에서 사용자가 설정한 confidence threshold이하인 bounding box는 모두 제거 합니다. 즉 이용자가 threshold를 0.6 으로 정하면 0.6 이하는 모두 제거합니다.

2단계

confidence score별로 내림차순을 적용합니다.

3단계

confidence score가 높은 놈들과 겹치는 다른 box는 모두 제거 하는데, 이용자가 정한 특정한 IOU Threshold 이상인 것들은 모두 제거 합니다. 즉 IOU값은 0.5로 정하면 0.5 이상은 모두 제거합니다.

4단계 

남아있는 BBOX를 선택합니다.

* 공부한 내용 뇌피셜로 정리 *

Intersection over union은 model이 예측한 결과와 ground truth 실측 box가 얼마나 겹치는 가에 대한 지표 입니다. 

간단하게 그림과 같이 생각 할 수 있습니다. 겹치는 영역 / 전체 box 영역 입니다.

값의 범위는 0~1로 1에 가까울수록 예측을 잘한 것 이라는 것을 알 수 있습니다.

IOU는 코드로 간단하게 구현이 가능한데 다음과 같이 구현 하였습니다.

IOU를 간단하게 구현하고 예를 들기 위해 저번 포스팅에서 실습한 Selective Search를 활용 하였습니다.

 

https://inha-kim.tistory.com/37?category=963044 

 

[컴퓨터 비전] Sliding window 대한 내용, Selective Search 사용 및 시각화

* 공부한 내용 뇌피셜로 정리 * 컴퓨터 비전에서 Sliding Windows방식은 Object Detecion에 아주 초기 기법으로 사용된 방식이다. 사용방법은 다양한 크기의 Windows(보통 사각형 모양)을 이미지에서 이동시

inha-kim.tistory.com

내용이 궁금한 분은 들어가 보세요.

필수 패키지 import

필수 패키지 import합니다. selective search 이후의 code입니다.

 

opencv로 데이터 시각화

ground truth영역을 임의로 정한 뒤에 ground truth box는 red로, selective search 로 구한 영역을 초록색으로 표현 

하였습니다.

출력결과 

코드 실행 결과는 다음과 같습니다. 빨간색이 실제 영역, 나머지는 예측 영역.

iou를 계산하는 코드

iou계산은 다음과 진행됩니다.

교차 영역 /예측영역 + 실제 영역 - 교차 영역 

교차영역은 왼쪽 위 꼭지점, 아래 꼭지점을 구하여 넓이를 구할 수 있습니다. 이때 만약 교차하지 않으면 겹치는 영역은 0으로 됩니다.

iou를 출력하는 코드

iou를 출력하는 코드는 enumerate를 이용하여 index와 cand_box로 rects를 전달합니다.

rects에서 전달받은 좌표값을 살짝 가공 해야하는데 selective search에서 나온 값은 왼쪽 위 꼭지점 + 너비와 높이 값 이므로 오른쪽 아래의 좌표는 각각 cand_box[2]와 cand_box[3]에 cand_box[0,1] 값을 더해서 compute_iou에 전달합니다.

계산된 iou

iou값을 시각화를 진행 하여 보겠습니다.

iou가 0.5 이상인 값들만 시각화를 진행 하였습니다.

iou 0.5이상에 박스 추가

다음과 같이 iou가 0.5이상일 경우 rectangle과 putText를 추가 하였습니다.

출력결과

전체 코드는 다음과 같이 코랩에 있습니다.

https://colab.research.google.com/drive/1HtS-UsIrCRkn3gQE4xSVjcHV8en4WHyX?usp=sharing 

 

IOU.ipynb

Colaboratory notebook

colab.research.google.com

 

* 공부한 내용 뇌피셜로 정리 *

컴퓨터 비전에서 Sliding Windows방식은 Object Detecion에 아주 초기 기법으로 사용된 방식이다.

사용방법은 다양한 크기의 Windows(보통 사각형 모양)을 이미지에서 이동시켜가면서 객체가 있을법한 위치를 찾는방법

하지만 이 방식은 여러개의 Window사이즈, 그리고 이미지 사이즈를 이용하여 찾아야 다양한 크기의 객체를 찾을 수

있어 모든 경우를 따져야 하므로 수행시간도 오래 걸리고, 생각보다 적절한 검출이 어렵다.

그래서 탄생한 방식이 위와같이 모든 경우를 탐색하는 방법보다는 Region Proposal 영역추정 Object가 있을 만한 곳을 추정하자는 방식이 나오게 되었다.

여기서 나온 알고리즘이 Selective Search 이다.

Selective Search는 객체가 있을 만한 곳을 탐지하는데 이때 어떻게 탐지하느냐, Color,Size,Texture,Shape에 따라 Segmentaion을 적용하는데, 이때 심각하게 Over Segmentation이 발생 하는 경우도 발생 하는데 이걸 그대로 사용하는 것이 아니라 주변의 Color,Size,Texture,Shape가 유사한 것 들 끼리 grouping을 반복하여 Region Proposal을 반복 합니다. 그러면 처음에 Raw하게 Segmentaion 한 것 보다는 적은 Bounding box를 얻을 수 있습니다.

 

 

 

https://colab.research.google.com/drive/18yMw5pe0vR_0mtwVcTkfEA5aOjdwMUnB?usp=sharing 

 

Selective_Search.ipynb

Colaboratory notebook

colab.research.google.com

간단하게 있는 패키지를 이용하여 실습을 진행 하였습니다.

인공지능이란?(AI)

인간의 학습,추론,지각 능력을 인공적으로 구현하는 컴퓨터 과학의 분야이다. 하나의 인프라 기술

즉 사람의 지능을 만들기 위한 프로그램이다.

 

여기서 인공지능은 Strong AI와 Weak AI두개로 나눠진다.

Strong AI 같은 경우 사람과 구분이 불가능 할 정도의 강한 성능을 가진 인공지능, 즉 아이언맨의 쟈비스, 그녀(Her)에 나온 인공지능들을 말합니다. 매우 만들기 어려우며 , 기술이 출시되는 시기가 언제일지 알기도 어려울 정도 입니다.

 

Weak AI 같은 경우에는 사진에서 물체를 찾는거나, 소리를 듣고 상황 파악  같이 인간이 쉽게 해결이 가능하지만 

컴퓨터로 처리하기에는 어려웠던 문제를 컴퓨터로 수행하게 만드는 것에 중점을 두고 있는 것 입니다. 

즉 특정한 영역에서 작업을 수행하는 인공지능입니다. 자율주행 운전 보조, 질문 답변 같은 일들을 처리 합니다.

현재 나온 것으로는 테슬라의 자율주행, 시리, 빅스비 등이 있습니다.

 

현재 나온 대부분의 기술은 약인공지능 기술이며 현재 생활에 많은 부분에 사용 되고 있습니다. 

 

머신러닝, 딥러닝, 인공지능의 관계는 어떠한가?

다음과 같은 관계를 가진다는 것으로 이해 하면된다.

AI, 머신러닝, 딥러닝의 관계

다음과 같은 관계를 가지므로 머신러닝을 잘 이해해야 딥러닝을 할 수 있습니다.

 

선형회귀(Linear regression),경사하강법(gradient descent)

Linear regression은 머신러닝 알고리즘 중 하나이며, 1차함수를 사용할 때는 2차원에서 평면에 놓인 점을 찾는데 사용

됩니다. 이것으로 x,y값을 예측이 가능합니다.

당뇨병환자 데이터 셋에대한 Linear regression. 사이킷런에 있는 당뇨병환자 데이터 셋을 사용함.

최적화 알고리즘 경사하강법(gradient descent)이용

경사하강법이란 기울기를 사용하여 모델을 조금씩 조정하는 최적화 알고리즘입니다.  

보통 예측값으로 올바른 모델을 찾는 방법은

1. weight와 bias를 정한 뒤에 모델을 예측

2. 샘플로 결과 구한 뒤, target과 비교,

3. target과 가까워지도록 weight와 bias를 조정

4. 모든 샘플에 대해서 다음과 같이 수행

 

CS231n 강의 공부

Chapter1은 간단한 컴퓨터비전 소개 ,

Chapter2는 고전적인 Image classification pipeline에 대한 소개 였다.

 

 

+ Recent posts