본문 바로가기

CNN 기초10

37. [CNN기초] 다채널(multi channel) 다루기 이전 시간까지 1개 채널을 가진 이미지를 1개의 필터를 이용하여 특성을 추출한 후 학습을 진행하였다. 1개 채널을 가진 이미지로 만들기 위해 흑백이미지(Grayscale)로 만들어 학습시켰다. 하지만, 색깔도 엄연히 이미지의 특징에 해당된다. 예를 들어 아래 사진의 색맹분들 처럼 입력 데이터에 색깔 정보가 없다면, 인공신경망은 잘못된 학습을 할 가능성이 높다. 색상에 대한 정보를 어떻게 다루어야 하는지 CNN 시리즈 마지막 포스트로 이야기 하고자 한다. 1. 채널(channel) 채널이란 영상 또는 이미지의 색상에 대한 정보를 담은 객체라고 생각해 볼 수 있으며 일반적으로 아래와 같이 R, G, B, Alpha로 구성되어 있다. 아래 코드를 통해 직접 확인해 보자. import numpy as np im.. 2023. 2. 18.
34. [CNN기초] Max pooling, Average pooling 구현 Pooling을 정말 간단하게 이야기하자면 이미지의 있는 특징들을 요약하는 작업이다. 사용하는 이유는 일반적으로 특성 맵의 차원을 줄임으로써 연산량을 줄여줄 수 있을 뿐만 아니라 특징을 요약했기 때문에 입력 이미지 특징들의 위치 변화(회전, 대칭이동 등)에 잘 반응한다. Pooling은 최대 풀링(Max pooling)과 평균 풀링(Average pooling) 두 가지가 있는데 각각 장단이 있다. 오늘은 풀링을 넘파이로 어떻게 구현하는지 알아보고 다음시간에 풀링층을 적용하여 문제를 해결해 보자. 아래의 1개의 이미지(batch size, height, width)를 풀링해 보자. # 풀링 레이어 구현 Average Pooling과 Max Pooling을 구현해 보자. import numpy as np .. 2023. 1. 26.
33. [CNN기초] 이미지의 합성곱 훈련 -쉬운예제(실습)- 저번시간에 아래와 같이 3 × 3 이미지를 2 × 2 값으로 어떻게 훈련할 수 있는지 이야기하였다. 오늘은 이 내용을 코드로 작성해 보고자 한다. 예상하건데 필터는 1개이고, 선형분류기가 따로 없으므로 훈련 성과는 그리 좋을 것 같지 않다. 먼저 입력 Input과 목표 Target을 설정해 보자. numpy의 flipud와 fliplr을 이용하여 생성하면 편하다. import numpy as np import matplotlib.pyplot as plt x_sorce1 = np.array([[0.1, 0.2, 0.3], [0.4, 0.5, 0.6], [0.7, 0.8, 0.9]]) x_sorce2 = np.flipud(x_sorce1) # sorce1의 좌우반전 x_sorce3 = np.fliplr(x_.. 2023. 1. 21.
32. [CNN기초] 이미지의 합성곱 훈련 -쉬운예제(이론)- 저번시간엔 image to column 이란 무엇인지, im2col 을 이용해 어떻게 이미지를 합성곱 할 수 있는지, 역전파는 어떻게 하는지 알아보았다. 이번 시간에는 정말 쉬운 예제로 간단한 이미지를 합성곱을 이용해 어떻게 훈련할 수 있는지 알아보고자 한다. 이론시간을 갖는 이유는, 무작정 컴퓨터 앞에 앉아 코딩하는 것은 정말로 멍청하고 비효율적이기 때문이다. 노트를 이용하여 내용을 손을 한번 전개하면서 의사코드(psudo code)를 작성하는 과정이 정말정말 필요하다. (그리고 이러한 노트 정리는 아이패드가 짱이다. ㅡㅡ) 1. 문제제기 아래와 같이 Input인 3×3 이미지 4장이 있다. 어느 쪽 모서리가 밝은지 주목하자. 이를 Target인 2×2 이미지로 훈련할 수 있을까? 간단하게 생각해서, .. 2023. 1. 20.