SlideShare a Scribd company logo
Convolutional Neural
Networks
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
1. Foundations of Convolutional NN
• Edge Detection
1. Foundations of Convolutional NN
• Edge Detection
- 6X6 이미지의 첫 3X3 행렬을 필터와 곱한다. → 4X4 output의 첫번째 요소는 각 곱한 값들의
합이 된다. → 필터를 오른쪽으로 한칸 움직여 두번째 요소를 구한다. → 같은 방법으로 전체 이
미지를 계산하면 4X4의 결과를 얻을 수 있다.
convolution
1. Foundations of Convolutional NN
• Edge Detection
1. Foundations of Convolutional NN
• 필터의 종류에 따라 다른 edge를 검출해낼 수 있다.
• 모델은 backpropagation을 통해 이 필터 마치 parameter를 학
습하는 것 처럼 필터를 갱신시키게 됩니다.
- Sobel filter: 중앙 픽셀들에 가중치를
주는 필터
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이 된다.
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.
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]
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의 채널 수는 같아야 한다.
1. Foundations of Convolutional NN
• Convolutions Over Volume
• Output의 첫번째 요소는 input과 filte의 각 값을 곱해 더한
합으로 결정된다.
• Eg) 6X6X3 이미지와 3X3X3 필터에서는 27개의 값을 더하게 된다.
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의 개수)
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
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]
1. Foundations of Convolutional NN
• Simple Convolutional Network Example
1. Foundations of Convolutional NN
• ConvNet에는 기본적으로 세 종류의 레이어가 존재한다.
• Convolution layer
• Pooling layer
• Fully connected layer
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]]
1. Foundations of Convolutional NN
• CNN Example
• 깊은 레이어에서는 Height & width는 줄어들고 channer의 개수는 증
가하게 된다.
필터
6개
필터
10개
Max
pool
Max
pool
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개
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
2. Deep Convolutional Models
: case studies
• Classic Networks
• AlexNet
• LeNet-5과 비슷하며, Conv와 pooling layer를 더 추가한 것과 같다.
• Parameters: 60 million
• Activation function: ReLu
Parameter 개수가 늘어났기 때문에
learning해야 할 data도 증가한다.
2. Deep Convolutional Models
: case studies
• Classic Networks
• VGG-16
• 3X3 필터(s=1)를 사용하는
간단한 network
• Max pool layer에도 크기
가 2, s가 2인 필터를 사용
해 연산한다.
• 크고 깊은 네트워크이기 때
문에 parameter의 개수가
증가하지만(138 million) 간
단하며 단순한 네트워크이
기 때문에 많이 사용한다.
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])
2. Deep Convolutional Models
: case studies
• Classic Networks
• ResNet
• 그럼 Residual network 구조는 다음과 같아질 것이다:
2. Deep Convolutional Models
: case studies
• Classic Networks
• ResNet
• 이 residual network는 아무리 네트워크가 깊다 하더라도 training
error가 증가하지 않는다.
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]를 계산하는 것이 매우 쉽다.
• 네트워크의 전체 모습은 다음과 같다:
2. Deep Convolutional Models
: case studies
• Networks in Networks and 1X1 Convolutions
• 1X1 필터가 있다고 해보자.
• 1X1 convolution은 이렇게 이미지의 채널을 줄이기 위해 사용한다.
2. Deep Convolutional Models
: case studies
• The Motivation Behind Inception Networks
• ConvNet에서 가장 중요한 것 중 하나는 filter의 사이즈를 결정
하는 것이다.
• 1X1 / 3X3/ 5X5 중에 무엇을 선택해야 할까?
• Filter 사이즈를 결정하고 conv & pooling layer를 이용하는 대신
inception을 사용하면 모든 필터를 사용할 뿐만 아니라 output들을 모아
준다.
• 하지만 computational cost가 너무 커지게 된다.
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 => 비용이 너무 크다.
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 => 연산이 엄청나게 줄어들게 된다.
2. Deep Convolutional Models
: case studies
• Inception Networks
• 각 filter별로 연산한 다음 모든 output을 합친다.
• 3X3과 5X5 filter 같은 경우 계산을 줄이기 위해 1X1을 수행한 다음 수행
한다.
3. Object Detection
• Object Localization
Image classification Classification with
localization:
object의 위치까지 반환
Object detection
[
1 object
多 object
3. Object Detection
• Classification with localization
• (x, y): x는 input image, y는 object에 대한 정보들
• Y = {Pc, bx, by, bh, bw, c1, c3, c3 …}
→ → … →
Softmax
bx, by, bh, bw
Is there
an object?
What object it is?
3. Object Detection
• Classification with localization
• 3개의 클래스를 분류하는 함수에서 Loss( 𝑦, y):
• Loss( 𝑦, y) = ( 𝑦1 − 𝑦1)2
+ ( 𝑦1 − 𝑦1)2
+ … + ( 𝑦1 − 𝑦1)2
(object 있는 경우)
= ( 𝑦1 − 𝑦1)2
(object 없는 경우_ if 𝑦1 = 0)
→ → … →
Softmax
bx, by, bh, bw
3. Object Detection
• Object Detection
• ConvNet을 사용해 Object Detection을 수행할 수 있다.
• Sliding Windows detection:
3. Object Detection
• Object Detection
• ConvNet을 사용해 Object Detection을 수행할 수 있다.
• Sliding Windows detection:
• 하지만 cost가 크다.
• 이를 convolution을 통해 효율적이고 간단하게 만들 수 있다.
→
- 이런 식으로 모든 image를 조사하여 해당
객체가 존재하는 region에 대해 1을 출력
한다
- 전체 영역에 대해 전부 조사를 마치면 더
큰 region 박스로 image를 조사한다.
3. Object Detection
• Convolutional Implementation of Sliding Windows
Fully Connected Layer 대신 Conv layer를 사용한다!
3. Object Detection
• Convolutional Implementation of Sliding Windows
• 16X16X3에서 14X14 Window를 Sliding Window를 이용해 연산하면 4개의 14X14를
input으로 trained convolutional network를 4번 수행해야한다.
• 하지만 convolution을 적용하면 한 개의 16X16 input으로 한번만 수행해도 된다.
• 또한 많은 부분이 중복되기 때문에 각 영역이 independent하게 돌아가는 것이 아니라
계산의 많은 부분이 공유된다.
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)
3. Object Detection
• Bounding Box Predictions
• YOLO 알고리즘:
• 정확한 output 좌표를 알 수 있다.
• Convolutional Implementation
• 같은 작업을 여러 번 반복하지 않아도 되어 계산이 효율적이
다.
• 속도가 빨라 real-time 처리가 가능하다.
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값을 넘으면 잘 작동하고 있다고
판단.
3. Object Detection
• Non-max Suppression:
• 같은 object를 한번만 detect하도록 만들고 싶음!
• Non-max suppression을 사용.
- pc가 가장 큰 bounding box를 선택
- 그것과 주변 bounding box들 간 IoU를
측정하여 높은 IoU를 가진 bounding
box들을 억제하는 방법
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가
함께 할당된다.
3. Object Detection
• Anchor Boxes
• 하지만 anchor box는 2개인데 객체가 3개인 경우
• 똑같은 anchor box에 해당하는 객체가 여러 개인
경우
=> 잘 처리해내지 못한다.
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
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할 수 있다.
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
값이 작은 방향으로, 다른 사람이라면 큰 방향으
로 모델을 학습시켜 나간다.
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
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를 최소화시켜야 한다.
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 =
4. Special Applications:
2) Neural Style Transfer
• What is neural style transfer?
• Content image를 style image의 화풍으로 새로운 이미지를 만
들어 주는 기법
• ConvNet을 사용해 각 layer에서 feature들을 추출한다!
4. Special Applications:
2) Neural Style Transfer
• What are deep ConvNets learning?
• 각 layer에서는 그 unit의 activations를 최대로 할 수 있는
image patch들을 고르는 작업을 수행, 이 과정을 반복한다.
• 앞단의 layer에서는 심플한 특징들(edges, 특정 색깔 등)을,
layer가 깊어질수록 더 넓은 부분을 포함하게 됨.
4. Special Applications:
2) Neural Style Transfer
• What are deep ConvNets learning?
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)
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을 갱신
한다.
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>
4. Special Applications:
2) Neural Style Transfer
• Style Cost Function
• S -> style image, generated image에 대한 style matrix를 만들어 낼
수도 있다.
• 두 행렬을 사용하여 style cost function을 정의하면,
• 𝐽𝑠𝑡𝑦𝑙𝑒
𝑙
(𝑆, 𝐺) =
1
𝑏
* 𝐺 𝑙 (𝑆) − 𝐺 𝑙 (𝐺) 2
=
• 이를 모든 layer에 대해 적용하면,
2

More Related Content

What's hot

Cnn 발표자료
Cnn 발표자료Cnn 발표자료
Cnn 발표자료
종현 최
 
Lecture 4: Neural Networks I
Lecture 4: Neural Networks ILecture 4: Neural Networks I
Lecture 4: Neural Networks I
Sang Jun Lee
 
Murpy's Machine Learing: 10. Directed Graphical Model
Murpy's Machine Learing: 10. Directed Graphical ModelMurpy's Machine Learing: 10. Directed Graphical Model
Murpy's Machine Learing: 10. Directed Graphical ModelJungkyu Lee
 
Learning to remember rare events
Learning to remember rare eventsLearning to remember rare events
Learning to remember rare events
홍배 김
 
머피's 머신러닝, Mixture model and EM algorithm
머피's 머신러닝, Mixture model and EM algorithm머피's 머신러닝, Mixture model and EM algorithm
머피's 머신러닝, Mixture model and EM algorithm
Jungkyu Lee
 
머피의 머신러닝 : Gaussian Processes
머피의 머신러닝 : Gaussian Processes머피의 머신러닝 : Gaussian Processes
머피의 머신러닝 : Gaussian ProcessesJungkyu Lee
 
Visualizing data using t-SNE
Visualizing data using t-SNEVisualizing data using t-SNE
Visualizing data using t-SNE
홍배 김
 
Image Deep Learning 실무적용
Image Deep Learning 실무적용Image Deep Learning 실무적용
Image Deep Learning 실무적용
Youngjae Kim
 
Lecture 3: Unsupervised Learning
Lecture 3: Unsupervised LearningLecture 3: Unsupervised Learning
Lecture 3: Unsupervised Learning
Sang Jun Lee
 
Yolo v2 urop 발표자료
Yolo v2 urop 발표자료Yolo v2 urop 발표자료
Yolo v2 urop 발표자료
DaeHeeKim31
 
Normalization 방법
Normalization 방법 Normalization 방법
Normalization 방법
홍배 김
 
딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04
HyeonSeok Choi
 
[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)
해강
 
Deep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural NetworkDeep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural Network
agdatalab
 
Yolo v1 urop 발표자료
Yolo v1 urop 발표자료Yolo v1 urop 발표자료
Yolo v1 urop 발표자료
DaeHeeKim31
 
집단지성 프로그래밍 07-고급 분류 기법-커널 기법과 svm-01
집단지성 프로그래밍 07-고급 분류 기법-커널 기법과 svm-01집단지성 프로그래밍 07-고급 분류 기법-커널 기법과 svm-01
집단지성 프로그래밍 07-고급 분류 기법-커널 기법과 svm-01
Kwang Woo NAM
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)
SANG WON PARK
 
A neural image caption generator
A neural image caption generatorA neural image caption generator
A neural image caption generator
홍배 김
 
밑바닥부터 시작하는딥러닝 8장
밑바닥부터 시작하는딥러닝 8장밑바닥부터 시작하는딥러닝 8장
밑바닥부터 시작하는딥러닝 8장
Sunggon Song
 

What's hot (20)

Cnn 발표자료
Cnn 발표자료Cnn 발표자료
Cnn 발표자료
 
Lecture 4: Neural Networks I
Lecture 4: Neural Networks ILecture 4: Neural Networks I
Lecture 4: Neural Networks I
 
Murpy's Machine Learing: 10. Directed Graphical Model
Murpy's Machine Learing: 10. Directed Graphical ModelMurpy's Machine Learing: 10. Directed Graphical Model
Murpy's Machine Learing: 10. Directed Graphical Model
 
Learning to remember rare events
Learning to remember rare eventsLearning to remember rare events
Learning to remember rare events
 
머피's 머신러닝, Mixture model and EM algorithm
머피's 머신러닝, Mixture model and EM algorithm머피's 머신러닝, Mixture model and EM algorithm
머피's 머신러닝, Mixture model and EM algorithm
 
머피의 머신러닝 : Gaussian Processes
머피의 머신러닝 : Gaussian Processes머피의 머신러닝 : Gaussian Processes
머피의 머신러닝 : Gaussian Processes
 
Visualizing data using t-SNE
Visualizing data using t-SNEVisualizing data using t-SNE
Visualizing data using t-SNE
 
Image Deep Learning 실무적용
Image Deep Learning 실무적용Image Deep Learning 실무적용
Image Deep Learning 실무적용
 
Lecture 3: Unsupervised Learning
Lecture 3: Unsupervised LearningLecture 3: Unsupervised Learning
Lecture 3: Unsupervised Learning
 
Yolo v2 urop 발표자료
Yolo v2 urop 발표자료Yolo v2 urop 발표자료
Yolo v2 urop 발표자료
 
Normalization 방법
Normalization 방법 Normalization 방법
Normalization 방법
 
Les net
Les netLes net
Les net
 
딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04
 
[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)
 
Deep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural NetworkDeep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural Network
 
Yolo v1 urop 발표자료
Yolo v1 urop 발표자료Yolo v1 urop 발표자료
Yolo v1 urop 발표자료
 
집단지성 프로그래밍 07-고급 분류 기법-커널 기법과 svm-01
집단지성 프로그래밍 07-고급 분류 기법-커널 기법과 svm-01집단지성 프로그래밍 07-고급 분류 기법-커널 기법과 svm-01
집단지성 프로그래밍 07-고급 분류 기법-커널 기법과 svm-01
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)
 
A neural image caption generator
A neural image caption generatorA neural image caption generator
A neural image caption generator
 
밑바닥부터 시작하는딥러닝 8장
밑바닥부터 시작하는딥러닝 8장밑바닥부터 시작하는딥러닝 8장
밑바닥부터 시작하는딥러닝 8장
 

Similar to Convolutional neural networks

인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝
Jinwon Lee
 
03.12 cnn backpropagation
03.12 cnn backpropagation03.12 cnn backpropagation
03.12 cnn backpropagation
Dea-hwan Ki
 
[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments종빈 오
 
Dl from scratch(7)
Dl from scratch(7)Dl from scratch(7)
Dl from scratch(7)
Park Seong Hyeon
 
Designing more efficient convolution neural network
Designing more efficient convolution neural networkDesigning more efficient convolution neural network
Designing more efficient convolution neural network
NAVER Engineering
 
Designing more efficient convolution neural network
Designing more efficient convolution neural networkDesigning more efficient convolution neural network
Designing more efficient convolution neural network
Dongyi Kim
 
GoogLenet
GoogLenetGoogLenet
GoogLenet
KyeongUkJang
 
HistoryOfCNN
HistoryOfCNNHistoryOfCNN
HistoryOfCNN
Tae Young Lee
 
Learning how to explain neural networks: PatternNet and PatternAttribution
Learning how to explain neural networks: PatternNet and PatternAttributionLearning how to explain neural networks: PatternNet and PatternAttribution
Learning how to explain neural networks: PatternNet and PatternAttribution
Gyubin Son
 
네트워크 경량화 이모저모 @ 2020 DLD
네트워크 경량화 이모저모 @ 2020 DLD네트워크 경량화 이모저모 @ 2020 DLD
네트워크 경량화 이모저모 @ 2020 DLD
Kim Junghoon
 
Voxel based game_optimazation_relelase
Voxel based game_optimazation_relelaseVoxel based game_optimazation_relelase
Voxel based game_optimazation_relelase
YEONG-CHEON YOU
 
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
강 민우
 
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
jdo
 
4.convolutional neural networks
4.convolutional neural networks4.convolutional neural networks
4.convolutional neural networks
Haesun Park
 
텐서플로우 2.0 튜토리얼 - CNN
텐서플로우 2.0 튜토리얼 - CNN텐서플로우 2.0 튜토리얼 - CNN
텐서플로우 2.0 튜토리얼 - CNN
Hwanhee Kim
 
Deep Learning Into Advance - 1. Image, ConvNet
Deep Learning Into Advance - 1. Image, ConvNetDeep Learning Into Advance - 1. Image, ConvNet
Deep Learning Into Advance - 1. Image, ConvNet
Hyojun Kim
 
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담
Sumin Byeon
 
CNN
CNNCNN
CNN
chs71
 
여러 컨볼루션 레이어 테크닉과 경량화 기법들
여러 컨볼루션 레이어 테크닉과 경량화 기법들여러 컨볼루션 레이어 테크닉과 경량화 기법들
여러 컨볼루션 레이어 테크닉과 경량화 기법들
Dongyi Kim
 
2.linear regression and logistic regression
2.linear regression and logistic regression2.linear regression and logistic regression
2.linear regression and logistic regression
Haesun Park
 

Similar to Convolutional neural networks (20)

인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝
 
03.12 cnn backpropagation
03.12 cnn backpropagation03.12 cnn backpropagation
03.12 cnn backpropagation
 
[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments
 
Dl from scratch(7)
Dl from scratch(7)Dl from scratch(7)
Dl from scratch(7)
 
Designing more efficient convolution neural network
Designing more efficient convolution neural networkDesigning more efficient convolution neural network
Designing more efficient convolution neural network
 
Designing more efficient convolution neural network
Designing more efficient convolution neural networkDesigning more efficient convolution neural network
Designing more efficient convolution neural network
 
GoogLenet
GoogLenetGoogLenet
GoogLenet
 
HistoryOfCNN
HistoryOfCNNHistoryOfCNN
HistoryOfCNN
 
Learning how to explain neural networks: PatternNet and PatternAttribution
Learning how to explain neural networks: PatternNet and PatternAttributionLearning how to explain neural networks: PatternNet and PatternAttribution
Learning how to explain neural networks: PatternNet and PatternAttribution
 
네트워크 경량화 이모저모 @ 2020 DLD
네트워크 경량화 이모저모 @ 2020 DLD네트워크 경량화 이모저모 @ 2020 DLD
네트워크 경량화 이모저모 @ 2020 DLD
 
Voxel based game_optimazation_relelase
Voxel based game_optimazation_relelaseVoxel based game_optimazation_relelase
Voxel based game_optimazation_relelase
 
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
 
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
 
4.convolutional neural networks
4.convolutional neural networks4.convolutional neural networks
4.convolutional neural networks
 
텐서플로우 2.0 튜토리얼 - CNN
텐서플로우 2.0 튜토리얼 - CNN텐서플로우 2.0 튜토리얼 - CNN
텐서플로우 2.0 튜토리얼 - CNN
 
Deep Learning Into Advance - 1. Image, ConvNet
Deep Learning Into Advance - 1. Image, ConvNetDeep Learning Into Advance - 1. Image, ConvNet
Deep Learning Into Advance - 1. Image, ConvNet
 
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담
 
CNN
CNNCNN
CNN
 
여러 컨볼루션 레이어 테크닉과 경량화 기법들
여러 컨볼루션 레이어 테크닉과 경량화 기법들여러 컨볼루션 레이어 테크닉과 경량화 기법들
여러 컨볼루션 레이어 테크닉과 경량화 기법들
 
2.linear regression and logistic regression
2.linear regression and logistic regression2.linear regression and logistic regression
2.linear regression and logistic regression
 

Convolutional neural networks

  • 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
  • 3. 1. Foundations of Convolutional NN • Edge Detection
  • 4. 1. Foundations of Convolutional NN • Edge Detection - 6X6 이미지의 첫 3X3 행렬을 필터와 곱한다. → 4X4 output의 첫번째 요소는 각 곱한 값들의 합이 된다. → 필터를 오른쪽으로 한칸 움직여 두번째 요소를 구한다. → 같은 방법으로 전체 이 미지를 계산하면 4X4의 결과를 얻을 수 있다. convolution
  • 5. 1. Foundations of Convolutional NN • Edge Detection
  • 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을 수행한 다음 수행 한다.
  • 32. 3. Object Detection • Object Localization Image classification Classification with localization: object의 위치까지 반환 Object detection [ 1 object 多 object
  • 33. 3. Object Detection • Classification with localization • (x, y): x는 input image, y는 object에 대한 정보들 • Y = {Pc, bx, by, bh, bw, c1, c3, c3 …} → → … → Softmax bx, by, bh, bw Is there an object? What object it is?
  • 34. 3. Object Detection • Classification with localization • 3개의 클래스를 분류하는 함수에서 Loss( 𝑦, y): • Loss( 𝑦, y) = ( 𝑦1 − 𝑦1)2 + ( 𝑦1 − 𝑦1)2 + … + ( 𝑦1 − 𝑦1)2 (object 있는 경우) = ( 𝑦1 − 𝑦1)2 (object 없는 경우_ if 𝑦1 = 0) → → … → Softmax bx, by, bh, bw
  • 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가 깊어질수록 더 넓은 부분을 포함하게 됨.
  • 53. 4. Special Applications: 2) Neural Style Transfer • What are deep ConvNets learning?
  • 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

  1. Filter를 학습한다. 전처리마다 영향을 받는 부분이 다르므로 결과가 달라질 수 있다. 하지만 필터를 학습시키게 되면 가공된 인풋이 들어감 하지만 cnn에서는 raw한 input을 주므로서 bias를 줄이게 된다.
  2. 상관계수 행렬: http://www.ktword.co.kr/abbr_view.php?m_temp1=5596