컨벌루션 신경망 학습 메모

소개



심층 학습의 CNN(컨벌루션 신경망)을 학습했으므로, 아마추어 나름대로 이해한 것을 메모에 남깁니다.

참고 사이트



이 사이트를 참고했습니다. 애니메이션에서의 도해가 매우 도움이 되었습니다.
  • 컨벌루션 신경망의 구조
  • 고졸에서도 알 수있는 기계 학습 (7) 컨벌루션 신경망 1
  • 스테디셀러 Convolutional Neural Network를 처음부터 이해
  • Stanford wiki/Convolution schematic.gif
  • 심층 학습 제6장 컨벌루션 신경망

  • 이미지에서 물체를 인식하고 싶습니다.



    픽셀 화상으로부터 물체를 식별·인식하고 싶다! 라는 요구는 옛날부터 있습니다.
    예를 들어,
  • 종이 자료를 찍은 이미지에서 문자를 인식하고 싶습니다
  • 악보를 찍은 이미지에서 음표를 인식하고 싶습니다
  • 드라이브 레코더의 영상에서 장애물을 인식하고 싶습니다

  • 같은 녀석입니다.
    이러한 요구에 부응하는 것이 CNN입니다.

    어떻게 물체를 인식하는가?



    다음과 같은 처리로 특징을 강조합니다! !
  • 컨벌루션 : 필터링하여 특징을 강조합니다
  • 풀링 : 크기를 조정하여 노이즈를 줄입니다

  • 특징을 강조함으로써 물체의 인식이 쉬워집니다. (잘못하면 죄송합니다)

    컨벌루션이란?



    CNN은 Convolutional neural network의 약자로 Convolutional의 일본어 번역이 컨볼루션입니다.
    필터를 걸어 특징을 강조하는 처리를 컨벌루션이라고 합니다.
    여기의 애니메이션을 이해하기 쉽습니다.



    인용구 : Standford wiki/Convolution schematic.gif

    컨벌루션 전에는 해상도가 5x5인 흑백 이미지입니다.
    \begin{align}
      畳み込み前 = \left(
        \begin{array}{ccc}
          1 & 1 & 1 & 0 & 0 \\
          0 & 1 & 1 & 1 & 0 \\
          0 & 0 & 1 & 1 & 1 \\
          0 & 0 & 1 & 1 & 0 \\
          0 & 1 & 1 & 0 & 0 \\
        \end{array}
      \right)
    \end{align}
    

    필터는 3x3로, 이런 느낌입니다.
    \begin{align}
      フィルタ = \left(
        \begin{array}{ccc}
          1 & 0 & 1 \\
          0 & 1 & 0 \\
          1 & 0 & 1
        \end{array}
      \right)
    \end{align}
    

    필터를 걸면 이런 식으로 3x3의 데이터가 생성됩니다.
    \begin{align}
      畳み込み後 = \left(
        \begin{array}{ccc}
          4 & 3 & 4 \\
          2 & 4 & 3 \\
          2 & 3 & 4
        \end{array}
      \right)
    \end{align}
    
    4 와 같이 값이 큰 곳은, 특징이 강한 곳에서, 2 와 같이 값이 작은 곳은 특징이 약한 곳으로 간주합니다.

    이렇게 특징을 강조하는 것이 컨벌루션입니다.

    다만 이 방법이라면 해상도가 5x5에서 3x3으로 떨어지고 버려 외부 데이터가 누락되어 버리는 문제가 있습니다.

    패딩



    단순히 컨벌루션을 하면, 외주의 픽셀이 누락되어 버리기 때문에, 원 화상의 외측에 1픽셀분의 여백(패딩)을 붙이는 것으로, 이 문제를 회피합니다. 패딩은 여백이라는 의미입니다.

    여백의 값을 0으로 채우는 것이 제로 패딩입니다. 다만, 화상 데이터의 경우, 0은 흑이라는 의미를 가져 버리기 때문에, 명암을 중시하는 필터와의 궁합은 나쁘다.

    그러므로 여백을 0이 아닌 그와 같은 값으로 채우는 방법이 몇 가지 있는 것 같습니다.

    스트라이드



    스트라이드는 직역하면 보폭입니다.
    지금까지는 필터를 1픽셀 간격으로 걸어 갔습니다. 이것은 보폭이 1입니다.
    필터를 2픽셀 간격으로 걸어 가면, 스트라이드가 2가 됩니다.

    풀링



    수영장은 모으거나 남기는 것 같은 의미입니다.
    원본 이미지의 해상도가 크면 노이즈도 많아집니다.
    특징을 남기면서, 축소 리사이즈해 해상도를 줄이는 것이 풀링입니다. (잘못하면 죄송합니다)

    리사이즈 기법으로
  • 주변 픽셀의 최대치를 채용한다.
  • 주변 픽셀의 평균치를 채용한다.

  • 등의 다양한 기술이 있습니다.

    사이고에게



    실수가 많이 있다고 생각합니다. 지적해 주시면 기쁩니다.

    좋은 웹페이지 즐겨찾기