SlideShare uma empresa Scribd logo
1 de 62
Baixar para ler offline
Photo-realistic Single Image Super-resolution using a
Generative Adversarial Network* (SRGAN)
ISL Lab Seminar
Hansol Kang
* Ledig, Christian, et al. "Photo-realistic single image super-resolution using a generative adversarial network." Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.
Contents
2019-05-24
2
Introduction
Review
SRGAN
Concept
Networks
Perceptual loss
Results
Experiment
Source Code
Set5, Set14, Custom
Summary
I. Introduction
Introduction
Review
Introduction
• Review - Concept of GAN
2019-05-24
4
“Discriminator를 잘 속이는 Generator를 만들자.”
1) Vanilla GAN
D
real or
fake
G
image
2) DCGAN
D
real or
fake
image
G
Latent space의 manipulability 발견
3) InfoGAN
D
real or
fake
image
GZ MutualInformation
4) LSGAN
D
real or
fake
image
G
BCE Loss -> MSE Loss 사용
Decision
Boundary
Introduction
• Review - Concept of GAN
2019-05-24
5
“Discriminator를 잘 속이는 Generator를 만들자.”
1) Vanilla GAN
D
real or
fake
G
image
2) DCGAN
D
real or
fake
image
G
Latent space의 manipulability 발견
3) InfoGAN
D
real or
fake
image
GZ MutualInformation
4) LSGAN
D
real or
fake
image
G
BCE Loss -> MSE Loss 사용
Decision
Boundary
Introduction
• Review - Applications
2019-05-24
6
Style Transfer
In painting
Super
Resolution
II. SRGAN
SRGAN
Concept, Networks, Perceptual loss, Results
SRGAN
2019-05-24
8
• Concept
D G
“Real한 Fake 데이터 만들기”
HR SR
=>“HR 같은 SR 데이터 만들기”
SRGAN
2019-05-24
9
• Networks
    ))((1log)(logmaxmin ~~
LR
pI
HR
pIDG
IGDID GDg
LR
Dtraion
HR   EE
Real Latent code(Z)
SRGAN
2019-05-24
10
• Networks
• PReLU Vs. Leaky ReLU
• ResNet
• ESPCN
SRGAN
2019-05-24
11
• Networks
PReLU Vs. Leaky ReLU
Leaky ReLU : Fixed slope
PReLU : Learnable slope
),0min(*_),0max(LeakyReLU xslopenegativex(x) 
),0min(*),0max(PReLU xax(x) 
SRGAN
2019-05-24
12
• Networks
ResNet
* ResNet seminar (Jae Won An)
Classification (ResNet)
Detection
Enhancement (DCP)
(R-CNN, Fast R-CNN, Faster R-CNN)
Super resolution (SRCNN)
Detection (SPPNet)
Segmentation (Mask R-CNN)
SRGAN
2019-05-24
13
• Networks
ResNet
Skip connection
=>Like a ensemble effect
Residual block
* ResNet seminar (Jae Won An)
SRGAN
2019-05-24
14
• Networks
ESPCN (Efficient Sub-Pixel Convolutional Neural Network
SRCNN,
VDSR
ESPCN
LR
LR
Pixel Shuffle
Bi-cubic
: 해상도 증가 후 Feature 추출
: Feature 추출 후 해상도 증가
SRGAN
2019-05-24
15
• Networks
ESPCN (Efficient Sub-Pixel Convolutional Neural Network
엄밀한 설명은 아니지만 개념적으로 설명하면,
SRGAN
2019-05-24
16
• Networks
Just Ordinary CNN structure
Stride Conv layer(no pooling layer)
* DCGAN seminar (Hansol Kang) – https://isl-homepage.github.io/seminar/
SRGAN
2019-05-24
17
• Perceptual loss
Perceptual Loss =
SR
Gen
SR
X
SR
lll 3
10

Content Loss + Adversarial Loss
  

rW
x
rH
y
yx
LRHR
yx
SR
MSE IGI
WHr
l G
1 1
2
,,2
)(
1

MSE VGG
SOTA에서 많이 사용하는 방법
=> High PSNR, BUT perceptually BAD
(PSNR과 SSIM이 좋은 평가 지표가 아니다.)
SRGAN
2019-05-24
18
• Perceptual loss
Perceptual Loss =
SR
Gen
SR
X
SR
lll 3
10

Content Loss + Adversarial Loss
MSE VGG
: The feature map obtained by j-th convolution (after activation) before the i-th maxpooling layer within the VGG19
network
     

ji ji
G
W
x
H
y
yx
LR
jiyx
HR
ji
jiji
SR
jiVGG IGI
HW
l
, ,
1 1
2
,,,,
,,
,/ )(
1

ji,
*Basic of DCNN seminar (Hansol Kang) – https://isl-homepage.github.io/seminar/
Feature를 서로 비교하겠다.
=> 디테일한 정보가 같도록 (perceptually Good)
Input F1 F2
F
C
Feature map
SR
I
SRGAN
2019-05-24
19
• Perceptual loss
Perceptual Loss =
SR
Gen
SR
X
SR
lll 3
10

Content Loss + Adversarial Loss
  

N
n
LRSR
Gen IGDl GD
1
log 
   LR
IGD GD 1log
   LR
IGD GD log
Maximize 시키는 문제
Minimize 시키는 문제
SRGAN
2019-05-24
20
• Perceptual loss
* Medium blog, “Introduction to deep super resolution”
(https://medium.com/@hirotoschwert/introduction-to-deep-super-resolution-c052d84ce8cf)
SRGAN
2019-05-24
21
• Perceptual loss
* Medium blog, “Introduction to deep super resolution”
(https://medium.com/@hirotoschwert/introduction-to-deep-super-resolution-c052d84ce8cf)
Adv. loss
SRGAN
2019-05-24
22
• Perceptual loss
* Medium blog, “Introduction to deep super resolution”
(https://medium.com/@hirotoschwert/introduction-to-deep-super-resolution-c052d84ce8cf)
Content loss2Content loss1
SRGAN
2019-05-24
23
• Results
• Datasets : Set5, Set14, BSD100 • Scale factor : 4
• MOS(Mean Opinion Score) testing : 26raters. (1 : bad quality, 5 : excellent quality)
12가지 버전
GT, NN, Bicubic, SRCNN, SelfExSR, DRCN, ESPCN, SRResNet-MSE, SRRestNet-VGG22, SRGAN-MSE, SRGAN-VGG22, SRGAN-VGG54
각 평가자는 1128개의 이미지(12 versions of 19 images + 9 versions of 100 images) (12*19+9*100 = 228+900=1128)
The raters were calibrated on the NN (score 1) and HR (5) versions of 20 images from the BSD300 training set
Low-level features
High-level features
SRGAN
2019-05-24
24
• Results
: MOS 관점에서 adversarial loss가 유의미한 결과 값을 출력.
: MOS 관점에서 high lever feature가 더 유의미한 결과 값을 출력.
We could not determine a significantly best loss function
SRGAN
2019-05-24
25
• Results
SRGAN
2019-05-24
26
• Results
“PSNR이나 SSIM을 원하면, SRResNet을 써.
물론 구리겠지만 찡긋”
III. Experiment
Experiment
Source Code, Set5, Set14, Custom
self.espcn1 = ESPCN(64, 256)
self.espcn2 = ESPCN(256, 256)
#최종적인 출력.
self.conv3 = nn.Conv2d(256, 3, kernel_size=9, stride=1, padding=4)
def forward(self, x):
x = F.prelu(self.conv1(x))
temp = self.block1(x)
temp = self.block2(temp)
temp = self.block3(temp)
temp = self.block4(temp)
temp = self.block5(temp)
temp = self.block6(temp)
temp = self.block7(temp)
temp = self.block8(temp)
temp = self.block9(temp)
temp = self.block10(temp)
temp = self.block11(temp)
temp = self.block12(temp)
temp = self.block13(temp)
temp = self.block14(temp)
temp = self.block15(temp)
temp = self.block16(temp)
x = x+self.bn1(self.conv2(temp))
x = self.espcn1(x)
x = self.espcn2(x)
x = self.conv3(x)
return x
Experiment
• Source Code
2019-05-24
28
class Generator(nn.Module):
def __init__(self):
super(Generator, self).__init__()
self.conv1 = nn.Conv2d(3, 64, kernel_size=9, stride=1, padding=4)
#TODO : for문을 이용하여 쌓는 방법 고려하기.
self.block1 = Block_B(64)
self.block2 = Block_B(64)
self.block3 = Block_B(64)
self.block4 = Block_B(64)
self.block5 = Block_B(64)
self.block6 = Block_B(64)
self.block7 = Block_B(64)
self.block8 = Block_B(64)
self.block9 = Block_B(64)
self.block10 = Block_B(64)
self.block11 = Block_B(64)
self.block12 = Block_B(64)
self.block13 = Block_B(64)
self.block14 = Block_B(64)
self.block15 = Block_B(64)
self.block16 = Block_B(64)
self.conv2 = nn.Conv2d(64, 64, kernel_size=3, stride=1, padding=1)
self.bn1 = nn.BatchNorm2d(64)
def forward(self, x):
x = F.leaky_relu(self.conv1(x), 0.2)
x = F.leaky_relu(self.bn1(self.conv2(x)), 0.2)
x = F.leaky_relu(self.bn2(self.conv3(x)), 0.2)
x = F.leaky_relu(self.bn3(self.conv4(x)), 0.2)
x = F.leaky_relu(self.bn4(self.conv5(x)), 0.2)
x = F.leaky_relu(self.bn5(self.conv6(x)), 0.2)
x = F.leaky_relu(self.bn6(self.conv7(x)), 0.2)
x = F.leaky_relu(self.bn7(self.conv8(x)), 0.2)
x = F.leaky_relu(self.conv9(self.flatten(x)))
x = F.sigmoid(self.conv10(x))
return x
Experiment
• Source Code
2019-05-24
29
class Discriminator(nn.Module):
def __init__(self):
super(Discriminator, self).__init__()
self.conv1 = nn.Conv2d(3, 64, kernel_size=3, padding=1)
self.conv2 = nn.Conv2d(64, 64, kernel_size=3, stride=2, padding=1)
self.bn1 = nn.BatchNorm2d(64)
self.conv3 = nn.Conv2d(64, 128, kernel_size=3, padding=1)
self.bn2 = nn.BatchNorm2d(128)
self.conv4 = nn.Conv2d(128, 128, kernel_size=3, stride=2, padding=1)
self.bn3 = nn.BatchNorm2d(128)
self.conv5 = nn.Conv2d(128, 256, kernel_size=3, padding=1)
self.bn4 = nn.BatchNorm2d(256)
self.conv6 = nn.Conv2d(256, 256, kernel_size=3, stride=2, padding=1)
self.bn5 = nn.BatchNorm2d(256)
self.conv7 = nn.Conv2d(256, 512, kernel_size=3, padding=1)
self.bn6 = nn.BatchNorm2d(512)
self.conv8 = nn.Conv2d(512, 512, kernel_size=3, stride=2, padding=1)
self.bn7 = nn.BatchNorm2d(512)
#TODO: flatten 과정 확인 필요
self.flatten = nn.AdaptiveAvgPool2d(1)
self.conv9 = nn.Conv2d(512, 1024, kernel_size=1)
self.conv10 = nn.Conv2d(1024, 1, kernel_size=1)
Experiment
• Source Code
2019-05-24
30
class GeneratorLoss(nn.Module):
def __init__(self):
super(GeneratorLoss, self).__init__()
vgg = vgg16(pretrained=True)
loss_network = nn.Sequential(*list(vgg.features)[:31]).eval()
for param in loss_network.parameters():
param.requires_grad = False
self.loss_network = loss_network
self.mse_loss = nn.MSELoss()
def forward(self, out_labels, out_images, target_images):
# Adversarial Loss
adversarial_loss = torch.mean(1 - out_labels)
# Perception Loss
perception_loss = self.mse_loss(self.loss_network(out_images), self.loss_network(target_images))
# Image Loss
image_loss = self.mse_loss(out_images, target_images)
loss_network = nn.Sequential(*list(vgg.features)[:31]).eval()
파이썬 Asterisk(*) 의 역할
1. Positional arg
2. Keword arg
3. Unpacking
# (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
# (1): ReLU(inplace)
# (2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
# (3): ReLU(inplace)
# (4): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), dilation=(1, 1), ceil_mode=False)
# (5): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
# ... # ...
# (30): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), dilation=(1, 1), ceil_mode=False) # )
Python Intermediate Seminar 예정
Experiment
• Dataset(Set-5, Set-14, Custom)
2019-05-24
31
…
Experiment
• Result#1 – Set5
2019-05-24
32
* 실험 결과는 미리 학습된 네트워크(ep:100, r:4)를 사용함. - https://github.com/leftthomas/SRGAN)
a b
c d
e
a : Bi-cubic
b : SRCNN
c : Kim
d : SRGAN
e : HR
Experiment
• Result#2 – Set5
2019-05-24
36
* 실험 결과는 미리 학습된 네트워크(ep:100, r:4)를 사용함. - https://github.com/leftthomas/SRGAN)
a b
c d
e
a : Bi-cubic
b : SRCNN
c : Kim
d : SRGAN
e : HR
Experiment
• Result#3 – Set5
2019-05-24
40
* 실험 결과는 미리 학습된 네트워크(ep:100, r:4)를 사용함. - https://github.com/leftthomas/SRGAN)
a b
c d
e
a : Bi-cubic
b : SRCNN
c : Kim
d : SRGAN
e : HR
Experiment
• Result#4 – Set14
2019-05-24
43
* 실험 결과는 미리 학습된 네트워크(ep:100, r:4)를 사용함. - https://github.com/leftthomas/SRGAN)
a b
c d
e
a : Bi-cubic
b : SRCNN
c : Kim
d : SRGAN
e : HR
Experiment
• Result#5 – Set14
2019-05-24
47
* 실험 결과는 미리 학습된 네트워크(ep:100, r:4)를 사용함. - https://github.com/leftthomas/SRGAN)
a b
c d
e
a : Bi-cubic
b : SRCNN
c : Kim
d : SRGAN
e : HR
Experiment
• Result#6 – Custom data
2019-05-24
50
* 실험 결과는 미리 학습된 네트워크(ep:100, r:4)를 사용함. - https://github.com/leftthomas/SRGAN)
(240x180->960x720)
(236x125->944x500)
(137x137->548x548) (480x320->1920x1280)
Experiment
• Result#7 – Custom data(Video)
2019-05-24
58
* 실험 결과는 미리 학습된 네트워크(ep:100, r:4)를 사용함. - https://github.com/leftthomas/SRGAN)
IV. Summary
Summary
Summary, Future Work
Summary
2019-05-24
60
• ResNet 구조와 GAN 구조를 SR에 적용하여 객관적 지표인 PSNR, SSIM를 일정 수준 확보하면서
주관적 지표인 MOS를 향상 시킴.
• Content loss와 adversarial loss를 융합한 새로운 perceptual loss 를 제안함.
Future work
2019-05-24
61
GAN Research
Vanilla GAN
DCGAN
InfoGAN
LSGAN
SRGAN
Development tools & Language
Tips(Document & Programming)
PyTorch
C++ Coding Standard
Mathematical Theory
Linear algebra
Probability & Information theory
Other research
Level Processor
Ice Propagation
Modern C++(C++14)
Python(Intermediate)
Python executable & UI
Style Transfer
cGAN
wGAN
BEGAN
BigGAN
Cycle GAN
Style GAN
DONETODO
?
&

Mais conteúdo relacionado

Mais procurados

Generative adversarial networks
Generative adversarial networksGenerative adversarial networks
Generative adversarial networks남주 김
 
GAN - Theory and Applications
GAN - Theory and ApplicationsGAN - Theory and Applications
GAN - Theory and ApplicationsEmanuele Ghelfi
 
Graph R-CNN for Scene Graph Generation
Graph R-CNN for Scene Graph GenerationGraph R-CNN for Scene Graph Generation
Graph R-CNN for Scene Graph GenerationSangmin Woo
 
Generative Adversarial Networks (GAN)
Generative Adversarial Networks (GAN)Generative Adversarial Networks (GAN)
Generative Adversarial Networks (GAN)Manohar Mukku
 
Finding connections among images using CycleGAN
Finding connections among images using CycleGANFinding connections among images using CycleGAN
Finding connections among images using CycleGANNAVER Engineering
 
Activation functions
Activation functionsActivation functions
Activation functionsPRATEEK SAHU
 
ICCV 2019 論文紹介 (26 papers)
ICCV 2019 論文紹介 (26 papers)ICCV 2019 論文紹介 (26 papers)
ICCV 2019 論文紹介 (26 papers)Hideki Okada
 
Enhanced Deep Residual Networks for Single Image Super-Resolution
Enhanced Deep Residual Networks for Single Image Super-ResolutionEnhanced Deep Residual Networks for Single Image Super-Resolution
Enhanced Deep Residual Networks for Single Image Super-ResolutionNAVER Engineering
 
Faster R-CNN - PR012
Faster R-CNN - PR012Faster R-CNN - PR012
Faster R-CNN - PR012Jinwon Lee
 
PR-217: EfficientDet: Scalable and Efficient Object Detection
PR-217: EfficientDet: Scalable and Efficient Object DetectionPR-217: EfficientDet: Scalable and Efficient Object Detection
PR-217: EfficientDet: Scalable and Efficient Object DetectionJinwon Lee
 
GANs and Applications
GANs and ApplicationsGANs and Applications
GANs and ApplicationsHoang Nguyen
 
Super Resolution
Super ResolutionSuper Resolution
Super Resolutionalokahuti
 
Deep learning for object detection
Deep learning for object detectionDeep learning for object detection
Deep learning for object detectionWenjing Chen
 
Generative adversarial networks
Generative adversarial networksGenerative adversarial networks
Generative adversarial networksYunjey Choi
 
Semantic segmentation with Convolutional Neural Network Approaches
Semantic segmentation with Convolutional Neural Network ApproachesSemantic segmentation with Convolutional Neural Network Approaches
Semantic segmentation with Convolutional Neural Network ApproachesFellowship at Vodafone FutureLab
 

Mais procurados (20)

Generative adversarial networks
Generative adversarial networksGenerative adversarial networks
Generative adversarial networks
 
GAN - Theory and Applications
GAN - Theory and ApplicationsGAN - Theory and Applications
GAN - Theory and Applications
 
Graph R-CNN for Scene Graph Generation
Graph R-CNN for Scene Graph GenerationGraph R-CNN for Scene Graph Generation
Graph R-CNN for Scene Graph Generation
 
Generative Adversarial Networks (GAN)
Generative Adversarial Networks (GAN)Generative Adversarial Networks (GAN)
Generative Adversarial Networks (GAN)
 
Finding connections among images using CycleGAN
Finding connections among images using CycleGANFinding connections among images using CycleGAN
Finding connections among images using CycleGAN
 
그림 그리는 AI
그림 그리는 AI그림 그리는 AI
그림 그리는 AI
 
Super resolution from a single image
Super resolution from a single imageSuper resolution from a single image
Super resolution from a single image
 
Activation functions
Activation functionsActivation functions
Activation functions
 
ICCV 2019 論文紹介 (26 papers)
ICCV 2019 論文紹介 (26 papers)ICCV 2019 論文紹介 (26 papers)
ICCV 2019 論文紹介 (26 papers)
 
Swin transformer
Swin transformerSwin transformer
Swin transformer
 
Enhanced Deep Residual Networks for Single Image Super-Resolution
Enhanced Deep Residual Networks for Single Image Super-ResolutionEnhanced Deep Residual Networks for Single Image Super-Resolution
Enhanced Deep Residual Networks for Single Image Super-Resolution
 
Faster R-CNN - PR012
Faster R-CNN - PR012Faster R-CNN - PR012
Faster R-CNN - PR012
 
PR-217: EfficientDet: Scalable and Efficient Object Detection
PR-217: EfficientDet: Scalable and Efficient Object DetectionPR-217: EfficientDet: Scalable and Efficient Object Detection
PR-217: EfficientDet: Scalable and Efficient Object Detection
 
GANs and Applications
GANs and ApplicationsGANs and Applications
GANs and Applications
 
Super Resolution
Super ResolutionSuper Resolution
Super Resolution
 
Depth estimation using deep learning
Depth estimation using deep learningDepth estimation using deep learning
Depth estimation using deep learning
 
StarGAN
StarGANStarGAN
StarGAN
 
Deep learning for object detection
Deep learning for object detectionDeep learning for object detection
Deep learning for object detection
 
Generative adversarial networks
Generative adversarial networksGenerative adversarial networks
Generative adversarial networks
 
Semantic segmentation with Convolutional Neural Network Approaches
Semantic segmentation with Convolutional Neural Network ApproachesSemantic segmentation with Convolutional Neural Network Approaches
Semantic segmentation with Convolutional Neural Network Approaches
 

Semelhante a Photo-realistic Single Image Super-resolution using a Generative Adversarial Network (SRGAN)

RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidiaRAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidiaMail.ru Group
 
[Pycon 2015] 오늘 당장 딥러닝 실험하기 제출용
[Pycon 2015] 오늘 당장 딥러닝 실험하기 제출용[Pycon 2015] 오늘 당장 딥러닝 실험하기 제출용
[Pycon 2015] 오늘 당장 딥러닝 실험하기 제출용현호 김
 
Learning Predictive Modeling with TSA and Kaggle
Learning Predictive Modeling with TSA and KaggleLearning Predictive Modeling with TSA and Kaggle
Learning Predictive Modeling with TSA and KaggleYvonne K. Matos
 
Scikit-Learn: Machine Learning in Python
Scikit-Learn: Machine Learning in PythonScikit-Learn: Machine Learning in Python
Scikit-Learn: Machine Learning in PythonMicrosoft
 
Beirut Java User Group JVM presentation
Beirut Java User Group JVM presentationBeirut Java User Group JVM presentation
Beirut Java User Group JVM presentationMahmoud Anouti
 
Visualizing the Model Selection Process
Visualizing the Model Selection ProcessVisualizing the Model Selection Process
Visualizing the Model Selection ProcessBenjamin Bengfort
 
Deep Convolutional GANs - meaning of latent space
Deep Convolutional GANs - meaning of latent spaceDeep Convolutional GANs - meaning of latent space
Deep Convolutional GANs - meaning of latent spaceHansol Kang
 
Catch a spider monkey
Catch a spider monkeyCatch a spider monkey
Catch a spider monkeyChengHui Weng
 
Building a Scalable Distributed Stats Infrastructure with Storm and KairosDB
Building a Scalable Distributed Stats Infrastructure with Storm and KairosDBBuilding a Scalable Distributed Stats Infrastructure with Storm and KairosDB
Building a Scalable Distributed Stats Infrastructure with Storm and KairosDBCody Ray
 
Java设置环境变量
Java设置环境变量Java设置环境变量
Java设置环境变量Zianed Hou
 
Using CNTK's Python Interface for Deep LearningDave DeBarr -
Using CNTK's Python Interface for Deep LearningDave DeBarr - Using CNTK's Python Interface for Deep LearningDave DeBarr -
Using CNTK's Python Interface for Deep LearningDave DeBarr - PyData
 
20190927 generative models_aia
20190927 generative models_aia20190927 generative models_aia
20190927 generative models_aiaYi-Fan Liou
 
Salt Identification Challenge
Salt Identification ChallengeSalt Identification Challenge
Salt Identification Challengekenluck2001
 
Csw2016 wheeler barksdale-gruskovnjak-execute_mypacket
Csw2016 wheeler barksdale-gruskovnjak-execute_mypacketCsw2016 wheeler barksdale-gruskovnjak-execute_mypacket
Csw2016 wheeler barksdale-gruskovnjak-execute_mypacketCanSecWest
 
Svm map reduce_slides
Svm map reduce_slidesSvm map reduce_slides
Svm map reduce_slidesSara Asher
 

Semelhante a Photo-realistic Single Image Super-resolution using a Generative Adversarial Network (SRGAN) (20)

RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidiaRAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
 
[Pycon 2015] 오늘 당장 딥러닝 실험하기 제출용
[Pycon 2015] 오늘 당장 딥러닝 실험하기 제출용[Pycon 2015] 오늘 당장 딥러닝 실험하기 제출용
[Pycon 2015] 오늘 당장 딥러닝 실험하기 제출용
 
Learning Predictive Modeling with TSA and Kaggle
Learning Predictive Modeling with TSA and KaggleLearning Predictive Modeling with TSA and Kaggle
Learning Predictive Modeling with TSA and Kaggle
 
Scikit-Learn: Machine Learning in Python
Scikit-Learn: Machine Learning in PythonScikit-Learn: Machine Learning in Python
Scikit-Learn: Machine Learning in Python
 
Beirut Java User Group JVM presentation
Beirut Java User Group JVM presentationBeirut Java User Group JVM presentation
Beirut Java User Group JVM presentation
 
Visualizing the Model Selection Process
Visualizing the Model Selection ProcessVisualizing the Model Selection Process
Visualizing the Model Selection Process
 
Deep Learning for Computer Vision: Software Frameworks (UPC 2016)
Deep Learning for Computer Vision: Software Frameworks (UPC 2016)Deep Learning for Computer Vision: Software Frameworks (UPC 2016)
Deep Learning for Computer Vision: Software Frameworks (UPC 2016)
 
Xgboost
XgboostXgboost
Xgboost
 
Deep Convolutional GANs - meaning of latent space
Deep Convolutional GANs - meaning of latent spaceDeep Convolutional GANs - meaning of latent space
Deep Convolutional GANs - meaning of latent space
 
Catch a spider monkey
Catch a spider monkeyCatch a spider monkey
Catch a spider monkey
 
Js tacktalk team dev js testing performance
Js tacktalk team dev js testing performanceJs tacktalk team dev js testing performance
Js tacktalk team dev js testing performance
 
Building a Scalable Distributed Stats Infrastructure with Storm and KairosDB
Building a Scalable Distributed Stats Infrastructure with Storm and KairosDBBuilding a Scalable Distributed Stats Infrastructure with Storm and KairosDB
Building a Scalable Distributed Stats Infrastructure with Storm and KairosDB
 
Java设置环境变量
Java设置环境变量Java设置环境变量
Java设置环境变量
 
Using CNTK's Python Interface for Deep LearningDave DeBarr -
Using CNTK's Python Interface for Deep LearningDave DeBarr - Using CNTK's Python Interface for Deep LearningDave DeBarr -
Using CNTK's Python Interface for Deep LearningDave DeBarr -
 
20190927 generative models_aia
20190927 generative models_aia20190927 generative models_aia
20190927 generative models_aia
 
Eye deep
Eye deepEye deep
Eye deep
 
Salt Identification Challenge
Salt Identification ChallengeSalt Identification Challenge
Salt Identification Challenge
 
Csw2016 wheeler barksdale-gruskovnjak-execute_mypacket
Csw2016 wheeler barksdale-gruskovnjak-execute_mypacketCsw2016 wheeler barksdale-gruskovnjak-execute_mypacket
Csw2016 wheeler barksdale-gruskovnjak-execute_mypacket
 
Svm map reduce_slides
Svm map reduce_slidesSvm map reduce_slides
Svm map reduce_slides
 
Lesson 39
Lesson 39Lesson 39
Lesson 39
 

Mais de Hansol Kang

ROS 시작하기(Getting Started with ROS:: Your First Steps in Robot Programming )
ROS 시작하기(Getting Started with ROS:: Your First Steps in Robot Programming )ROS 시작하기(Getting Started with ROS:: Your First Steps in Robot Programming )
ROS 시작하기(Getting Started with ROS:: Your First Steps in Robot Programming )Hansol Kang
 
관측 임무스케줄링 (Selecting and scheduling observations of agile satellites)
관측 임무스케줄링 (Selecting and scheduling observations of agile satellites)관측 임무스케줄링 (Selecting and scheduling observations of agile satellites)
관측 임무스케줄링 (Selecting and scheduling observations of agile satellites)Hansol Kang
 
알아두면 쓸모있는 깃허브 2
알아두면 쓸모있는 깃허브 2알아두면 쓸모있는 깃허브 2
알아두면 쓸모있는 깃허브 2Hansol Kang
 
알아두면 쓸모있는 깃허브 1
알아두면 쓸모있는 깃허브 1알아두면 쓸모있는 깃허브 1
알아두면 쓸모있는 깃허브 1Hansol Kang
 
basic of deep learning
basic of deep learningbasic of deep learning
basic of deep learningHansol Kang
 
파이썬 제대로 활용하기
파이썬 제대로 활용하기파이썬 제대로 활용하기
파이썬 제대로 활용하기Hansol Kang
 
모던 C++ 정리
모던 C++ 정리모던 C++ 정리
모던 C++ 정리Hansol Kang
 
LSGAN - SIMPle(Simple Idea Meaningful Performance Level up)
LSGAN - SIMPle(Simple Idea Meaningful Performance Level up)LSGAN - SIMPle(Simple Idea Meaningful Performance Level up)
LSGAN - SIMPle(Simple Idea Meaningful Performance Level up)Hansol Kang
 
InfoGAN : Interpretable Representation Learning by Information Maximizing Gen...
InfoGAN : Interpretable Representation Learning by Information Maximizing Gen...InfoGAN : Interpretable Representation Learning by Information Maximizing Gen...
InfoGAN : Interpretable Representation Learning by Information Maximizing Gen...Hansol Kang
 
딥러닝 중급 - AlexNet과 VggNet (Basic of DCNN : AlexNet and VggNet)
딥러닝 중급 - AlexNet과 VggNet (Basic of DCNN : AlexNet and VggNet)딥러닝 중급 - AlexNet과 VggNet (Basic of DCNN : AlexNet and VggNet)
딥러닝 중급 - AlexNet과 VggNet (Basic of DCNN : AlexNet and VggNet)Hansol Kang
 
PyTorch 튜토리얼 (Touch to PyTorch)
PyTorch 튜토리얼 (Touch to PyTorch)PyTorch 튜토리얼 (Touch to PyTorch)
PyTorch 튜토리얼 (Touch to PyTorch)Hansol Kang
 
쉽게 설명하는 GAN (What is this? Gum? It's GAN.)
쉽게 설명하는 GAN (What is this? Gum? It's GAN.)쉽게 설명하는 GAN (What is this? Gum? It's GAN.)
쉽게 설명하는 GAN (What is this? Gum? It's GAN.)Hansol Kang
 
문서와 개발에 필요한 간단한 팁들(Too easy, but important things - document, development)
문서와 개발에 필요한 간단한 팁들(Too easy, but important things - document, development)문서와 개발에 필요한 간단한 팁들(Too easy, but important things - document, development)
문서와 개발에 필요한 간단한 팁들(Too easy, but important things - document, development)Hansol Kang
 
신뢰 전파 기법을 이용한 스테레오 정합(Stereo matching using belief propagation algorithm)
신뢰 전파 기법을 이용한 스테레오 정합(Stereo matching using belief propagation algorithm)신뢰 전파 기법을 이용한 스테레오 정합(Stereo matching using belief propagation algorithm)
신뢰 전파 기법을 이용한 스테레오 정합(Stereo matching using belief propagation algorithm)Hansol Kang
 
HSV 컬러 공간에서의 레티넥스와 채도 보정을 이용한 화질 개선 기법
HSV 컬러 공간에서의 레티넥스와 채도 보정을 이용한 화질 개선 기법HSV 컬러 공간에서의 레티넥스와 채도 보정을 이용한 화질 개선 기법
HSV 컬러 공간에서의 레티넥스와 채도 보정을 이용한 화질 개선 기법Hansol Kang
 
QT 프로그래밍 기초(basic of QT programming tutorial)
QT 프로그래밍 기초(basic of QT programming tutorial)QT 프로그래밍 기초(basic of QT programming tutorial)
QT 프로그래밍 기초(basic of QT programming tutorial)Hansol Kang
 
Continuously Adaptive Mean Shift(CAMSHIFT)
Continuously Adaptive Mean Shift(CAMSHIFT)Continuously Adaptive Mean Shift(CAMSHIFT)
Continuously Adaptive Mean Shift(CAMSHIFT)Hansol Kang
 
Mobile Robot PD and DOB control
Mobile Robot PD and DOB controlMobile Robot PD and DOB control
Mobile Robot PD and DOB controlHansol Kang
 

Mais de Hansol Kang (20)

ROS 시작하기(Getting Started with ROS:: Your First Steps in Robot Programming )
ROS 시작하기(Getting Started with ROS:: Your First Steps in Robot Programming )ROS 시작하기(Getting Started with ROS:: Your First Steps in Robot Programming )
ROS 시작하기(Getting Started with ROS:: Your First Steps in Robot Programming )
 
관측 임무스케줄링 (Selecting and scheduling observations of agile satellites)
관측 임무스케줄링 (Selecting and scheduling observations of agile satellites)관측 임무스케줄링 (Selecting and scheduling observations of agile satellites)
관측 임무스케줄링 (Selecting and scheduling observations of agile satellites)
 
알아두면 쓸모있는 깃허브 2
알아두면 쓸모있는 깃허브 2알아두면 쓸모있는 깃허브 2
알아두면 쓸모있는 깃허브 2
 
알아두면 쓸모있는 깃허브 1
알아두면 쓸모있는 깃허브 1알아두면 쓸모있는 깃허브 1
알아두면 쓸모있는 깃허브 1
 
FPN 리뷰
FPN 리뷰FPN 리뷰
FPN 리뷰
 
R-FCN 리뷰
R-FCN 리뷰R-FCN 리뷰
R-FCN 리뷰
 
basic of deep learning
basic of deep learningbasic of deep learning
basic of deep learning
 
파이썬 제대로 활용하기
파이썬 제대로 활용하기파이썬 제대로 활용하기
파이썬 제대로 활용하기
 
모던 C++ 정리
모던 C++ 정리모던 C++ 정리
모던 C++ 정리
 
LSGAN - SIMPle(Simple Idea Meaningful Performance Level up)
LSGAN - SIMPle(Simple Idea Meaningful Performance Level up)LSGAN - SIMPle(Simple Idea Meaningful Performance Level up)
LSGAN - SIMPle(Simple Idea Meaningful Performance Level up)
 
InfoGAN : Interpretable Representation Learning by Information Maximizing Gen...
InfoGAN : Interpretable Representation Learning by Information Maximizing Gen...InfoGAN : Interpretable Representation Learning by Information Maximizing Gen...
InfoGAN : Interpretable Representation Learning by Information Maximizing Gen...
 
딥러닝 중급 - AlexNet과 VggNet (Basic of DCNN : AlexNet and VggNet)
딥러닝 중급 - AlexNet과 VggNet (Basic of DCNN : AlexNet and VggNet)딥러닝 중급 - AlexNet과 VggNet (Basic of DCNN : AlexNet and VggNet)
딥러닝 중급 - AlexNet과 VggNet (Basic of DCNN : AlexNet and VggNet)
 
PyTorch 튜토리얼 (Touch to PyTorch)
PyTorch 튜토리얼 (Touch to PyTorch)PyTorch 튜토리얼 (Touch to PyTorch)
PyTorch 튜토리얼 (Touch to PyTorch)
 
쉽게 설명하는 GAN (What is this? Gum? It's GAN.)
쉽게 설명하는 GAN (What is this? Gum? It's GAN.)쉽게 설명하는 GAN (What is this? Gum? It's GAN.)
쉽게 설명하는 GAN (What is this? Gum? It's GAN.)
 
문서와 개발에 필요한 간단한 팁들(Too easy, but important things - document, development)
문서와 개발에 필요한 간단한 팁들(Too easy, but important things - document, development)문서와 개발에 필요한 간단한 팁들(Too easy, but important things - document, development)
문서와 개발에 필요한 간단한 팁들(Too easy, but important things - document, development)
 
신뢰 전파 기법을 이용한 스테레오 정합(Stereo matching using belief propagation algorithm)
신뢰 전파 기법을 이용한 스테레오 정합(Stereo matching using belief propagation algorithm)신뢰 전파 기법을 이용한 스테레오 정합(Stereo matching using belief propagation algorithm)
신뢰 전파 기법을 이용한 스테레오 정합(Stereo matching using belief propagation algorithm)
 
HSV 컬러 공간에서의 레티넥스와 채도 보정을 이용한 화질 개선 기법
HSV 컬러 공간에서의 레티넥스와 채도 보정을 이용한 화질 개선 기법HSV 컬러 공간에서의 레티넥스와 채도 보정을 이용한 화질 개선 기법
HSV 컬러 공간에서의 레티넥스와 채도 보정을 이용한 화질 개선 기법
 
QT 프로그래밍 기초(basic of QT programming tutorial)
QT 프로그래밍 기초(basic of QT programming tutorial)QT 프로그래밍 기초(basic of QT programming tutorial)
QT 프로그래밍 기초(basic of QT programming tutorial)
 
Continuously Adaptive Mean Shift(CAMSHIFT)
Continuously Adaptive Mean Shift(CAMSHIFT)Continuously Adaptive Mean Shift(CAMSHIFT)
Continuously Adaptive Mean Shift(CAMSHIFT)
 
Mobile Robot PD and DOB control
Mobile Robot PD and DOB controlMobile Robot PD and DOB control
Mobile Robot PD and DOB control
 

Último

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 

Último (20)

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

Photo-realistic Single Image Super-resolution using a Generative Adversarial Network (SRGAN)

  • 1. Photo-realistic Single Image Super-resolution using a Generative Adversarial Network* (SRGAN) ISL Lab Seminar Hansol Kang * Ledig, Christian, et al. "Photo-realistic single image super-resolution using a generative adversarial network." Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.
  • 4. Introduction • Review - Concept of GAN 2019-05-24 4 “Discriminator를 잘 속이는 Generator를 만들자.” 1) Vanilla GAN D real or fake G image 2) DCGAN D real or fake image G Latent space의 manipulability 발견 3) InfoGAN D real or fake image GZ MutualInformation 4) LSGAN D real or fake image G BCE Loss -> MSE Loss 사용 Decision Boundary
  • 5. Introduction • Review - Concept of GAN 2019-05-24 5 “Discriminator를 잘 속이는 Generator를 만들자.” 1) Vanilla GAN D real or fake G image 2) DCGAN D real or fake image G Latent space의 manipulability 발견 3) InfoGAN D real or fake image GZ MutualInformation 4) LSGAN D real or fake image G BCE Loss -> MSE Loss 사용 Decision Boundary
  • 6. Introduction • Review - Applications 2019-05-24 6 Style Transfer In painting Super Resolution
  • 7. II. SRGAN SRGAN Concept, Networks, Perceptual loss, Results
  • 8. SRGAN 2019-05-24 8 • Concept D G “Real한 Fake 데이터 만들기” HR SR =>“HR 같은 SR 데이터 만들기”
  • 9. SRGAN 2019-05-24 9 • Networks     ))((1log)(logmaxmin ~~ LR pI HR pIDG IGDID GDg LR Dtraion HR   EE Real Latent code(Z)
  • 10. SRGAN 2019-05-24 10 • Networks • PReLU Vs. Leaky ReLU • ResNet • ESPCN
  • 11. SRGAN 2019-05-24 11 • Networks PReLU Vs. Leaky ReLU Leaky ReLU : Fixed slope PReLU : Learnable slope ),0min(*_),0max(LeakyReLU xslopenegativex(x)  ),0min(*),0max(PReLU xax(x) 
  • 12. SRGAN 2019-05-24 12 • Networks ResNet * ResNet seminar (Jae Won An) Classification (ResNet) Detection Enhancement (DCP) (R-CNN, Fast R-CNN, Faster R-CNN) Super resolution (SRCNN) Detection (SPPNet) Segmentation (Mask R-CNN)
  • 13. SRGAN 2019-05-24 13 • Networks ResNet Skip connection =>Like a ensemble effect Residual block * ResNet seminar (Jae Won An)
  • 14. SRGAN 2019-05-24 14 • Networks ESPCN (Efficient Sub-Pixel Convolutional Neural Network SRCNN, VDSR ESPCN LR LR Pixel Shuffle Bi-cubic : 해상도 증가 후 Feature 추출 : Feature 추출 후 해상도 증가
  • 15. SRGAN 2019-05-24 15 • Networks ESPCN (Efficient Sub-Pixel Convolutional Neural Network 엄밀한 설명은 아니지만 개념적으로 설명하면,
  • 16. SRGAN 2019-05-24 16 • Networks Just Ordinary CNN structure Stride Conv layer(no pooling layer) * DCGAN seminar (Hansol Kang) – https://isl-homepage.github.io/seminar/
  • 17. SRGAN 2019-05-24 17 • Perceptual loss Perceptual Loss = SR Gen SR X SR lll 3 10  Content Loss + Adversarial Loss     rW x rH y yx LRHR yx SR MSE IGI WHr l G 1 1 2 ,,2 )( 1  MSE VGG SOTA에서 많이 사용하는 방법 => High PSNR, BUT perceptually BAD (PSNR과 SSIM이 좋은 평가 지표가 아니다.)
  • 18. SRGAN 2019-05-24 18 • Perceptual loss Perceptual Loss = SR Gen SR X SR lll 3 10  Content Loss + Adversarial Loss MSE VGG : The feature map obtained by j-th convolution (after activation) before the i-th maxpooling layer within the VGG19 network        ji ji G W x H y yx LR jiyx HR ji jiji SR jiVGG IGI HW l , , 1 1 2 ,,,, ,, ,/ )( 1  ji, *Basic of DCNN seminar (Hansol Kang) – https://isl-homepage.github.io/seminar/ Feature를 서로 비교하겠다. => 디테일한 정보가 같도록 (perceptually Good) Input F1 F2 F C Feature map SR I
  • 19. SRGAN 2019-05-24 19 • Perceptual loss Perceptual Loss = SR Gen SR X SR lll 3 10  Content Loss + Adversarial Loss     N n LRSR Gen IGDl GD 1 log     LR IGD GD 1log    LR IGD GD log Maximize 시키는 문제 Minimize 시키는 문제
  • 20. SRGAN 2019-05-24 20 • Perceptual loss * Medium blog, “Introduction to deep super resolution” (https://medium.com/@hirotoschwert/introduction-to-deep-super-resolution-c052d84ce8cf)
  • 21. SRGAN 2019-05-24 21 • Perceptual loss * Medium blog, “Introduction to deep super resolution” (https://medium.com/@hirotoschwert/introduction-to-deep-super-resolution-c052d84ce8cf) Adv. loss
  • 22. SRGAN 2019-05-24 22 • Perceptual loss * Medium blog, “Introduction to deep super resolution” (https://medium.com/@hirotoschwert/introduction-to-deep-super-resolution-c052d84ce8cf) Content loss2Content loss1
  • 23. SRGAN 2019-05-24 23 • Results • Datasets : Set5, Set14, BSD100 • Scale factor : 4 • MOS(Mean Opinion Score) testing : 26raters. (1 : bad quality, 5 : excellent quality) 12가지 버전 GT, NN, Bicubic, SRCNN, SelfExSR, DRCN, ESPCN, SRResNet-MSE, SRRestNet-VGG22, SRGAN-MSE, SRGAN-VGG22, SRGAN-VGG54 각 평가자는 1128개의 이미지(12 versions of 19 images + 9 versions of 100 images) (12*19+9*100 = 228+900=1128) The raters were calibrated on the NN (score 1) and HR (5) versions of 20 images from the BSD300 training set Low-level features High-level features
  • 24. SRGAN 2019-05-24 24 • Results : MOS 관점에서 adversarial loss가 유의미한 결과 값을 출력. : MOS 관점에서 high lever feature가 더 유의미한 결과 값을 출력. We could not determine a significantly best loss function
  • 26. SRGAN 2019-05-24 26 • Results “PSNR이나 SSIM을 원하면, SRResNet을 써. 물론 구리겠지만 찡긋”
  • 28. self.espcn1 = ESPCN(64, 256) self.espcn2 = ESPCN(256, 256) #최종적인 출력. self.conv3 = nn.Conv2d(256, 3, kernel_size=9, stride=1, padding=4) def forward(self, x): x = F.prelu(self.conv1(x)) temp = self.block1(x) temp = self.block2(temp) temp = self.block3(temp) temp = self.block4(temp) temp = self.block5(temp) temp = self.block6(temp) temp = self.block7(temp) temp = self.block8(temp) temp = self.block9(temp) temp = self.block10(temp) temp = self.block11(temp) temp = self.block12(temp) temp = self.block13(temp) temp = self.block14(temp) temp = self.block15(temp) temp = self.block16(temp) x = x+self.bn1(self.conv2(temp)) x = self.espcn1(x) x = self.espcn2(x) x = self.conv3(x) return x Experiment • Source Code 2019-05-24 28 class Generator(nn.Module): def __init__(self): super(Generator, self).__init__() self.conv1 = nn.Conv2d(3, 64, kernel_size=9, stride=1, padding=4) #TODO : for문을 이용하여 쌓는 방법 고려하기. self.block1 = Block_B(64) self.block2 = Block_B(64) self.block3 = Block_B(64) self.block4 = Block_B(64) self.block5 = Block_B(64) self.block6 = Block_B(64) self.block7 = Block_B(64) self.block8 = Block_B(64) self.block9 = Block_B(64) self.block10 = Block_B(64) self.block11 = Block_B(64) self.block12 = Block_B(64) self.block13 = Block_B(64) self.block14 = Block_B(64) self.block15 = Block_B(64) self.block16 = Block_B(64) self.conv2 = nn.Conv2d(64, 64, kernel_size=3, stride=1, padding=1) self.bn1 = nn.BatchNorm2d(64)
  • 29. def forward(self, x): x = F.leaky_relu(self.conv1(x), 0.2) x = F.leaky_relu(self.bn1(self.conv2(x)), 0.2) x = F.leaky_relu(self.bn2(self.conv3(x)), 0.2) x = F.leaky_relu(self.bn3(self.conv4(x)), 0.2) x = F.leaky_relu(self.bn4(self.conv5(x)), 0.2) x = F.leaky_relu(self.bn5(self.conv6(x)), 0.2) x = F.leaky_relu(self.bn6(self.conv7(x)), 0.2) x = F.leaky_relu(self.bn7(self.conv8(x)), 0.2) x = F.leaky_relu(self.conv9(self.flatten(x))) x = F.sigmoid(self.conv10(x)) return x Experiment • Source Code 2019-05-24 29 class Discriminator(nn.Module): def __init__(self): super(Discriminator, self).__init__() self.conv1 = nn.Conv2d(3, 64, kernel_size=3, padding=1) self.conv2 = nn.Conv2d(64, 64, kernel_size=3, stride=2, padding=1) self.bn1 = nn.BatchNorm2d(64) self.conv3 = nn.Conv2d(64, 128, kernel_size=3, padding=1) self.bn2 = nn.BatchNorm2d(128) self.conv4 = nn.Conv2d(128, 128, kernel_size=3, stride=2, padding=1) self.bn3 = nn.BatchNorm2d(128) self.conv5 = nn.Conv2d(128, 256, kernel_size=3, padding=1) self.bn4 = nn.BatchNorm2d(256) self.conv6 = nn.Conv2d(256, 256, kernel_size=3, stride=2, padding=1) self.bn5 = nn.BatchNorm2d(256) self.conv7 = nn.Conv2d(256, 512, kernel_size=3, padding=1) self.bn6 = nn.BatchNorm2d(512) self.conv8 = nn.Conv2d(512, 512, kernel_size=3, stride=2, padding=1) self.bn7 = nn.BatchNorm2d(512) #TODO: flatten 과정 확인 필요 self.flatten = nn.AdaptiveAvgPool2d(1) self.conv9 = nn.Conv2d(512, 1024, kernel_size=1) self.conv10 = nn.Conv2d(1024, 1, kernel_size=1)
  • 30. Experiment • Source Code 2019-05-24 30 class GeneratorLoss(nn.Module): def __init__(self): super(GeneratorLoss, self).__init__() vgg = vgg16(pretrained=True) loss_network = nn.Sequential(*list(vgg.features)[:31]).eval() for param in loss_network.parameters(): param.requires_grad = False self.loss_network = loss_network self.mse_loss = nn.MSELoss() def forward(self, out_labels, out_images, target_images): # Adversarial Loss adversarial_loss = torch.mean(1 - out_labels) # Perception Loss perception_loss = self.mse_loss(self.loss_network(out_images), self.loss_network(target_images)) # Image Loss image_loss = self.mse_loss(out_images, target_images) loss_network = nn.Sequential(*list(vgg.features)[:31]).eval() 파이썬 Asterisk(*) 의 역할 1. Positional arg 2. Keword arg 3. Unpacking # (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) # (1): ReLU(inplace) # (2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) # (3): ReLU(inplace) # (4): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), dilation=(1, 1), ceil_mode=False) # (5): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) # ... # ... # (30): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), dilation=(1, 1), ceil_mode=False) # ) Python Intermediate Seminar 예정
  • 31. Experiment • Dataset(Set-5, Set-14, Custom) 2019-05-24 31 …
  • 32. Experiment • Result#1 – Set5 2019-05-24 32 * 실험 결과는 미리 학습된 네트워크(ep:100, r:4)를 사용함. - https://github.com/leftthomas/SRGAN) a b c d e a : Bi-cubic b : SRCNN c : Kim d : SRGAN e : HR
  • 33.
  • 34.
  • 35.
  • 36. Experiment • Result#2 – Set5 2019-05-24 36 * 실험 결과는 미리 학습된 네트워크(ep:100, r:4)를 사용함. - https://github.com/leftthomas/SRGAN) a b c d e a : Bi-cubic b : SRCNN c : Kim d : SRGAN e : HR
  • 37.
  • 38.
  • 39.
  • 40. Experiment • Result#3 – Set5 2019-05-24 40 * 실험 결과는 미리 학습된 네트워크(ep:100, r:4)를 사용함. - https://github.com/leftthomas/SRGAN) a b c d e a : Bi-cubic b : SRCNN c : Kim d : SRGAN e : HR
  • 41.
  • 42.
  • 43. Experiment • Result#4 – Set14 2019-05-24 43 * 실험 결과는 미리 학습된 네트워크(ep:100, r:4)를 사용함. - https://github.com/leftthomas/SRGAN) a b c d e a : Bi-cubic b : SRCNN c : Kim d : SRGAN e : HR
  • 44.
  • 45.
  • 46.
  • 47. Experiment • Result#5 – Set14 2019-05-24 47 * 실험 결과는 미리 학습된 네트워크(ep:100, r:4)를 사용함. - https://github.com/leftthomas/SRGAN) a b c d e a : Bi-cubic b : SRCNN c : Kim d : SRGAN e : HR
  • 48.
  • 49.
  • 50. Experiment • Result#6 – Custom data 2019-05-24 50 * 실험 결과는 미리 학습된 네트워크(ep:100, r:4)를 사용함. - https://github.com/leftthomas/SRGAN) (240x180->960x720) (236x125->944x500) (137x137->548x548) (480x320->1920x1280)
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58. Experiment • Result#7 – Custom data(Video) 2019-05-24 58 * 실험 결과는 미리 학습된 네트워크(ep:100, r:4)를 사용함. - https://github.com/leftthomas/SRGAN)
  • 60. Summary 2019-05-24 60 • ResNet 구조와 GAN 구조를 SR에 적용하여 객관적 지표인 PSNR, SSIM를 일정 수준 확보하면서 주관적 지표인 MOS를 향상 시킴. • Content loss와 adversarial loss를 융합한 새로운 perceptual loss 를 제안함.
  • 61. Future work 2019-05-24 61 GAN Research Vanilla GAN DCGAN InfoGAN LSGAN SRGAN Development tools & Language Tips(Document & Programming) PyTorch C++ Coding Standard Mathematical Theory Linear algebra Probability & Information theory Other research Level Processor Ice Propagation Modern C++(C++14) Python(Intermediate) Python executable & UI Style Transfer cGAN wGAN BEGAN BigGAN Cycle GAN Style GAN DONETODO ?
  • 62. &