Slide 1

Slide 1 text

AVILEN https://avilen.co.jp 株式会社AVILEN 三森馨 ディープラーニングによる画像⽣成 と特徴量合成によるモデルの統合

Slide 2

Slide 2 text

AVILEN ⾃⼰紹介 Pythonを使った Deep learning ⽣成モデルGAN pix2pix cGAN 今回の アーキテクチャ ソースコードと ⼯夫点 質問タイムと 宣伝 2 今⽇の流れ

Slide 3

Slide 3 text

AVILEN ⾃⼰紹介 Pythonを使った Deep learning ⽣成モデルGAN pix2pix cGAN 今回の アーキテクチャ ソースコードと ⼯夫点 質問タイムと 宣伝 3 今⽇の流れ

Slide 4

Slide 4 text

AVILEN 4 プロフィール 三森馨(みつもりかおる) Twitter: @kaorumitsumori 株式会社AVILEN データサイエンティスト 自然言語処理や画像処理の法人開発案件や コンサルティングに従事 鳥取県の山奥生まれ(幼少期の遊びは猿を水鉄砲で追いかけること) 神戸大医学部 新卒でウェブマーケターとしてキャリアをスタート 退職し、貿易せどりで起業するも破綻 ビットコインバブルでひと月で0円を400万円に増やす バブルが崩壊し、ひと月でそれを-200万円に減らす インド、デリーの広告代理店で法人営業に就くがクビで強制帰国 ヒモ(1年くらい) 職業訓練校を経てAIエンジニア

Slide 5

Slide 5 text

AVILEN ⾃⼰紹介 Pythonを使った Deep learning ⽣成モデルGAN pix2pix cGAN 今回の アーキテクチャ ソースコードと ⼯夫点 質問タイムと 宣伝 5 今⽇の流れ

Slide 6

Slide 6 text

6

Slide 7

Slide 7 text

7

Slide 8

Slide 8 text

8 # python def perceptron(x): y = a*x + b return y

Slide 9

Slide 9 text

9 # python def perceptron(x): y = a*x + b return y

Slide 10

Slide 10 text

出⼒ ⼊⼒ ものすごい複雑な計算 10

Slide 11

Slide 11 text

11 , . . = (, . . ) つまりDeep learningは(機械学習は)関数

Slide 12

Slide 12 text

AVILEN ⾃⼰紹介 Pythonを使った Deep learning ⽣成モデルGAN pix2pix cGAN 今回の アーキテクチャ ソースコードと ⼯夫点 質問タイムと 宣伝 12 今⽇の流れ

Slide 13

Slide 13 text

AVILEN 13 GAN(敵対的生成ネットワーク) 本物 Generator 偽物を⽣成 Discriminator 真偽を判別 どちらかが⼊⼒される

Slide 14

Slide 14 text

AVILEN 14 pix2pix 画像から新しい画像を⽣成 https://towardsdatascience.com/pix2pix-869c17900998

Slide 15

Slide 15 text

AVILEN 15 pix2pix https://arxiv.org/pdf/1611.07004.pdf

Slide 16

Slide 16 text

AVILEN 16 pix2pix https://arxiv.org/pdf/1611.07004.pdf

Slide 17

Slide 17 text

AVILEN 17 Conditional GAN ⼊⼒としてノイズとテキスト情報から画像を⽣成 https://medium.com/@ma.bagheri/a-tutorial-on-conditional-generative- adversarial-nets-keras-implementation-694dcafa6282

Slide 18

Slide 18 text

AVILEN 18 Conditional GAN 「9」から画像を⽣成している訓練中

Slide 19

Slide 19 text

AVILEN ⾃⼰紹介 Pythonを使った Deep learning ⽣成モデルGAN pix2pix cGAN 今回の アーキテクチャ ソースコードと ⼯夫点 質問タイムと 宣伝 19 今⽇の流れ

Slide 20

Slide 20 text

AVILEN 20 pix2pixとConditional GANの合成 ⽬的は、既存の画像から、 テキスト情報に沿った新規画像を⽣成すること 「かわいい」 「クール」

Slide 21

Slide 21 text

AVILEN 21 pix2pixとConditional GANの合成 Generator 偽物を⽣成 Discriminator 真偽を判別 カラー画像(真) テキスト情報 カラー画像(偽) ランダムな テキスト情報 ⽩⿊画像にする

Slide 22

Slide 22 text

AVILEN 22 特徴量の合成 Generator カラー画像(偽) ランダムな テキスト情報 テキスト情報 ⽩⿊画像 (真) cGAN pix2pix(Unet) Convert → → Revert

Slide 23

Slide 23 text

AVILEN ⾃⼰紹介 Pythonを使った Deep learning ⽣成モデルGAN pix2pix cGAN 今回の アーキテクチャ ソースコードと ⼯夫点 質問タイムと 宣伝 23 今⽇の流れ

Slide 24

Slide 24 text

AVILEN 24 Generatorのソースコード class Generator(nn.Module): def __init__(self, input_nc, output_nc, label_nc, latent_dim, ngf=64): super(Generator, self).__init__() # Define normalization layer norm_layer = functools.partial(nn.BatchNorm2d, affine=True, track_running_stats=True) # Define layer to combine label features self.label_comb = LabelCombiner(label_nc, latent_dim, (ngf * 8, 1, 1)) # Construct unet structure _net = UnetSkipConnectionBlock(ngf * 8, ngf * 8, submodule=self.label_comb, norm_layer=norm_layer, innermost=True) for i in range(3): _net = UnetSkipConnectionBlock(ngf * 8, ngf * 8, submodule=_net, norm_layer=norm_layer, use_dropout=True) _net = UnetSkipConnectionBlock(ngf * 4, ngf * 8, submodule=_net, norm_layer=norm_layer) _net = UnetSkipConnectionBlock(ngf * 2, ngf * 4, submodule=_net, norm_layer=norm_layer) _net = UnetSkipConnectionBlock(ngf, ngf * 2, submodule=_net, norm_layer=norm_layer) self.model = UnetSkipConnectionBlock(output_nc, ngf, input_nc=input_nc, submodule=_net, outermost=True, norm_layer=norm_layer) def forward(self, images, labels, noise): self.label_comb.set_labels(labels, noise) # Set labels before model forward return self.model(images) """ Args: input_nc (int) : the number of channels in input images output_nc (int) : the number of channels in output images label_nc (int) : the number of classes in labels latent_dim (int) : the number of noise dimensions ngf (int) : the number of filters in the last conv layer """ バッチの均一化 ラベルとランダム情報を加工 3つをインプットして動かすだけ 一番大事。特徴量同⼠が合成

Slide 25

Slide 25 text

AVILEN 25 工夫したこと DataParallel 初期の学習に50時間くらいかかりそうだったので、GPU並列化 結果、6-7時間くらいになった 平均絶対誤差でGeneratorの学習を助ける Generatorの学習は難しい。学習にヒントを与えた ⽣成画像のラベルを本物と⽐較する 画像→テキストのモデルを使い、Generator単独での損失を計算

Slide 26

Slide 26 text

AVILEN ⾃⼰紹介 Pythonを使った Deep learning ⽣成モデルGAN pix2pix cGAN 今回の アーキテクチャ ソースコードと ⼯夫点 質問タイムと 宣伝 26 今⽇の流れ

Slide 27

Slide 27 text

AVILEN 筑波大学大学院システム情報工学研究科知能機能 システム専攻博士前期過程修了。日本統計学会ス ポーツデータ分析コンペティション優秀賞受賞や 各種学会にて発表。AI・Web・インフラと幅広く エンジニアチームをリード。 東京大学工学部を卒業。図面読取AI・書類OCRシ ステムなどメイン開発プロジェクトをリードして きた。世界最弱のオセロAIを開発し、多くのメデ ィアにて紹介されている。 東京工業大学大学院知能情報コース修了。日本語 文書データ・画像データ・医薬データを対象にし たデータ分析・AIモデルの開発・コンサルティン グ経験が豊富。 東京大学生物情報科学にてビッグデータの解析や 生物学における理論のシミュレーション、モデリ ングなどにも精通。東京大学理科二類最高点合格、 日本生物学オリンピック金賞・本選一位、合成生 物学の世界大会iGEM金賞などの受賞歴を持つ。 東京大学大学院では機械学習の研究を行っていた。 金融・製造・製薬などの業界を中心に、人工知能 のビジネス適応を推進し、様々なプロジェクトで コンサルティング・開発に従事。日本ディープラ ーニング協会産業促進委員を務める。 千葉大学大学院デザインコース修了。セールス、 プロダクトデザイン・UI/UXデザイン・映像制 作・WEBサービスの開発ディレクション等の領域 を手がける。 AVILENが関わる全領域のブランデ ィングおよびデザイン制作の責任者を務める。 27 取締役 データサイエンティス ト 高橋 光太郎 代表取締役 データサイエンティス ト 崔一鳴 取締役 ITスペシャリスト 大川 遥平 取締役 ブランド責任者 高橋 香輝 CTO データサイエンティスト 吉田 拓真 執行役員 データサイエンティスト 吉川武文 AVILEN

Slide 28

Slide 28 text

AVILEN 28 お知らせ 最短突破 ディープラーニングG検定問題集 本を発売しました。 抽選でお1⼈さまにプレゼントします。

Slide 29

Slide 29 text

AVILEN 29 抽選方法 @AVILEN_AI_Trend @kaorumitsumori

Slide 30

Slide 30 text

AVILEN 30 よくあるご質問 なんでインドにいったのか︖ マイナーな選択肢で英語圏だったから なんでPythonを始めたのか︖ クビを経験して、⼿に職がないなら不遇に⽢んじるしか ないと思ったから ⽂系でもプログラミングや 機械学習はできるか︖ できます。 未経験でも︖ できます。コミュ⼒と⾃⾛⼒があると感じさせれば 「未経験 三森 データサイエンティスト」でぐぐ るとぼくの就活体験記がでてくるのでご参考まで 初学者にオススメの本 「東京⼤学のデータサイエンティスト育成講座」 初学からどのくらい勉強が必要︖ 最低600時間くらい 抽選項⽬ @AVILEN_AI_Trend @kaorumitsumori https://forms.gle/RnWL8mywHCfiowKLA 独学︖スクール︖ スクールの⽅が良い派です。ただ公共機関以外 の無料スクールは微妙な気がします。サービス 提供者と受益者間でのインセンティブがずれて いるので