1. 컴퓨터비전(Computer Vision)의 어려운 점들(Challenges)-컴퓨터가 바라보는 영상(Image)
- 컴퓨터가 바라보는 이미지 = Pixel Intensity Matrix

- 영상인식(Image Recognition)의 어려운 점들(Challenges)
- 영상 인식(Image Recognition)의 어려운 점들(Challenges)
- 변형(Deformation)
- 가림(Occlusion)
- 배경장애(Background Clutter)
- 같은 클래스라도 다양한 형태로 보인다.(Intraclass variation)
- Handcrafted Freature vs End-To_End Learning
- CNNs의 핵심 아이디어: Raw Image로부터 특징들 (Features)을 자동으로 학습하자!

2. CNN
- Convolutional Neural Networkd(CNN)은 이미지 분야를 다루기에 최적화된 인경신경망 구조
- 컨볼루션 신경망은 크게 Convolution Layer , Pooling(Subsampling) Layer로 구성

1) 컨볼루션층: 컨볼루션 연산을 통해서 이미지 특징을 추출해내는 역할
- Convolution은 우리말로 합성 곱이라고도 불리는데 Kernel 또는 Filter라고 불리는 윈도우 크기만큼의 X X 크기의 행렬을 Y Y크기의 이미지 행렬의 X * X크기 부분과 곱해서 모두 더하는 수학 연산자
- 가장 왼쪽 위부터 가장 오른쪽 아래까지 순차적으로 수행하는 연산
- 커널의 종류에 따라 완본 이미지의 모서리 Edge를 추출하거나 원본 이미지를 좀더 명확한 이미지 Sharpent로 바꾸거나 원본 이미지를 흐리게 Blur 만들 수 있습니다.
- 이렇게 추출한 활성화 맵은 원본 이미지에서 명확히 드러나지 않던 특징 들을 보여줍니다.
Wout=(Win−F+2P)/S+1
- 컨볼루션층을 거치면 인풋 이미지의 가로, 세로 차원이 축소
- W_in 인풋 이미지의 가로길이
- W_out 출력이미지의 가로길이
- F 필터의 크기
- S 스트라이드: 컨볼루션 연산 시 건너뛰는 정도
- (Win−F)/S 의 차원이 정수로 나누어 떨어지지 않을 수 있기 때문에 인풋 이미지의 상하좌우 모서리에 P 만틈 0을 채워주는 제로패딩Zero-Padding 적용

2) Pooling
- 풀링층은 차원을 축소하는 연산을 수행
- 이미지 차원을 축소합으로써 필요한 연산량을 감소시킬 수 있고, 이미지의 가장 강한 특징만을 추출하는 특징 선별효과
- 최대값 풀링 Max Pooling
- 평균값 풀링 Average Pooling
- 최소값 풀링 Min Pooling
3. Dropout
- Regularization: 오버피팅OverFitting을 방지할 수 있도록 만들어주는 기법들을 총칭해서 Regularization 기럽이라고 함
- Dropout은 대표적인 Regularization 기법 중 하나
- Dropout: 학습 과정에서 일부 노드를 사용하지 않는 형태로 만들어서 오버피팅을 방지할 수 있도록 만들어주는 기법

- Test Data에 대한 드랍아웃: Training Data에 대해서는 오버피팅을 방지하기 위해서 드롭아웃을 수행하지만 Test Data에 대해서는 Dropout을 수행하지 않습니다.
- tf.nn.dropout
tf.nn.dropout{
x, rate, noise_shape = None, seed = None, name = None
}
4. CIFAR-10 Database
- 10개의 클래스, 50000개의 training images, 10000개의 testing images로 구성
- 이미지 크기: 32 32 3 pixel(Color)
- 레이블들: airplane, automobile, bird, cat, deer, dog, frog, horse, shpe, and truck