해당 내용은 Laurence Moroney 교수님의 Coursera의 TensorFlow Developer Professional Certificate의 3주차 강의 Enhancing Vision with Convolutional Neural Networks 를 듣고 정리한 내용이다.
스따또.
이제 관련 직종인 만큼 더 열심히 들어야겠다😎
이번 강의는 실제로 컨볼류션이 어떻게 움직이는지, 풀링 알고리즘을 생성하며 그 영향을 실습으로 확인하는 강의이다.
- 이 실습에서는 2D 회색조 이미지에 기본 컨볼루션을 생성하여 컨볼루션이 작동하는 방식을 살펴본다.
(1) Scipy에서 ascent image 다운로드
(2) pyplot라이브러리 사용해 이미지 시각화
(3) 이미지는 numpy 배열로 저장됨.
그러므로 해당 배열을 복사하여 변환된 이미지를 만들 수 있음.
나중에 반복할 수 있도록 이미지의 크기를 얻을 수도 있음.
(4) 3x3 배열로 필터를 생성 및 다양한 값으로 실험하기
*주의 사항
필터의 모든 값의 합이 0이나 이 아니면 웨이트를 다르게 설정해야함.
ex) 필터의 모든 합이 10이으로 정규화하려면 가중치를 .1로 설정해야함.
그렇게하면 필터에 1/10이 곱해지게 되므로 모든 가중치의 합이 1이 되게 됨!
(5) 이제 컨볼루션을 만들 수 있다.
이미지를 반복하면서 1픽셀의 여백을 남기고 현재 픽셀의 각 이웃에 필터에 정의된 값을 곱한다. (즉, 필터에서 현재 픽셀의 위쪽 및 왼쪽 이웃에 왼쪽 상단 항목이 곱해진다.)
그런 다음 결과에 가중치를 곱하고 결과가 0-255 범위에 있는지 확인한다.
마지막으로 변환된 이미지에 새 값을 로드한다.
(6) 5번의 루프가 끝나면 컨볼루션 효과를 시각화할 수 있다.
(7) max pooling 효과 시각화
다음 셀에는 (2, 2) 풀링이 표시됨.
여기서의 아이디어는 이미지를 반복하고 픽셀과 오른쪽, 아래, 오른쪽 아래의 근접한 이웃을 살펴보는 것이다. 그 중 가장 큰 이미지를 가져와 새 이미지에 로드한다. 따라서 새 이미지는 이전 이미지 크기의 1/4이 된다. 즉, 이 프로세스를 통해 X와 Y의 크기가 절반으로 줄어든다.
이러한 압축에도 불구하고 기능이 유지되는 것을 볼 수 있다!
*추가 정보
https://lodev.org/cgtutor/filtering.html#Convolution
Image Filtering
#define filterWidth 9 #define filterHeight 9 double filter[filterHeight][filterWidth] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0
lodev.org
'coursera강의 > TensorFlow Certificate' 카테고리의 다른 글
TensorFlow Developer Professional Certificate [3]-2 (0) | 2024.03.08 |
---|---|
TensorFlow Developer Professional Certificate [1] - 2 (0) | 2024.03.04 |
TensorFlow Developer Professional Certificate [1] (0) | 2024.02.23 |