컨벌루션 신경망 학습 메모
3685 단어 DeepLearningCNN기계 학습
소개
심층 학습의 CNN(컨벌루션 신경망)을 학습했으므로, 아마추어 나름대로 이해한 것을 메모에 남깁니다.
참고 사이트
이 사이트를 참고했습니다. 애니메이션에서의 도해가 매우 도움이 되었습니다.
이 사이트를 참고했습니다. 애니메이션에서의 도해가 매우 도움이 되었습니다.
이미지에서 물체를 인식하고 싶습니다.
픽셀 화상으로부터 물체를 식별·인식하고 싶다! 라는 요구는 옛날부터 있습니다.
예를 들어,
같은 녀석입니다.
이러한 요구에 부응하는 것이 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가 됩니다.
풀링
수영장은 모으거나 남기는 것 같은 의미입니다.
원본 이미지의 해상도가 크면 노이즈도 많아집니다.
특징을 남기면서, 축소 리사이즈해 해상도를 줄이는 것이 풀링입니다. (잘못하면 죄송합니다)
리사이즈 기법으로
\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}
\begin{align}
フィルタ = \left(
\begin{array}{ccc}
1 & 0 & 1 \\
0 & 1 & 0 \\
1 & 0 & 1
\end{array}
\right)
\end{align}
\begin{align}
畳み込み後 = \left(
\begin{array}{ccc}
4 & 3 & 4 \\
2 & 4 & 3 \\
2 & 3 & 4
\end{array}
\right)
\end{align}
단순히 컨벌루션을 하면, 외주의 픽셀이 누락되어 버리기 때문에, 원 화상의 외측에 1픽셀분의 여백(패딩)을 붙이는 것으로, 이 문제를 회피합니다. 패딩은 여백이라는 의미입니다.
여백의 값을 0으로 채우는 것이 제로 패딩입니다. 다만, 화상 데이터의 경우, 0은 흑이라는 의미를 가져 버리기 때문에, 명암을 중시하는 필터와의 궁합은 나쁘다.
그러므로 여백을 0이 아닌 그와 같은 값으로 채우는 방법이 몇 가지 있는 것 같습니다.
스트라이드
스트라이드는 직역하면 보폭입니다.
지금까지는 필터를 1픽셀 간격으로 걸어 갔습니다. 이것은 보폭이 1입니다.
필터를 2픽셀 간격으로 걸어 가면, 스트라이드가 2가 됩니다.
풀링
수영장은 모으거나 남기는 것 같은 의미입니다.
원본 이미지의 해상도가 크면 노이즈도 많아집니다.
특징을 남기면서, 축소 리사이즈해 해상도를 줄이는 것이 풀링입니다. (잘못하면 죄송합니다)
리사이즈 기법으로
수영장은 모으거나 남기는 것 같은 의미입니다.
원본 이미지의 해상도가 크면 노이즈도 많아집니다.
특징을 남기면서, 축소 리사이즈해 해상도를 줄이는 것이 풀링입니다. (잘못하면 죄송합니다)
리사이즈 기법으로
등의 다양한 기술이 있습니다.
사이고에게
실수가 많이 있다고 생각합니다. 지적해 주시면 기쁩니다.
Reference
이 문제에 관하여(컨벌루션 신경망 학습 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/segur/items/4cc70b4d572bf132a35f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(컨벌루션 신경망 학습 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/segur/items/4cc70b4d572bf132a35f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)