본문 바로가기

딥러닝 이론34

36. [CNN기초] 원, 네모를 구별하는 CNN 만들기(실습) 저번시간에 합성곱으로 원과 네모를 구별하는 CNN을 어떻게 구성하고, 학습할 수 있는지 그림과 함께 알아보았다. 이번 시간에는 직접 코드를 작성해 보면서 가능한지 알아보자. 1. 준비하기 1) CNN 구성 Input → Conv2D → relu → Max Pooling → flatten → fc → sigmoid 2) 이미지 준비하기 아래의 파일을 다운받아 적절한 곳에 풀자. 28 × 28 이미지 train : 원 12개, 네모 12개 test : 원 2개, 네모 2개 3) train data 학습데이터를 불러오고 이미지를 출력해 보자. 이미지를 불러와서 Numpy 배열에 넣자. 주의할 점은 2가지가 있는데 (1) 흰색 바탕에 검은색 그림 → 반전(bitwise_not) 시켜 검은색 바탕에 흰색 그림으로.. 2023. 2. 1.
35. [CNN기초] 원, 네모를 구별하는 CNN 만들기(이론) 1. 문제제기 아래 예시와 같이 원과 네모를 구별하는 문제가 있다. 3살짜리 아이도 맞출 만큼 굉장히 쉬운 문제다. 실전을 들어가 보자. 3 × 3 크기의 합성곱 필터 1개를 이용하여 합성곱 → relu → 2 × 2 필터 Max pooling → 분류기 fc → sigmoid를 이용하여 원과 네모를 분류할 수 있을까? 데이터를 구해보자. 본인은 데이터를 구할 때 kaggle을 열심히 이용한다. 아래와 같이 용량도 적절한 데이터를 찾았다. CC0:Public Domain 라이센스도 맘에 든다. 149.2kB인 착한 용량도 마음에 든다. 이 데이터는 원(Circle) 100장, 네모(Square) 100장, 삼각형(Triangle) 100장으로 구성된 28 × 28 데이터인데, 필터 1개만 이용할 것이므로.. 2023. 1. 28.
32. [CNN기초] 이미지의 합성곱 훈련 -쉬운예제(이론)- 저번시간엔 image to column 이란 무엇인지, im2col 을 이용해 어떻게 이미지를 합성곱 할 수 있는지, 역전파는 어떻게 하는지 알아보았다. 이번 시간에는 정말 쉬운 예제로 간단한 이미지를 합성곱을 이용해 어떻게 훈련할 수 있는지 알아보고자 한다. 이론시간을 갖는 이유는, 무작정 컴퓨터 앞에 앉아 코딩하는 것은 정말로 멍청하고 비효율적이기 때문이다. 노트를 이용하여 내용을 손을 한번 전개하면서 의사코드(psudo code)를 작성하는 과정이 정말정말 필요하다. (그리고 이러한 노트 정리는 아이패드가 짱이다. ㅡㅡ) 1. 문제제기 아래와 같이 Input인 3×3 이미지 4장이 있다. 어느 쪽 모서리가 밝은지 주목하자. 이를 Target인 2×2 이미지로 훈련할 수 있을까? 간단하게 생각해서, .. 2023. 1. 20.
31. [CNN기초] 2차원 배열 합성곱 - image to column-2 이전 시간에는 image to coumn을 이용하여 합성곱 연산을 진행하였다. 하지만 아직도 갈 길이 많다. 이전 예제는 원리를 설명하느냐 정말 간단하게만 구현하였기 때문에 제대로 하려면 스트라이드 구현, 패딩 구현, coumn to image, 다중 채널 이미지 변환 4가지가 남아 있다. Numpy 딥러닝 시리즈에서는 1채널 (gray)로 진행한다. 다중 채널은 현재 코드 진행으로 매우 비효율적이므로 코드를 다루지 않고 개념만 마지막에 다룰 것이다. 원래 이미지는 (batch, channels, height, width) 또는 (batch, height, width, channels)로 구성되어 있는데 편의를 위해 1채널만 사용하므로 (batch, height, width)로 사용할 것이다. 또한 쉬운.. 2023. 1. 11.