$30 off During Our Annual Pro Sale. View Details »

Super Resolution with CoreML (Long Version)

kenmaz
September 05, 2018

Super Resolution with CoreML (Long Version)

This is the slide presented at try! Swift NewYork 2018.
https://www.tryswift.co/events/2018/nyc/#coreml

The ‘Super Resolution' technique is used for converting low resolution images into high resolution, which reduces the amount of image data that needs to be transferred. In this talk, I'd like to show you the implementation of super resolution with CoreML and Swift, and compare the results with conventional methods. I’ll also talk about how to train your own model using your own data step by step. In addition, I’d like to introduce recent topics such as Turi Create, Swift for TensorFlow, CoreML2 and CreateML, which will be enhanced in iOS 12 and I’ll look at how iOS will take advantage of machine learning technology in the future.

kenmaz

September 05, 2018
Tweet

More Decks by kenmaz

Other Decks in Technology

Transcript

  1. Super Resolution with
    CoreML
    Kentaro Matsumae

    Mercari
    #tryswiftnyc
    Sep 5th 2018 try! Swift NYC

    View Slide

  2. +1 64 6,
    64

    View Slide

  3. .BOHB"QQ
    1SFWJPVTXPSL
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  4. .BOHB"QQ
    1SFWJPVTXPSL
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  5. .BOHB"QQ
    1SFWJPVTXPSL
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  6. 3FTPMVUJPOWT'JMF4J[F
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  7. Y Y
    3FTPMVUJPOWT'JMF4J[F
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  8. Y Y
    3FTPMVUJPOWT'JMF4J[F
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  9. Y Y
    3FTPMVUJPOWT'JMF4J[F
    ,# ,#
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  10. Y Y
    3FTPMVUJPOWT'JMF4J[F
    ,# ,#
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  11. 4VQFS3FTPMVUJPO
    -PX3FTPMVUJPO )JHI3FTPMVUJPO
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  12. $PSF.-

    View Slide

  13. 4VQFS3FTPMVUJPOXJUI$PSF.-
    4VQFS
    3FTPMVUJPO




    ,# Y
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  14. %FNP

    View Slide

  15. 4VQFS3FTPMVUJPO.FDIBOJTN

    View Slide

  16. *NBHF4VQFS3FTPMVUJPO6TJOH
    %FFQ$POWPMVUJPOBM/FUXPSLT
    $IBP%POHFUBM

    View Slide

  17. 43$//
    4VQFS3FTPMVUJPOVTJOH$POWPMVUJPOBM
    /FVSBM/FUXPSL

    View Slide

  18. 43$//
    4VQFS3FTPMVUJPOVTJOH$POWPMVUJPOBM
    /FVSBM/FUXPSL

    View Slide

  19. ,FSOFMBOE$POWPMVUJPO
    ,FSOFM
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  20. ,FSOFMBOE$POWPMVUJPO
    ,FSOFM
    *OQVU*NBHF
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  21. ,FSOFMBOE$POWPMVUJPO
    ,FSOFM
    *OQVU*NBHF
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  22. ,FSOFMBOE$POWPMVUJPO
    ,FSOFM
    *OQVU*NBHF 0VUQVU*NBHF
    $POWPMVUJPO
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  23. /FVSBM/FUXPSL
    *OQVU
    ʜ
    ʜ
    0VUQVU

    View Slide

  24. $POWPMVUJPOBM/FVSBM/FUXPSL $//

    *OQVU
    ʜ
    ʜ
    0VUQVU

    View Slide

  25. $POW-BZFS $POW-BZFS $POW-BZFS
    4VQFS3FTPMVUJPOXJUI$// 43$//

    ʜ
    ʜ
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  26. $POW-BZFS $POW-BZFS $POW-BZFS
    4VQFS3FTPMVUJPOXJUI$// 43$//

    ʜ
    ʜ
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  27. $POW-BZFS $POW-BZFS $POW-BZFS
    4VQFS3FTPMVUJPOXJUI$// 43$//

    ʜ
    ʜ
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO
    *OQVU
    -PX3FTPMVUJPO

    View Slide

  28. $POW-BZFS $POW-BZFS $POW-BZFS
    4VQFS3FTPMVUJPOXJUI$// 43$//

    ʜ
    ʜ
    ʜ
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO
    *OQVU
    -PX3FTPMVUJPO

    View Slide

  29. $POW-BZFS $POW-BZFS $POW-BZFS
    4VQFS3FTPMVUJPOXJUI$// 43$//

    ʜ
    ʜ
    ʜ
    ʜ
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO
    *OQVU
    -PX3FTPMVUJPO

    View Slide

  30. 0VUQVU
    )JHI3FTPMVUJPO
    $POW-BZFS $POW-BZFS $POW-BZFS
    4VQFS3FTPMVUJPOXJUI$// 43$//

    ʜ
    ʜ
    ʜ
    ʜ
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO
    *OQVU
    -PX3FTPMVUJPO

    View Slide

  31. 0VUQVU
    )JHI3FTPMVUJPO
    *NBHF
    $POW-BZFS $POW-BZFS $POW-BZFS
    4VQFS3FTPMVUJPOXJUI$// 43$//

    ʜ
    ʜ
    ʜ
    ʜ
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  32. 0VUQVU
    )JHI3FTPMVUJPO
    *NBHF
    $POW-BZFS $POW-BZFS $POW-BZFS
    4VQFS3FTPMVUJPOXJUI$// 43$//

    ʜ
    ʜ
    ʜ
    ʜ
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  33. 0VUQVU
    )JHI3FTPMVUJPO
    *NBHF
    $POW-BZFS $POW-BZFS $POW-BZFS
    4VQFS3FTPMVUJPOXJUI$// 43$//

    ʜ
    ʜ
    ʜ
    ʜ
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  34. 0VUQVU
    )JHI3FTPMVUJPO
    *NBHF
    $POW-BZFS $POW-BZFS $POW-BZFS
    4VQFS3FTPMVUJPOXJUI$// 43$//

    ʜ
    ʜ
    ʜ
    ʜ
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  35. 5SBJOJOH

    View Slide

  36. )BSEUPDPMMFDUUSBJOJOHEBUB

    View Slide

  37. &BTZUPDPMMFDUUSBJOJOHEBUBGPS43$//
    )3*NBHFT
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  38. &BTZUPDPMMFDUUSBJOJOHEBUBGPS43$//
    )3*NBHFT
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  39. &BTZUPDPMMFDUUSBJOJOHEBUBGPS43$//
    )3*NBHFT
    )31BUDIFT
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  40. &BTZUPDPMMFDUUSBJOJOHEBUBGPS43$//
    )3*NBHFT
    -31BUDIFT
    )31BUDIFT
    Y
    #JDVCJD
    *OUFSQPMBUJPO
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  41. 5SBJOJOH4FU
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  42. ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  43. 5SBJOJOH43$//
    )31BUDI
    -31BUDI
    *OQVU
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  44. 5SBJOJOH43$//
    0VUQVU )31BUDI
    -31BUDI
    *OQVU
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  45. 5SBJOJOH43$//
    0VUQVU
    -PTT
    'VODUJPO
    )31BUDI
    -31BUDI
    *OQVU
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  46. 5SBJOJOH43$//
    0VUQVU
    -PTT
    'VODUJPO
    -PTT
    )31BUDI
    -31BUDI
    *OQVU
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  47. 5SBJOJOH43$//
    0VUQVU
    -PTT
    'VODUJPO
    6QEBUFLFSOFMUPNJOJNJ[FMPTT
    -PTT
    )31BUDI
    -31BUDI
    *OQVU
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  48. 5SBJOJOH43$//
    0VUQVU
    -PTT
    'VODUJPO
    6QEBUFLFSOFMUPNJOJNJ[FMPTT
    )31BUDI
    -31BUDI
    *OQVU
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  49. ,FSOFM8FJHIU CFGPSFUSBJOJOH

    View Slide

  50. ,FSOFM8FJHIU BGUFSUSBJOJOH

    View Slide

  51. ,FSOFM8FJHIU BGUFSUSBJOJOH

    (BVTTJBO'JMUFS

    View Slide

  52. ,FSOFM8FJHIU BGUFSUSBJOJOH

    (BVTTJBO'JMUFS
    -BQMBDJBO'JMUFS
    -BQMBDJBOpMUFS

    View Slide

  53. ,FSOFM8FJHIU BGUFSUSBJOJOH

    (BVTTJBO'JMUFS
    -BQMBDJBO'JMUFS
    -BQMBDJBOpMUFS
    &EHF%FUFDUPS'JMUFS

    View Slide

  54. *NQMFNFOUBUJPO43$//

    View Slide

  55. 43$//.PEFM4USVDUVSF
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  56. 43$//.PEFM4USVDUVSF
    < > < >
    < > < > < >
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  57. 43$//.PEFM4USVDUVSF
    < > < >
    < > < > < >
    QBSBNFUFST
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  58. 5SBJOJOHDPEF
    ch = 1
    SRCNN = Sequential(input_shape=(200, 200, ch))
    SRCNN.add(Conv2D(128, 9, 9, activation='relu'))
    SRCNN.add(Conv2D(64, 3, 3, activation='relu'))
    SRCNN.add(Conv2D(ch, 5, 5, activation='linear'))
    adam = Adam(lr=0.0003)
    SRCNN.compile(optimizer=adam, loss='mean_squared_error')
    SRCNN.fit(..)
    SRCNN.save(model_dir, 'model.h5')

    View Slide

  59. $POWFSUUP$PSF.-.PEFM
    from coremltools.converters.keras import convert
    model = convert(‘model.h5’, …)
    model.save('SRCNN.mlmodel')
    SRCNN.mlmodel

    View Slide

  60. $PSF.-.PEFMpMFTJ[F
    SRCNN.mlmodel
    440 KB
    IUUQTEFWFMPQFSBQQMFDPNNBDIJOFMFBSOJOHCVJMESVONPEFMT

    .PCJMF/FU
    .#
    4RVFF[F/FU
    .#
    (PPH-F/FU1MBDFT
    .#
    3FTOFU
    .#
    *ODFQUJPO7
    .#
    7((
    .#

    View Slide

  61. &NCFE$PSF.-.PEFMJOUP"QQ

    View Slide

  62. &NCFE$PSF.-.PEFMJOUP"QQ
    let model = SRCNN()
    let highImage = try! model.predict(image: lowImage)

    View Slide

  63. .-.PEFM"DDVSBDZ
    *NQSPWFNFOU

    View Slide

  64. "DDFMFSBUJOHUIF4VQFS3FTPMVUJPO
    $POWPMVUJPOBM/FVSBM/FUXPSL
    $IBP%POHFUBM

    View Slide

  65. 'BTU4VQFS3FTPMVUJPOCZ$//
    '43$//

    View Slide

  66. %FNP

    View Slide

  67. '43$//QBSBNFUFST
    ʜ
    *OQVU
    -3*NBHF 0VUQVU
    )3*NBHF
    ʜ
    ʜ
    ʜ
    ʜ
    ʜ
    ʜ
    < >
    < >
    < >
    < >
    < >
    < >
    < >
    < >
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  68. 43$// QBSBNFUFST
    '43$//QBSBNFUFST
    ʜ
    *OQVU
    -3*NBHF 0VUQVU
    )3*NBHF
    ʜ
    ʜ
    ʜ
    ʜ
    ʜ
    ʜ
    < >
    < >
    < >
    < >
    < >
    < >
    < >
    < >
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  69. 43$// QBSBNFUFST
    '43$//QBSBNFUFST
    ʜ
    *OQVU
    -3*NBHF 0VUQVU
    )3*NBHF
    ʜ
    ʜ
    ʜ
    ʜ
    ʜ
    ʜ
    < >
    < >
    < >
    < >
    < >
    < >
    < >
    < >
    '43$// QBSBNFUFST
    ϒϥοΫδϟοΫʹΑΖ͘͠ ࠤ౻लๆ Give My Regards to Black Jack SHUHO SATO

    View Slide

  70. Performance
    #JDVCJD 43$// '43$//
    1SFEJDUJPO
    5JNFQBHF
    TFD TFD TFD
    5SBJOJOH
    5JNF
    IPVST IPVST
    .-.PEFM
    4J[F
    ,# ,#
    14/3 EC EC EC

    View Slide

  71. 3FDFOUHSFBUQBQFST
    1IPUP3FBMJTUJD4JOHMF*NBHF4VQFS3FTPMVUJPO6TJOHB(FOFSBUJWF
    "EWFSTBSJBM/FUXPSL
    $ISJTUJBO-FEJHFUBM
    3FBM5JNF4JOHMF*NBHFBOE7JEFP4VQFS3FTPMVUJPO6TJOHBO&⒏DJFOU4VC
    1JYFM$POWPMVUJPOBM/FVSBM/FUXPSL
    8FO[IF4IJFUBM
    "DDVSBUF*NBHF4VQFS3FTPMVUJPO6TJOH7FSZ%FFQ$POWPMVUJPOBM/FUXPSLT
    +JXPO,JNFUBM
    1JYFM3FDVSTJWF4VQFS3FTPMVUJPO
    3ZBO%BIMFUBM

    View Slide

  72. This is useful for any type of image.
    Not only manga.

    View Slide

  73. This is useful for any type of image.
    Not only manga.
    Give it a try!

    View Slide

  74. https://github.com/kenmaz/SuperResolutionKit

    View Slide

  75. Open Source
    https://github.com/kenmaz/SuperResolutionKit

    View Slide

  76. Easy to use
    let imageView: UIImageView = …
    let image: UIImage = …
    imageView.setSRImage(image) //Super Resolution⭐
    pod “SuperResolutionKit”

    View Slide

  77. SuperResolutionKit

    View Slide

  78. SuperResolutionKit
    •UIImageView extension

    View Slide

  79. SuperResolutionKit
    •UIImageView extension
    •SRConverter (UIImage to UIImage)

    View Slide

  80. SuperResolutionKit
    •UIImageView extension
    •SRConverter (UIImage to UIImage)
    •Include pre-trained model (FSRCNN, SRCNN)

    View Slide

  81. SuperResolutionKit
    •UIImageView extension
    •SRConverter (UIImage to UIImage)
    •Include pre-trained model (FSRCNN, SRCNN)
    •Include Python script to train your own model

    View Slide

  82. -JNJUBUJPO

    View Slide

  83. -JNJUBUJPO
    w1SFUSBJOFENPEFMQFSGPSNBODF

    View Slide

  84. -JNJUBUJPO
    w1SFUSBJOFENPEFMQFSGPSNBODF
    w2VBMJUZEFQFOETPOBUZQFTPGJNBHF

    View Slide

  85. )PXUPMFWFSBHF.-JO
    .PCJMF"QQEFWFMPQNFOU

    View Slide

  86. .PUJWBUJPOGPS.-JO.PCJMF"QQT

    View Slide

  87. .PUJWBUJPOGPS.-JO.PCJMF"QQT
    8IZOPUKVTUSVOBMMUIJTPOUIFTFSWFSTJEF
    #

    View Slide

  88. .PUJWBUJPOGPS.-JO.PCJMF"QQT
    w2VJDLSFTQPOTF
    8IZOPUKVTUSVOBMMUIJTPOUIFTFSWFSTJEF
    #

    View Slide

  89. .PUJWBUJPOGPS.-JO.PCJMF"QQT
    w2VJDLSFTQPOTF
    w0⒐JOFTVQQPSU
    8IZOPUKVTUSVOBMMUIJTPOUIFTFSWFSTJEF
    #

    View Slide

  90. .PUJWBUJPOGPS.-JO.PCJMF"QQT
    w2VJDLSFTQPOTF
    w0⒐JOFTVQQPSU
    w3FEVDJOHTFSWFSBOEOFUXPSLDPTU
    8IZOPUKVTUSVOBMMUIJTPOUIFTFSWFSTJEF
    #

    View Slide

  91. .PUJWBUJPOGPS.-JO.PCJMF"QQT
    w2VJDLSFTQPOTF
    w0⒐JOFTVQQPSU
    w3FEVDJOHTFSWFSBOEOFUXPSLDPTU
    w4FDVSJUZ
    8IZOPUKVTUSVOBMMUIJTPOUIFTFSWFSTJEF
    #

    View Slide

  92. $IPPTFUIFCFTUXBZ
    5FDIOPMPHZ (PBMT -FWFM
    7JTJPOGSBNFXPSL 'BDF5FYU%FUFDUJPO &BTZ
    $SFBUF.- $VTUPN*NBHF5FYU$MBTTJpDBUJPO &BTZ
    5VSJ$SFBUF $VTUPN0CKFDU%FUFDUJPO 4UZMF5SBOTGFS .JE
    $PSF.-
    :PVSPXONPEFM

    0UIFST $VUUJOHFEHFNFUIPET )BSE

    View Slide

  93. 4IPVME*MFBSO1ZUIPO

    View Slide

  94. 4IPVME*MFBSO1ZUIPO
    w:FT GPSOPX

    View Slide

  95. 4IPVME*MFBSO1ZUIPO
    w:FT GPSOPX

    w1ZUIPO /VN1Z ,FSBT 5FOTPS'MPXʜ

    View Slide

  96. 4IPVME*MFBSO1ZUIPO
    w:FT GPSOPX

    w1ZUIPO /VN1Z ,FSBT 5FOTPS'MPXʜ
    w1ZUIPOBMUFSOBUJWF

    View Slide

  97. 4IPVME*MFBSO1ZUIPO
    w:FT GPSOPX

    w1ZUIPO /VN1Z ,FSBT 5FOTPS'MPXʜ
    w1ZUIPOBMUFSOBUJWF
    w6TF1ZUIPO"1*TXJUI%ZOBNJD.FNCFS-PPLVQ

    View Slide

  98. from keras.models import Sequential
    from keras.layers import Conv2D
    from keras.optimizers import Adam
    ch = 1
    SRCNN = Sequential(input_shape=(200, 200, ch))
    SRCNN.add(Conv2D(128, 9, 9, activation='relu'))
    SRCNN.add(Conv2D(64, 3, 3, activation='relu'))
    SRCNN.add(Conv2D(ch, 5, 5, activation='linear'))
    adam = Adam(lr=0.0003)
    SRCNN.compile(optimizer=adam, loss='mean_squared_error')

    View Slide

  99. let Sequential = Python.import("keras.models.Sequential")
    let Conv2D = Python.import("keras.layers.Conv2D")
    let Adam = Python.import("keras.optimizers.Adam")
    let ch = 1
    let SRCNN = Sequential(input_shape: (200, 200, ch))
    SRCNN.add(Conv2D(128, (9, 9), activation: 'relu'))
    SRCNN.add(Conv2D(64, (3, 3), activation: 'relu'))
    SRCNN.add(Conv2D(ch, (5, 5), activation: 'linear'))
    let adam = Adam(lr: 0.0003)
    SRCNN.compile(optimizer: adam, loss: 'mean_squared_error')
    %ZOBNJD.FNCFS-PPLVQ

    View Slide

  100. 4IPVME*MFBSO1ZUIPO
    w:FT GPSOPX

    w1ZUIPO /VN1Z ,FSBT 5FOTPS'MPXʜ
    w1ZUIPOBMUFSOBUJWF
    w6TF1ZUIPO"1*TXJUI%ZOBNJD.FNCFS-PPLVQ

    View Slide

  101. 4IPVME*MFBSO1ZUIPO
    w:FT GPSOPX

    w1ZUIPO /VN1Z ,FSBT 5FOTPS'MPXʜ
    w1ZUIPOBMUFSOBUJWF
    w6TF1ZUIPO"1*TXJUI%ZOBNJD.FNCFS-PPLVQ
    w4XJGUGPS5FOTPS'MPX

    View Slide

  102. 3FDBQ
    w*NBHF4VQFS3FTPMVUJPOEFUBJMT
    w)PXUPJNQMFNFOU*NBHF4VQFS
    3FTPMVUJPOXJUI1ZUIPOBOE$PSF.-
    w4VQFS3FTPMVUJPO,JU 1MFBTFDPOUSJCVUF

    View Slide

  103. 5IBOL:PV
    Twitter / github @kenmaz
    https://github.com/kenmaz/SuperResolutionKit

    View Slide