What does tf.nn.conv2d do in tensorflow?

junecnol:

https://www.youtube.com/watch?v=-FfMVnwXrZ0&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=32

C4W4L01 What is face recognition

https://www.youtube.com/watch?v=96b_weTZb2w&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=33

C4W4L02 One Shot Learning

얼굴인식 알고리즘의 경우 한 사람의 이미지가 하나만 있거나 적은수의 이미지를 가지고 있고 부족한 데이터를 가지고 문제를 해결해야 한다. 

알고리즘 d 는 두 이미지 얼굴간의 차이점을 찾아내는 알고리즘이다. 결과값이 일정보다 크면 다른 사람으로 보고 일정값보다 작으면 같은 사람으로 본다. 

https://www.youtube.com/watch?v=6jfw8MuKwpI&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=34

C4W4L03 Siamese Network

image

x1, x2 같은 알고리즘을 거쳐 나온 vector값 f(x1) , f(x2)값을 encoding of images라고 한다. x1, x2가 같은 사람인 경우 d()값은 작게 나와야 하며 , 다른 사람인 경우 크게 나와야 한다.

image

https://www.youtube.com/watch?v=d2XB5-tuCWU&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=35

C4W4L04 Triplet loss

많은 수의 데이터가 없을때 보다 효과적인 loss function이 필요한 경우 사용한다.

image

d 는 얼마나 두 이미지가 많은 차이점을 가지는지를 확인한다.

alpha를 좀더 두 그룹을 확연히 구분하기위해 사용되며 margin이라 부른다.

image
image


https://www.youtube.com/watch?v=0NSLgoEtdnw&index=36&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF

C4W4L05 Face Verification

앞 강의의 triple loss를 대체 할수 있는 방법

image

위의 사람은 회전문을 통해 들어오려는 새로운 사람이며 아래 사람은 기존 데이터베이스에 있는 사람이다. 두사람이 이용하는 알고리즘은 정확히 같다. 속도 개선을 위해 기존의 데이터베이스에 있는 사람의 계산값은 미리 계산해서 준비해 둔다. 

image

같은 사람이라고 예측되면 1을 되돌리고 아닌 경우 0을 되돌린다. 


https://www.youtube.com/watch?v=R39tWYYKNcI&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=37

C4W4L006 What is neural style transfer?

이미지의 특성을 파악하고 이를 다른 이미지에 적용하는 기술을 neural style transfer라고 한다. 

image


https://www.youtube.com/watch?v=ChoV5h7tw5A&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=38

C4W4L07 What are deep CNs learning?

image

9 patched filter 하나가 하나의 layer unit의 기능을 수행한다.

image
image
image
image
image
image


https://www.youtube.com/watch?v=xY-DMAJpIP4&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=39

C4W4L08 Cost Function


https://www.youtube.com/watch?v=b1I5X3UfEYI&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=40

C4W4L09 Content Cost Function

어느 위치인지는 모르겠지만 content cost를 계산하는 hidden layer L 을 만든다. 이 강의 에서는 기존의 network 를 이용한다. cost function안의 a는 vector이다.

아래 사항은 나중에 확인하기로 한다.

아래 사항은 나중에 확인하기로 한다.


https://www.youtube.com/watch?v=QgkLfjfGul8&index=41&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF

C4W4L10 Style Cost Function

https://www.youtube.com/watch?v=Cn8AtS-9Nwc&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=42

C4W4L11 1D and 3D Generalizations

https://www.youtube.com/watch?v=-bvTzZCEOdM&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=12

C4W2L01 Why look at case studies?

image

자주 사용되는 cnn 종류를 보여주고 있다.


https://www.youtube.com/watch?v=dZVkygnKh1M&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=13

C4W2L02 Classic Network

image
image
image


https://www.youtube.com/watch?v=ZILIbUvp5lk&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=14

C4W2L03 Resnets

residual block 바로 다음 단계나 여러 단계를 스킵하고 나갈수 있는 알고리즘이다.

image
image

residual block 이 없는 network를 plain network라고 한다. resnet은 layer수가 증가해도 training error가 증가 하지 않는다.


https://www.youtube.com/watch?v=RYth6EbBUqM&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=15

C4W2L04 Why ResNets Work

image

a l layer에서 a l+2 로 진행하는 과정에서 그사이의 a l+1의 weights, biased constant가 0인경우 바로 a l이 바로 전달 되므로 많은 수의 layers를 가진 network라도 성능이 저하 되지 않는 것 같다.  identity function is easy for residual block to learn

image

중간 중간에 pooling layer를 통해 depth가 조정된다.


https://www.youtube.com/watch?v=c1RBQzKsDCk&index=16&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF

C4W2L05 Network In Network

image

그림 하단 6 * 6 * 32 과 1 * 1 * 32 처럼 우선 channel 수는 맞춰준다. 각 대응하는 요소에 1을 곱하고 전부를 더해 하나의 값을 얻는다. 즉 여러 channel의 데이터를 압축해서 하나의 값으로 만든다. 이런 filter의 갯수를 여럿 만들수도 있다. 이런경우 32 channel의 데이터가 filter갯수 만큼의 channel로 바뀌게 된다. 즉 filter가 10개면 10 channel로 바뀌게 된다. one by one convolution을 nested network라고 하기도 한다. one by one convolution은 channel의 변경에 유용하게 사용된다. fully connected layer와 기능이 비슷하지만 같지는 않다.  

참고 자료) one by one convolution https://youtu.be/UIojaQy8SFQ

https://stackoverflow.com/a/39367644/3151712

image

192 에서 축소되어서 32로 만들수도 있고 같은 크기를 유지할수도 있다.


https://www.youtube.com/watch?v=C86ZXvgpejM&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=17

C4W2L06 Inception Network Motivation

image
image

inception module을 이용한 방법의 문제는 계산작업에 많은 비용이 든다는 것이다.

위 그림을 설명하면 cell 이 28 * 28 * 32 이므로 계산횟수는 28 * 28 * 32인데 각 cell은 5 * 5 필터와 본래 데이터 하나하나의 곱의 합이다. 그런 channel이 192개 이므로 5 * 5 * 192를 최종적으로 곱해준다.

그 해결 방법은 one by one convolution을 이용하는 것이다.

image


https://www.youtube.com/watch?v=KfV8CJh7hE0&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=18

C4W2L07 Inception Network

image
image

inception network는 여러개의 inception module 로 구성된다.


https://www.youtube.com/watch?v=cFFu__mcoIw&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=19

C4W2L08 Using Open Source Implementation

이미 개발되어있는 알고리즘 , 모델을 이용하여 개발하는 과정의 간략한 설명


https://www.youtube.com/watch?v=FQM13HkEfBk&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=20

C4W2L09 Transfer Learning

image

이미 다른 사람이 training한 model을 이용하는 것을 transfer라고 한다. 때때로 framework는 trainableparameter , freeze 변수를 통해 training할 layer를 설정할수 있다. 이를 이용해서 전체를 freeze 해 놓고 필요한 부분만 training할수 있다. 또 일부를 freeze하고 나머지는 training할수도 있다. 또 전부를 training할수도 있다. 각자 경우에 따라 선택한다. 


https://www.youtube.com/watch?v=JI8saFjK84o&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=21

C4W2L10 Data Augmentation

여러형태로 데이터를 변형해서 다수의 데이터를 얻어내는 방법을 설명한다.

기존의 color shifting방법도 있고 alex net이 개발한 pca color agumentation 방법도 있다.


https://www.youtube.com/watch?v=c3zw6KI6dLc&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=22

C4W2L11 State of Computer Vision

그림 상단은 현재 상태에서의 각 분야별 데이터양 정도. speech recognition이 많은 데이터를 가지고 있고 object detection 분야는 데이터가 적다. 데이터가 적은 경우 hand engineering 작업이 더 필요하다. 이를 통해 부족한 데이터 부분을 보완한다.

여러개의 네트워크를 이용 각각 처리한 다음 결과를 종합함으로써 성능을 개선할수 있다. 그러나 production에서는 자원을 많이 필요로 하므로 사용하지 않는다.

하나의 이미지를 변형해서 총 10개의 크롭된 이미지를 얻는 방법을 설명한다. 이도 production에서는 사용하지 않는다.

data researcher가 아닌경우 기존의 network, model을 이용하는 것이 나을수 있다. 

https://www.youtube.com/watch?v=XuD4C8vJzEQ&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=2

C4W1L02 Edge Detection Examples

image
image
image

* 는 convulution 연산을 의미한다. convulution 연산을 수행하는 함수는 중앙하단에 나와있다. 

image


https://www.youtube.com/watch?v=am36dePheDc&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=3

C4W1L03 More Edge Detection

image
image

숫자가 크면 밝은 영역을 나타낸다.

image

좌상단의 filter외에도 다양한 filter가 있으며 실제 machine learing의 과정을 통해 다른 filter를 구할수도 있다. 45, 70, 73도 기울어진 선분을 찾아낼수 있는 filter를 만들수도 있다.


https://www.youtube.com/watch?v=smHa2442Ah4&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=4

C4W1L04 Padding

image

padding 없이 그냥 작업을 하면 점점 결과 matrix가 작아진다. 또한 모서리 부분에서 충분한 정보를 얻을수 없다. n – f +1 은 결과 matrix size를 계산하는 방법이다.

image

filter의 크기는 보통 홀수로 한다. 짝수도 가능하지만 때로는 정중앙 cell이 요긴할때가 있다. 


https://www.youtube.com/watch?v=tQYZaDn_kSg&index=5&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF

C4W1L05 Strided Convolutions

image
image

strided convolution은 이동을 한칸씩하지 않는다. 점프한다.

image
image
image

실제 다른 분야에서는 cross-correlation이라고 하는 알고리즘을 machine learining에서는 관습상 convolution알고 한다.

참고) https://datascience.stackexchange.com/a/40545

https://dsp.stackexchange.com/q/27451


https://www.youtube.com/watch?v=KTB_OFoAQcc&index=6&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF

C4W1L06 Convolutions Over Volumes

image

위 그림에서 처럼 channel의 수와 filter의 층수가 맞아야 한다. 

image
image

하나의 channel때 처럼 한칸씩이동하거나 strided된 경우 점프하면서 이동한다. 

image

우측 하단에 윗 filter는 r matrix만 값이 있으므로 red 색의 세로선을 탐색한다. 그 아래 filter는 모든 색에 대해서 세로선을 탐색한다. 

image

색깔별 탐색할수 도 있지만 추가 filter를 통해 세로, 가로선을 같이 동시에 탐색할수도 있다. 물론 다른 특성을 찾는 filter를 사용해도 된다. 


https://www.youtube.com/watch?v=jPOAS7uCODQ&index=7&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF

C4W1L07 One Layer of a Convolutional Net

image

1개의 convolution neural network layer를 보여주고 있다. filter를 weight이라고 생각할수 있다. filter와 convolution 연산으로 하고 나서 b vector를 더해준다. 그리고 나서 ReLU연산을 한다. 

image
image

https://www.youtube.com/watch?v=3PyJA9AfwSk&index=8&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF

C4W1L08 Simple Convolutional Network Example

image

점점 filter를 거친 결과 matrix는 그 크기가 작아진다. 그렇지만 depth는 깊어진다.

최종적으로 logistic regression이나 softmax의 과정을 거친다.

image

convolutional network는 보통 위의 세가지 layer로 구성된다.


https://www.youtube.com/watch?v=8oOgPUO-TBY&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=9

C4W1L09 Pooling Layers

image

해당 필터내에서 최대값을 찾아서 모아 새로 matrix를 만든다.

image
image
image
image
image

자주 사용하는 filter 크기는 2또는 3, 자주 사용하는 stride크기는 2

트레이닝할 weight 이 없다. 러닝 과정이 없다.


https://www.youtube.com/watch?v=bXJx7y51cl0&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=10

C4W1L10 CNN Example

image

conv과 pooling을 각각 구분해서 각각의 layer로 생각하는 경우도 있지만 pooling의 경우 parameters가 없기 때문에 그냥 conv와 pooling을 묶어서 하나의 layer라고 생각하기도 한다. 

image


https://www.youtube.com/watch?v=ay3zYUeuyhU&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=11

C4W1L11 Why Convolutions

cnn이 아닌 다른 방법으로 하는 경우 엄청난 수의 weights, biased constant등 계산이 복잡하게 된다. 위의 그림에서 32 * 32 *3 의 이미지의 경우 cnn을 사용하지 않는 경우 14mil parameters를 생각해야 한다. 그렇지만 cnn의 경우 filter size 5 * 5에 biased constant하나를 더해주고 filter갯수를 곱하면 156의 parameters만 생각하면 된다. 이렇게 줄어들수 있는 이유는 parameter sharing 덕분이다 아래 그림 참조. 같은 모양의 parameter matrix를 이동해 가면서 계속 반복 적용하기 때문이다. 

convolution layer, fully connected layer 둘다 weights, biased constant를 이용 계산한다.