Upstage AI Lab/AI 심화학습 : CV

[2-2] 고전 컴퓨터 비전 심화

Visioneer 2024. 1. 31. 18:13

1. Contour Detection

  • Contour
    같은 색깔 및 intensity를 가지는 연속적인 경계점들로 이루어진 curve. 즉, 물체의 경계들.
    고전 컴퓨터 비전을 활용하여 raw image에서 객체의 contour를 추출. 

  • 중요성
    딥러닝 모델은 다량의 학습 데이터가 필요. 다만 이런 데이터를 만들 때, 딥러닝 모델 만을 사용한다면, 데이터를 만들때 사용한 딥러닝 모델의 취약점이 그대로 학습 데이터에 반영될 수 있음. 따라서 딥러닝 모델과 관련없는 고전 컴퓨터 비전 알고리즘을 이용하여 데이터를 가공해야할 경우가 생길 수도 있음. 
    더불어 고전 컴퓨터 비전 기술은 딥러닝 모델보다 더 작은 하드웨어량의 하드웨어로 구동이 가능. 아주 많은 양의 데이터를 처리할 때, 비용적인 측면에서 유리할 수 있음. 뿐만 아니라 현업에서 데이터를 다루다보면 특정 경에서 규칙 기반의 알고리즘이 충분히 좋은 성능을 내는 경우가 있음. 오히려 데이터양의 부족으로 딥러닝 모델의 성능이 초기 데이터 가공 단계에서는 더 떨어질 수도 있음. 
    결론 : 다양한 환경에서 딥러닝 모델을 잘구축하려면 여러 상황에서도 쉽고 비용 절감이 가능한 고전 컴퓨터 비전 기술로 데이터를 전처리할 수 있는 방법이 큰 도움을 줌. 

  • Contour Detection 과정

    1. Edge detection
        이때의 결과는 Binary. Edge인 부분은 1, 아닌 부분은 0

    2. Dilation (Optional)
        너무 세밀하게 추출된 Edge를 합쳐줌. 너무 세밀하게 Edge가 추출되면 Contour detection 단계에서 과하게 많은
        관계가 추출되기 때문.

    3. Contour Detection
        원래의 이미지 결과 혹은 Dilation이 적용된 이미지를 입력으로 놓고 알고리즘을 통해서 Edge가 이어져있는
        curve를 찾아서 경계들로 반환해줌. 
    출처 : Upstage 고전 컴퓨터 비전 심화 이론, 6page
  • [1. Edge detection]
    • Canny Edge Detector 
      컴퓨터 비전에서 가장 널리 사용되는 edge detector 
      1986년 TPAMI 발표된 논문, John Canny에 의해 개발 

    • 장/단점
      장점 - 정확도 높음
      단점 - 실행 시간 느림, 구현 복잡함 

    • 과정 
      (1단계) 노이즈 제거
      (2단계) 이미지 내의 높은 미분값 찾기
      (3단계) 최대값이 아닌 픽셀 값 0으로 치환
      (4단계) 하이퍼 파라미터 조정을 통한 세밀한 엣지 검출 

    • (1단계) 노이즈 제거
      원본 이미지의 노이즈를 추출하여, 엣지를 추출하기 좋은 상태로 만듦. 
      노이즈를 줄이기 위해, 가우시안 필터를 이용

      • 가우시안 필터란?
        가우시안 분포 함수를 근사하여 생성한 필터 마스크
        가우시안 필터 마스크 행렬은 중앙부에서 큰 값을 가짐
        중앙에서 외곽으로 갈수록 0에 가까운 작은 값을 가

      • 노이즈 제거 단계가 왜 굳이 Edge detection 단계에 포함되는가?
        이미지에서 '노이즈'를 상상할 때, 이미지가 자글자글한 것으로 생각할 수 있다. 이때에 이미지가 자글자글하다는 것은 특정 pixel의 값이 주변과 상관없이 너무 큰 값을 가지거나 너무 작은 값을 가져서 시각적으로 눈에 띄는 경우라고 이해할 수 있음. 
        만약 이러한 pixel을 제거하지 않고 그대로 Edge를 검출하려하면 해당 노이즈가 있는 주변에서는 매우 높은 미분값이 마구 검출되어 실제로는 Edge가 아니지만, 후보가 되는 경우가 많은 것임. 
        따라서 Edge 검출에 도움이 될 수 있도록, 가우시안 필터 같은 것들을 적용하여 튀는 pixel 값들을 미리 제거해주는 과정을 거치는 것. 

    • (2단계) 이미지 내의 높은 미분값 찾기 - Find the intensity gradient
      Sobel 필터등을 이용하여 이미지 내에 높은 미분값 or gradient를 찾음. 

      수평 방향의 gradient : $G_{x}$ , 수직 방향의 gradient : $G_{y}$
      gradient의 방향은 엣지와 수직한 방향
      Edge_Gradient(G) = $\sqrt{G_{x}^{2}+G_{y}^{2}}$
      Angle ($\theta$) = $\tan ^{-1}\left( \dfrac{G_{x}}{G_{y}}\right)$

      • gradient란?
        열 또는 행 방향으로 픽셀 값의 변화 정도.
        특정 방향으로 gradient가 크게 있다면, 급격한 pixel 변화를 뜻함. 또한 이것이 우리가 관심있게 보는 Edge 중에 하나일 가능성이 높음. 

      • Soble 커널이란?
        행 또는 열의 변화율을 계산하는 마스크
        Edge 검출에 특화 

    • (3단계) 최대값이 아닌 픽셀 값 0으로 치환 - Non Maximum Suppression  
      목표 : 엣지 검출에 기여하지 않은 픽셀 제거
      찾은 gradient 방향으로 gradient의 최대값을 가진 pixel만 남기고 나머지 값은 제거하여 0으로 바꿈. 즉, 2단계에서 많은 gradient가 추출되니 그중에 대표가 될 만한 것만 남김. 

      $$M(x,y)=\left\{\begin{matrix}\left|\triangledown G\right|(x,y)\text{if}\left|\triangledown G\right|(x,y)>\left|\triangledown G\right|(x',y')\\\qquad\qquad\;\;\;\&\left|\triangledown G\right|(x,y)>\left|\triangledown G\right|(x'',y'')\\0\quad\text{other wise}\end{matrix}\right.$$
      출처 :https://docs.opencv.org/3.4/da/d22/tutorial_py_canny.html
    • (4단계) 하이퍼 파라미터 조정을 통한 세밀한 엣지 검출 - Hyteresis Thresholding
      이미지 상에서 변화량이 큰 부분들 중 대표적인 pixel이 위치한 곳에만 높은 pixel값들이 남음. 
      마지막 단계에서는 적절한 최소, 최대값을 설정. 이 기준에 부합하는 값을 가진 pixel들을 Edge로 검출.
      이때에 여러가지 최대 최소 값들을 잘 설정하여 세밀하게 엣지를 검출해야함. 
      2가지의 Threshold (Low Threshold, High Threshold)를 정의
      출처 :https://docs.opencv.org/3.4/da/d22/tutorial_py_canny.html
  • [3. Contour Detection] 
    출처 : Upstage 고전 컴퓨터 비전 심화 이론, 14page

    연결된 Edge끼리 이으면 그것이 곧 Contour. 

'Upstage AI Lab > AI 심화학습 : CV' 카테고리의 다른 글

[14] CV 모델 성능 높이기  (0) 2024.02.06
[3-1] CV 모델 구조 이해  (0) 2024.02.01
[2-1] 고전 컴퓨터 비전  (0) 2024.01.31
[1] Computer Vision 이란?  (0) 2024.01.31