컨볼루션 필터란?
일종의 영감
완전 연결 신경망은 컴퓨터 비전에 사용하기에 적합하지 않다?
분류할 수 있는 있는 방법:
32 * 32 → flatten → 1024 vector
→ 10개의 가능한 출력 class 분류 작업(= vector에 행렬을 곱) ~ 1024 * 10 행렬
→ 10개의 output 생성
여기서 행렬 곱 = 학습된 가중치
32*32 이미지를 늘리면?
64 * 64로 늘리면 텐서의 차원이 4배 많아짐...
128 * 128로 늘리면 16배...
→ 학습에 필요한 가중치 수의 차원은 이미지 크기에 따라 매우 좋지 않음
→ 큰 이미지에서도 잘 작동하도록,,,!
1024 만큼의 가중치가 필요한 것인가?
입력 픽셀에 대해 별도의 가중치를 부여하는 방법을 배우고 있음
→ 각각의 입력 픽셀이 분류 값에 똑같이 기여할 수 있다는 것 !
많은 이미지에는 이미지 내부에 무엇이 있는지 알려줌
특히 중요한 이미지의 일부 영역이 있을 수 있음 → Overkill...
왜 컨볼루션 신경망은 도움이 될까?
이미지를 옆으로 밀어보자 !
완전 연결 신경망
~ 행렬 곱의 마지막 픽셀이나 마지막 행이 항상 해당 이미지의 동일한 픽셀을 본다고 가정
→ 이미지의 크기를 조정할 때 다른 픽셀을 보고 있음
→ 반드시 불변하지는 않음 ~ 분산 변환은 네트워크에 필요한 속성임
컨볼루션 필터의 동기
전체 이미지를 벡터로 병합한 다음 행렬 곱을 하면 이미지의 단일 패치만 추출
5 * 5 패치를 가져올 수 있을 것
5*5 → 평면화 → 25차원 벡터 생성 → 1차원 출력 생성
rgb image: 실제 각 공간 위치에 세 개의 값이 있음
32323 - 3차원 텐서
10가지 적용 - 5*5 컨볼루션 필터 적용 → 28 * 28 * 10