One-stage Network(YOLO, SSD 등)의 문제점 예를 들어 근본적인 문제인 # of Hard positives(object) << # of Easy negatives(back ground) 또는 large object 와 small object 를 동시에 detect하는 경우 등과 같이 극단적인 Class 간 unbalance나 난이도에서 차이가 나는 문제가 동시에 존재함으로써 발생하는 문제를 해결하기 위하여 제시된 Focal loss를 class간 아주 극단적인 unbalance data에 대한 classification 문제(예를 들어 1:10이나 1:100)에 적용한 실험결과가 있어서 정리해봤습니다. 결과적으로 hyper parameter의 설정에 매우 민감하다는 실험결과와 잘만 활용할 경우, class간 unbalance를 해결하기 위한 data level의 sampling 방법이나 classifier level에서의 특별한 고려 없이 좋은 결과를 얻을 수 있다는 내용입니다.
Deep learning기법을 이상진단 등에 적용할 경우, 정상과 이상 data-set간의 심각한 unbalance가 문제. 본 논문에서는 GAN 기법을 이용하여 정상 data-set만의 Manifold(축약된 모델)를 찾아낸 후 Query data에 대하여 기 훈련된 GAN 모델로 Manifold로의 mapping을 수행함으로서 기 훈련된 정상 data-set과의 차이가 있는지 여부를 판단하여 Query data의 이상 유무를 결정하고 영상 내에 존재하는 이상 영역을 pixel-wise segmentation 하여 제시함.
One-stage Network(YOLO, SSD 등)의 문제점 예를 들어 근본적인 문제인 # of Hard positives(object) << # of Easy negatives(back ground) 또는 large object 와 small object 를 동시에 detect하는 경우 등과 같이 극단적인 Class 간 unbalance나 난이도에서 차이가 나는 문제가 동시에 존재함으로써 발생하는 문제를 해결하기 위하여 제시된 Focal loss를 class간 아주 극단적인 unbalance data에 대한 classification 문제(예를 들어 1:10이나 1:100)에 적용한 실험결과가 있어서 정리해봤습니다. 결과적으로 hyper parameter의 설정에 매우 민감하다는 실험결과와 잘만 활용할 경우, class간 unbalance를 해결하기 위한 data level의 sampling 방법이나 classifier level에서의 특별한 고려 없이 좋은 결과를 얻을 수 있다는 내용입니다.
Deep learning기법을 이상진단 등에 적용할 경우, 정상과 이상 data-set간의 심각한 unbalance가 문제. 본 논문에서는 GAN 기법을 이용하여 정상 data-set만의 Manifold(축약된 모델)를 찾아낸 후 Query data에 대하여 기 훈련된 GAN 모델로 Manifold로의 mapping을 수행함으로서 기 훈련된 정상 data-set과의 차이가 있는지 여부를 판단하여 Query data의 이상 유무를 결정하고 영상 내에 존재하는 이상 영역을 pixel-wise segmentation 하여 제시함.
오사카 대학 Nishida Geio군이 Normalization 관련기술 을 정리한 자료입니다.
Normalization이 왜 필요한지부터 시작해서
Batch, Weight, Layer Normalization별로 수식에 대한 설명과 함께
마지막으로 3방법의 비교를 잘 정리하였고
학습의 진행방법에 대한 설명을 Fisher Information Matrix를 이용했는데, 깊이 공부하실 분들에게만 필요할 듯 합니다.
Coursera Machine Learning by Andrew NG 강의를 들으면서, 궁금했던 내용을 중심으로 정리.
내가 궁금했던건, 데이터를 분류하는 Decision boundary를 만들때...
- 왜 가중치(W)와 decision boundary가 직교해야 하는지?
- margin은 어떻게 계산하는지?
- margin은 어떻게 최대화 할 수 있는지?
- 실제로 margin을 최대화 하는 과정의 수식은 어떤지?
- 비선형 decision boundary를 찾기 위해서 어떻게 kernel을 이용하는지?...
http://blog.naver.com/freepsw/221032379891
오사카 대학 Nishida Geio군이 Normalization 관련기술 을 정리한 자료입니다.
Normalization이 왜 필요한지부터 시작해서
Batch, Weight, Layer Normalization별로 수식에 대한 설명과 함께
마지막으로 3방법의 비교를 잘 정리하였고
학습의 진행방법에 대한 설명을 Fisher Information Matrix를 이용했는데, 깊이 공부하실 분들에게만 필요할 듯 합니다.
Coursera Machine Learning by Andrew NG 강의를 들으면서, 궁금했던 내용을 중심으로 정리.
내가 궁금했던건, 데이터를 분류하는 Decision boundary를 만들때...
- 왜 가중치(W)와 decision boundary가 직교해야 하는지?
- margin은 어떻게 계산하는지?
- margin은 어떻게 최대화 할 수 있는지?
- 실제로 margin을 최대화 하는 과정의 수식은 어떤지?
- 비선형 decision boundary를 찾기 위해서 어떻게 kernel을 이용하는지?...
http://blog.naver.com/freepsw/221032379891
Designing more efficient convolution neural networkNAVER Engineering
CNN은 여러 기술에 적용되어 높은 성능을 보여주고 있지만, 여전히 실제 상용 서비스나 모바일 플랫폼에 적용하기에는 하드웨어적 비용이 큰 경우가 많다.
본 발표에서는 기존 CNN의 높은 성능은 유지하면서도 훨씬 가볍고 빠른 모델을 설계하고 학습하는 방법들을 소개한다. 기존 컨볼루션 레이어의 문제점들을 보완하기위해 제안된 다양한 테크닉들을 소개하고, 최신 논문들이 이런 테크닉들을 어떻게 활용하고 있는지 사례별로 자세히 알아본다.
2019년 4월 27일에 있었던 한국게임학회 인공지능분과 두번째 모임에 진행했던 <Tensorflow 2.0 튜토리얼 - CNN> 강연자료입니다. CNN 을 처음 접하는 분들을 위해 CNN 의 기본 개념을 짚어보며, Google Colab Sample Code 를 통해 2.0 에서 CNN 을 사용하는 방법을 간단하게 살펴봅니다.
Deep Learning Into Advance - 1. Image, ConvNetHyojun Kim
[본 자료는 AB180 사내 스터디의 일환으로 제작되었습니다.]
딥러닝에 대한 기초적인 이해 및 적용 예시를 알아보고, 인사이트를 공유하기 위해 만들었습니다. 첫번째로 딥러닝이 이미지 프로세싱에 적용된 방식 및, Convolutional Neural Network (ConvNet)의 기초에 대해 다루었습니다.
* 본 스터디 자료는 Stanford 강좌인 CS231n (http://cs231n.stanford.edu)의 내용을 참고했습니다.
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담Sumin Byeon
이 발표는 넥슨의 신규 개발 게임인 듀랑고의 생태계에 대한 간략한 소개와 OpenCL 을 이용한 병렬 처리에 관한 전반적인 기술적 내용을 다룹니다. 게임 속의 세계에서 지형과 기후, 지질 조건에 맞게 여러 종류의 식물과 광물들을 알맞은 곳에 배치시키는 것이 생태계 시뮬레이터의 역할인데, 이 시뮬레이터는 방대한 양의 계산을 수행합니다. 초기에 만들어진 프로토타입은 이러한 계산을 수행하는데 30분이 넘게 걸렸지만, 병렬처리, 알고리즘 시간복잡도 개선 등의 여러가지 방법들을 통해 그 시간을 11초까지 단축시켰습니다. 구체적으로 어떤 방법들을 시도했었고, 어떤 방법들이 효과가 있었는지 여러분과 그 경험담을 공유하고자 합니다.
2. 1. Foundations of Convolutional Neural Networks
2. Deep Convolutional Models: Case Studies
1) Case Studies
2) Practical Advice for using ConvNets
3. Object Detection
4. Special Application: Face Recognitions & Neural Style
Transfer
4. 1. Foundations of Convolutional NN
• Edge Detection
- 6X6 이미지의 첫 3X3 행렬을 필터와 곱한다. → 4X4 output의 첫번째 요소는 각 곱한 값들의
합이 된다. → 필터를 오른쪽으로 한칸 움직여 두번째 요소를 구한다. → 같은 방법으로 전체 이
미지를 계산하면 4X4의 결과를 얻을 수 있다.
convolution
6. 1. Foundations of Convolutional NN
• 필터의 종류에 따라 다른 edge를 검출해낼 수 있다.
• 모델은 backpropagation을 통해 이 필터 마치 parameter를 학
습하는 것 처럼 필터를 갱신시키게 됩니다.
- Sobel filter: 중앙 픽셀들에 가중치를
주는 필터
7. 1. Foundations of Convolutional NN
• Padding
• 6X6 input을 3X3 필터로 convolve시키게 되면 Output은 4X4 이다. 이
를 일반화시키면 다음과 같다.
• Input: n X n
• Filter size: f X f
• Output: (n-f+1) X (n-f+1)
• 하지만 1) convolutional operatio을 적용시킬 때 마다 image가 줄어들
며 2) image의 코너 부분에 있는 pixel들은 중앙의 pixel보다 적게 계산
이 되기 때문에 information loss를 야기시킨다.
• 이를 해결하기 위해 paddin이라는 additional borde를 추가한다.
• 6X6 이미지에 padding을 추가하면 8X8 이미지가 되며, 따라서 결과는 원래 이미
지의 크기인 6X6이 된다.
8. 1. Foundations of Convolutional NN
• Padding:
• Input: n X n
• Padding: p
• Filter size: f X f
• Output: (n+2p-f+1) X (n+2p-f+1)
• 따라서 경계 처리방법에는 2가지 방법이 있다.
• Valid: Padding 처리를 하지 않는 것. the output will be (n-f+1) X
(n-f+1)
• Same: Padding 처리를 하는 것. So that the output size is the
same as the input size.
9. 1. Foundations of Convolutional NN
• Strided Convolutions:
• Stride: 몇 칸씩 뛰어서 이동하여 필터를 처리함.
Stride를 s만큼 처리하게 되면
• Input: n X n
• Padding: p
• Stride: s
• Filter size: f X f
• Output: [(n+2p-f)/s+1] X [(n+2p-f)/s+1]
10. 1. Foundations of Convolutional NN
• Convolutions Over Volume
• 3D input image에 대해 filter를 처리할 수 있다.
• Input: 6 X 6 X 3 (height X width X channels)
• Filter: 3 X 3 X 3
• 단 Input과 filter의 채널 수는 같아야 한다.
11. 1. Foundations of Convolutional NN
• Convolutions Over Volume
• Output의 첫번째 요소는 input과 filte의 각 값을 곱해 더한
합으로 결정된다.
• Eg) 6X6X3 이미지와 3X3X3 필터에서는 27개의 값을 더하게 된다.
12. 1. Foundations of Convolutional NN
• Convolutions Over Volume
• 여러 개의 filter를 사용하여 처리할 수도 있다.
• Filter의 개수가 output image의 channel 개수가 된다.
Filter: f X f X nc
Padding: p
Stride: s
Output: [(n+2p-f)/s+1] X [(n+2p-f)/s+1] X nc’
(nc 는 input과 filter의 채널 개수, nc’는 filter의 개수)
13. 1. Foundations of Convolutional NN
• One Layer of a Convolutional Network
• Convolutional network의 한 레이어에서는 input에 filter를
적용해 output을 얻고, 거기에 bias를 더해activation
function을 적용시킨다.
• z[1] = w[1]*a[0] + b[1], a[1] = g(z[1])
• 6X6X3 input과 3X3X3 filte를 예로 들면 a[0]는 input 6X6X3, w[1]는
filter 3X3X3이며 레이어 1에서의 activation들이 그 다음 레이어의
input으로 작용한다.
• Parameter 개수는 input의 크기에는 independent하며 filter size에
의해 결정된다.
• 3X3X3 필터가 10개 있을 때:
• 각 필터마다 parameter 개수: 3X3X3
• 각 필터마다 bias가 존재하므로 필터마다 parameter는 27 + 1 = 28
• 필터가 10개 존재하므로 레이어 별 총 parameter 수는 28 X 10 = 280
14. 1. Foundations of Convolutional NN
• One Layer of a Convolutional Network
• Summary
• f[l] = filter size, p[l] = padding, s[l] = stride, n[c][l] = number of filters
• Input: n[H][l-1] X n[W][l-1] X n[C][l-1], Output: n[H][l] X n[W][l] X n[C][l]
• D
• n[c][l] = f[l] X f[l] X n[c][l-1]
• weights = f[l] X f[l] X n[c][l-1] X n[c][l], bias = n[c][l]
15. 1. Foundations of Convolutional NN
• Simple Convolutional Network Example
16. 1. Foundations of Convolutional NN
• ConvNet에는 기본적으로 세 종류의 레이어가 존재한다.
• Convolution layer
• Pooling layer
• Fully connected layer
17. 1. Foundations of Convolutional NN
• Pooling Layer
• input의 사이즈를 줄여 계산 속도를 개선시키는 레이어
• Ex) max pooling에서는 각 블록마다 가장 큰 숫자를 선택한
다.
• Input이 n[H]Xn[W]Xn[C]일 때, output은 [{(n[H]-f)/s+1}X{n[W]-
f)/s+1}Xn[C]]
18. 1. Foundations of Convolutional NN
• CNN Example
• 깊은 레이어에서는 Height & width는 줄어들고 channer의 개수는 증
가하게 된다.
필터
6개
필터
10개
Max
pool
Max
pool
19. 1. Foundations of Convolutional NN
• Why Convolutions?
• Parameter sharing: a feature detector that’s useful in one
part of the image is probably useful in another part of the
image
• Input에 filter가 적용하여 도출된 output은 다시 그 다음 레이어의
input으로 사용되기 때문에 parameter들이 공유될 수 있다.
• Sparsity of connections: in each layer, each output value
depends only on a small number of inputs
• 만약 fully connected layer만 사용한다면
parameter의 개수는 32*32*3*28*28*6 = 14million
• Convolutional layer이면
parameter 개수는 (5*5*1)*6 = 156
필터 6개
20. 2. Deep Convolutional Models
: case studies
• Classic Networks
• LeNet-5
• Input: Grayscale 이미지
• Parameters: 60k
• Layers flow: Conv -> Pool -> Conv -> Pool -> FC -> FC -> Output
• Activation functions: Sigmoid/tanh and ReLu
21. 2. Deep Convolutional Models
: case studies
• Classic Networks
• AlexNet
• LeNet-5과 비슷하며, Conv와 pooling layer를 더 추가한 것과 같다.
• Parameters: 60 million
• Activation function: ReLu
Parameter 개수가 늘어났기 때문에
learning해야 할 data도 증가한다.
22. 2. Deep Convolutional Models
: case studies
• Classic Networks
• VGG-16
• 3X3 필터(s=1)를 사용하는
간단한 network
• Max pool layer에도 크기
가 2, s가 2인 필터를 사용
해 연산한다.
• 크고 깊은 네트워크이기 때
문에 parameter의 개수가
증가하지만(138 million) 간
단하며 단순한 네트워크이
기 때문에 많이 사용한다.
23. 2. Deep Convolutional Models
: case studies
• Classic Networks
• ResNet
• 깊은 네트워크를 training하면 vanishing/exploding gradients와 같은
현상이 발생하기도 한다.
• 이를 해결하기 위해 skip connections을 이용한다.
• Residual Blocks(skip connections): take the activations from one layer
and feed it to another layer that is even more deeper in the network
• Activations a[l]을 그 다음 레이어에 직접 전달한다.
• a[l+2] = g(z[l+2]+a[l])
24. 2. Deep Convolutional Models
: case studies
• Classic Networks
• ResNet
• 그럼 Residual network 구조는 다음과 같아질 것이다:
25. 2. Deep Convolutional Models
: case studies
• Classic Networks
• ResNet
• 이 residual network는 아무리 네트워크가 깊다 하더라도 training
error가 증가하지 않는다.
26. 2. Deep Convolutional Models
: case studies
• Classic Networks
• ResNet
• Residual network에서 activation 계산식은 다음과 같다.
• a[l+2] = g(z[l+2]+a[l]) = g(w[l+2]*a[l+1]+b[l+2]+a[l])
• 만약 w[l+2] = 0, b[l+2]가 0이라고 하면, a[l+2] = g(a[l])이 되며, ReLu를
사용할 경우, a[l+2] = a[l]이 된다.
• 따라서 a[l]을 알고 있다면 a[l+2]를 계산하는 것이 매우 쉽다.
• 네트워크의 전체 모습은 다음과 같다:
27. 2. Deep Convolutional Models
: case studies
• Networks in Networks and 1X1 Convolutions
• 1X1 필터가 있다고 해보자.
• 1X1 convolution은 이렇게 이미지의 채널을 줄이기 위해 사용한다.
28. 2. Deep Convolutional Models
: case studies
• The Motivation Behind Inception Networks
• ConvNet에서 가장 중요한 것 중 하나는 filter의 사이즈를 결정
하는 것이다.
• 1X1 / 3X3/ 5X5 중에 무엇을 선택해야 할까?
• Filter 사이즈를 결정하고 conv & pooling layer를 이용하는 대신
inception을 사용하면 모든 필터를 사용할 뿐만 아니라 output들을 모아
준다.
• 하지만 computational cost가 너무 커지게 된다.
29. 2. Deep Convolutional Models
: case studies
• The Motivation Behind Inception Networks
• 그렇다고 single filter size를 결정하여 연산하는 것도
computations가 커지게 된다.
• # of multiplies = 28* 28 * 32 * 5 * 5 * 192 = 120 million => 비용이 너무 크다.
30. 2. Deep Convolutional Models
: case studies
• The Motivation Behind Inception Networks
• 그렇다면 1X1 필터를 먼저 수행한 다음 5X5 필터를 수행해보
자.
• 첫번째 convolution의 # of multiplies = 28*28*16*1*1*192 = 2.4 million
• 두번째 convolution의 # of multiplies = 28*28*32*5*5*16 = 10 million
• 총 # of multiplies = 12.4 million => 연산이 엄청나게 줄어들게 된다.
31. 2. Deep Convolutional Models
: case studies
• Inception Networks
• 각 filter별로 연산한 다음 모든 output을 합친다.
• 3X3과 5X5 filter 같은 경우 계산을 줄이기 위해 1X1을 수행한 다음 수행
한다.
35. 3. Object Detection
• Object Detection
• ConvNet을 사용해 Object Detection을 수행할 수 있다.
• Sliding Windows detection:
36. 3. Object Detection
• Object Detection
• ConvNet을 사용해 Object Detection을 수행할 수 있다.
• Sliding Windows detection:
• 하지만 cost가 크다.
• 이를 convolution을 통해 효율적이고 간단하게 만들 수 있다.
→
- 이런 식으로 모든 image를 조사하여 해당
객체가 존재하는 region에 대해 1을 출력
한다
- 전체 영역에 대해 전부 조사를 마치면 더
큰 region 박스로 image를 조사한다.
37. 3. Object Detection
• Convolutional Implementation of Sliding Windows
Fully Connected Layer 대신 Conv layer를 사용한다!
38. 3. Object Detection
• Convolutional Implementation of Sliding Windows
• 16X16X3에서 14X14 Window를 Sliding Window를 이용해 연산하면 4개의 14X14를
input으로 trained convolutional network를 4번 수행해야한다.
• 하지만 convolution을 적용하면 한 개의 16X16 input으로 한번만 수행해도 된다.
• 또한 많은 부분이 중복되기 때문에 각 영역이 independent하게 돌아가는 것이 아니라
계산의 많은 부분이 공유된다.
39. 3. Object Detection
• Bounding Box Predictions
• 하지만 sliding window로는 정확한 bounding box를 표시하지
못함.
• YOLO 알고리즘을 사용하여 각 grid cell에 대해 라벨 값을 표시
- 만약 object가 grid cell 내에 존재하게 된다면, pc를 1로 설정하고 그
object의 중심 좌표 값을 bx, by로 표시
- 만약에 object가 grid cell 내에 없다면, pc는 0이 되고, 나머지 값은
임의의 값으로 설정
- 해당 예시에서 최종 output은 3 x 3 x 8
- 실제로는 더 큰 grid cell을 사용함(19X19)
40. 3. Object Detection
• Bounding Box Predictions
• YOLO 알고리즘:
• 정확한 output 좌표를 알 수 있다.
• Convolutional Implementation
• 같은 작업을 여러 번 반복하지 않아도 되어 계산이 효율적이
다.
• 속도가 빨라 real-time 처리가 가능하다.
41. 3. Object Detection
• Intersection over Union(IoU)
• Localization이 잘 작동하고 있는지 어떻게 측정해야 할까?
• IoU: measure of two overlap between two bounding boxes
• Compute intersections over bounding boxes(size of intersection /
size of union), IoU가 일정 threshold값을 넘으면 잘 작동하고 있다고
판단.
42. 3. Object Detection
• Non-max Suppression:
• 같은 object를 한번만 detect하도록 만들고 싶음!
• Non-max suppression을 사용.
- pc가 가장 큰 bounding box를 선택
- 그것과 주변 bounding box들 간 IoU를
측정하여 높은 IoU를 가진 bounding
box들을 억제하는 방법
43. 3. Object Detection
• Anchor Boxes
• Each grid cell -> 하나의 객체만 감지 가능
• 미리 크기가 정해진 앵커 박스를 여러 개 만들어 사용합니다.
• Output도 이전에는 각 grid cell 별로 결과값(pc, bx, by, bh, bw, classes) 이 존재했다
면, anchor box를 사용하게 될 경우, 앵커 박스의 개수만큼 결과값이 늘어나야 함.
- Target object를 검출해냄.
- Anchor box들과의 IoU를 계산하여 가장
높은 bounding box를 선택한다.
- Object의 midpoint와 함께 anchor box가
함께 할당된다.
44. 3. Object Detection
• Anchor Boxes
• 하지만 anchor box는 2개인데 객체가 3개인 경우
• 똑같은 anchor box에 해당하는 객체가 여러 개인
경우
=> 잘 처리해내지 못한다.
45. 3. Object Detection
• YOLO 알고리즘
a1
a2
• 1) Training set에 대해 grid
cell마다 적절한 vector y를
만든다.
• 2) Make predictions:
object가 존재하면, pc는 1
에 가까운 값이 될 것이며,
중심 값과 길이 값, 클래스
값들을 출력하게 된다.
• 3) Outputting the non-max
suppressed outputs
46. 4. Special Applications:
1) Face Recognition
• One Shot Learning
• 하나의 input만을 가지고 결과를 도출해 내야 하기 때문에
training data가 부족하다.
• 이런 한계를 극복하기 위해 similarity function을 사용한다.
• d(img1, img2) = degree of difference between images
• 만약 similarity function > threshold: same,
≤ threshold: different
• Siamese network로 이 함수를 learn할 수 있다.
47. 4. Special Applications:
1) Face Recognition
• Siamese Network
• 두 이미지 x(1)과 x(2)에 대한 feature를 추출하기 위해 final softmax layer을 없앤다.
• D(x(1), x(2)) = 𝑓 𝑥 1 − 𝑓(𝑥 2 ) 2
2
• 만약 두 이미지가 같은 사람이라면 𝑓 𝑥 1 − 𝑓(𝑥 2 )
2
값이 작은 방향으로, 다른 사람이라면 큰 방향으
로 모델을 학습시켜 나간다.
48. 4. Special Applications:
1) Face Recognition
• Triplet Loss
• Model의 performance를 향상시키기 위해 loss function을 learn시킨다.
• Anchor/positive/negative 이미지를 가지고 triplet loss를 정의하게 된다.
• Positive image: the image of the same person that’s present in the anchor image
• Negative image: the image of a different person
• 𝑓 𝐴 − 𝑓(𝑃) 2
≤ 𝑓 𝐴 − 𝑓(𝑁) 2
, 𝑓 𝐴 − 𝑓(𝑃) 2
- 𝑓 𝐴 − 𝑓(𝑁) 2
≤ 0
• 여기서 만약 𝑓 𝐴 − 𝑓(𝑃) 2
과 𝑓 𝐴 − 𝑓(𝑁) 2
가 둘 다 0이라도, 위 식을 만족하게 된다. 하
지만 그렇게 된다면 model도 그러한 방향으로 train될 것이며, 이는 model의 성능을 줄이게
된다. 이를 해결하기 위해 P와 N 간 차이가 나도록 만들어주는 margin α를 추가해준다.
• 𝑓 𝐴 − 𝑓(𝑃) 2
- 𝑓 𝐴 − 𝑓(𝑁) 2
+ α ≤ 0
49. 4. Special Applications:
1) Face Recognition
• Triplet Loss
• Loss(A, P, N) = max( 𝑓 𝐴 − 𝑓(𝑃) 2
- 𝑓 𝐴 − 𝑓(𝑁) 2
+ α , 0)
• 𝑓 𝐴 − 𝑓(𝑃) 2
- 𝑓 𝐴 − 𝑓(𝑁) 2
+ α 부분이 0보다 작으면 loss는 0
• 따라서 𝑓 𝐴 − 𝑓(𝑃) 2
- 𝑓 𝐴 − 𝑓(𝑁) 2
+ α ≤ 0을 만족하였다면 Loss는 0이 되지만, 0보
다 커지게 되면 𝑓 𝐴 − 𝑓(𝑃) 2
- 𝑓 𝐴 − 𝑓(𝑁) 2
+ α 부분이 선택된다.
• 따라서 loss를 최소화시키기 위해서는 0보다 작게 만들어야 한다,
• Cost function = 𝑖=1
𝑚
𝐿(𝐴 𝑖 , 𝑃 𝑖 , 𝑁 𝑖 )
• model의 performance를 향상시키기 위해 이 cost를 최소화시켜야 한다.
50. 4. Special Applications:
1) Face Recognition
• Face Verification and Binary Classification
• Triplet loss 말고 binary classification을 사용해 parameter을 학습시킬 수도 있다.
• 1) Siamese network를 사용해 이미지에 대한 embedding를 계산한다.
• 2) 이 embedding를 logistic regression을 사용해 같은 사람이면 1, 다른 사람이면 0을
출력한다.
• Final output of the logistic regression =
51. 4. Special Applications:
2) Neural Style Transfer
• What is neural style transfer?
• Content image를 style image의 화풍으로 새로운 이미지를 만
들어 주는 기법
• ConvNet을 사용해 각 layer에서 feature들을 추출한다!
52. 4. Special Applications:
2) Neural Style Transfer
• What are deep ConvNets learning?
• 각 layer에서는 그 unit의 activations를 최대로 할 수 있는
image patch들을 고르는 작업을 수행, 이 과정을 반복한다.
• 앞단의 layer에서는 심플한 특징들(edges, 특정 색깔 등)을,
layer가 깊어질수록 더 넓은 부분을 포함하게 됨.
54. 4. Special Applications:
2) Neural Style Transfer
• Cost Function
• J(G) = α ∗ 𝐽 𝐶𝑜𝑛𝑡𝑒𝑛𝑡 𝐶, 𝐺 + β ∗ 𝐽𝑆𝑡𝑦𝑙𝑒 𝑆, 𝐺
• Content cost function은 Content image가 Generate image와 같은 content를 가지
고 있다는 것을 보장하고, generated cost function은 generated image가 style
image와 같은 특징을 가지도록 만들어진다.
• Steps:
• 1) G를 초기화
• 2) cost function을 정의하고 gradient descent로 J(G)를 최소화 하는 방향으로 G를
업데이트한다: G = G – d/dG(J(G))
(1) (2)
55. 4. Special Applications:
2) Neural Style Transfer
• Content Cost Function
• Lth layer에 대한 cost function을 정의:
• Pretrained ConvNet과 Lth layer에 대한 activations를 사용
• Content image의 activation인 𝑎 𝑙 (𝐶), generated image의 activation인 𝑎 𝑙 (𝐺)을 비교
하여 두 activation이 비슷하면 같은 content를 가지고 있다고 판단한다.
• 𝐽 𝐶𝑜𝑛𝑡𝑒𝑛𝑡 𝐶, 𝐺 = ½ * 𝑎 𝑙 (𝐶) − 𝑎 𝑙 (𝐺) 2
• 이 cost function을 최소화시키고, similar한 content를 얻을 수 있도록 activation을 갱신
한다.
56. 4. Special Applications:
2) Neural Style Transfer
• Style Cost Function
• Style을 계산하기 위해 Lth layer의 activations을 사용한다.
• Style: the correlation between activations across channels of that
layer
• 다음과 같은 lth layer가 있다고 가정하자:
• 𝑎𝑖,𝑗,𝑘 = 𝑎𝑐𝑡𝑖𝑣𝑎𝑡𝑖𝑜𝑛𝑠 𝑎𝑡 (𝑖, 𝑗, 𝑘) (i는 height, j는 width, k는 1 ~ nc 사이
의 channel 번호)
• A correlation matrix C:
• If the activations are correlated, 𝐺 𝑘,𝑘′ will be large.
<Style Matrix>
57. 4. Special Applications:
2) Neural Style Transfer
• Style Cost Function
• S -> style image, generated image에 대한 style matrix를 만들어 낼
수도 있다.
• 두 행렬을 사용하여 style cost function을 정의하면,
• 𝐽𝑠𝑡𝑦𝑙𝑒
𝑙
(𝑆, 𝐺) =
1
𝑏
* 𝐺 𝑙 (𝑆) − 𝐺 𝑙 (𝐺) 2
=
• 이를 모든 layer에 대해 적용하면,
2
Editor's Notes
Filter를 학습한다.
전처리마다 영향을 받는 부분이 다르므로 결과가 달라질 수 있다.
하지만 필터를 학습시키게 되면
가공된 인풋이 들어감
하지만 cnn에서는 raw한 input을 주므로서 bias를 줄이게 된다.