技育CAMPの初めてのハッカソン~vol.3~に参加した記事です。
開発したもの
アップロードされた画像を北斎風に変換して出力するwebアプリです。僕にとっては初めてのwebアプリ開発でした。
URL:https://github.com/koouu/fakeHokusai
チームメンバー
学校の同級生と2人で出場しました。
役割
僕 :画像変換、バックエンド
N君 :フロントエンド
変換モデル
Googleのcolabで、画像変換の機械学習を行っていました。UGATITというcycleGANの応用したものを使いました。形状の変化に強くて、人間をアニメ風に変換したとかが有名です。全結合層にAttentionを使ってるみたいです。
また記事にまとめるかも。
※GANとは
偽物作るAI作る時偽物かどうか分別するAIも一緒に学習すれば上手な偽物作れるようになるよねって感じ
※cycleGANとは
本物に戻せる偽物作れるように学習すれば元画像の特徴残せるよねって感じ
論文
U-GAT-IT: UNSUPERVISED GENERATIVE ATTENTIONAL NETWORKS WITH ADAPTIVE LAYERINSTANCE NORMALIZATION FOR IMAGE-TO-IMAGE
TRANSLATION
https://arxiv.org/pdf/1907.10830.pdf
バックエンド
pythonのflaskを使いました。flask使うのは初めてだったけど、シンプルで使いやすかったです。
フロントエンド
htmlを使いました。ほんとはJS使いたかったけど、Pythonとうまくデータのやりとりができなかったので断念。
大変だったこと
UGATITの学習モデルのサイズが1G超えてて、ローカルだと、cuda out of memoryがでて動きませんでした。結局風景を北斎風にする以外の部分全部削って動きました。gitからダウンロードできるモデルもその状態になってます。
あとシンプルにwebアプリ開発初めてだったんで難しかったです。
今後
ローカルでしか実装できなかったんで今度は公開できるように頑張ります。
後発表終わった後に二枚目以降の画像の変換の出力が全部1枚目の画像を変換したものになっていることがわかりました。原因がわからないからもうちょっと勉強します...
追記 (21/7/6)
二枚目以降の画像の変換の出力が一枚目と変わらないのはhtmlのキャッシュが原因でした。
cpuのモデルに変換しgpuがなくても動くようになりました。
まとめ
楽しかった!