GANによる全人類マッチョ化計画
2019年夏に九工大で開講されたAIセミナー(授業)にて,ディープラーニングを使った成果物を発表する必要があり,何する? → マッチョになりたい!!!と自分が言いだしたことから始まった何かです😊エビデンスは残っていませんが(口答だったので),最優秀賞を頂きました.
AIセミナーにて,ディープラーニングを使った成果物を発表しなければいけなかったので,筋肉好きな自分がマッチョになりたい!!!と言い出したことから始まった何かについて😊
ちなみに,お願いマッスル〜💪
めっ〜ちゃモテた〜いのやつは,この発表当時ぐらいにちょうど放送されてました笑
あと,これらはすべてチーム(4人)で行いました💪💪💪💪
表向きのモチベーションはこんな感じだと思います.実際,自分が調べた中ではマッチョになれるアプリなどは存在せず(子供っぽくなったり,性別変換等のアプリはある),できるのかどうか気になったのでディープラーニングでやってみようという形になりました.この発表では特に,深層生成モデルであるGANを使ってこれを実現しようと試みました.
想定した状況は,(入力) 一般人画像 ===> (出力) 一般人がマッチョになった画像が出てくる感じです.使用したのはCycleGANです.
CycleGANはスタイル転写ができます.具体的な例として,CycleGANの公式GitHubでは馬 <=> しまうまや夏 <=> 冬のように画像の輪郭を保持したまま輪郭内のテクスチャ等を変更させる(スタイル変換)ことでこれら双方向の変化を実現させることができています(凄い!).このことを利用して,一般人の体をムキムキにしようと考えました.
一般に機械学習で使う画像は調達するのが大変ですが,今回使う一般人画像は何でも良くて,マッチョ画像の方が集めるのが困難になると考えていました.しかし,マッチョは基本的に自分の体を見せるのが好きなので,検索すれば沢山出てきます.しかも,ボディビルなどの大会などで取られた写真など,写真の中に1人しかでてこないことが多いのでかなり良質な画像が手に入りやすいことがわかりました笑
データはGoogle等からスクレイピングする形で収集しました.Pythonのライブラリが存在しており,たったこれだけ書くだけで良いなんて凄い楽ちんでした.
CycleGANとマッチョデータを使った実験結果は,こんな感じになりました.
左が一般人画像,右が左の一般人をマッチョ化した後の結果です.人の形を保てているもののマッチョというよりは服が脱げただけ・・・?になっていることがわかります(顔も肌色になっていて怖い).これらの実験から分かることは,一般人画像とマッチョ画像をCycleGANに突っ込んでいるだけなので,人は上手く認識できているものの,すべてをマッチョ化(残念ながら,期待していたムキムキにはなってませんが)してしまっている事がわかります.つまり,ムキムキにしたい部分だけ指定する必要がある(顔などはムキムキ後でも元画像のままで良い)ことがわかりました.また,CycleGANは元画像の輪郭はそのまま使うので,マッチョのようなムキッっという筋肉のボコボコ感が一般人の輪郭のままだと出すことができないのではと考えました.つまり,どれだけCycleGANで上手くスタイル変換できたとしてもムキムキ感が出せないという問題に直面していることが分かりました.
そこで,これらCycleGANの欠点を改良したモデルがないか調査した所,2019年(最新!)論文でこれらの欠点を克服できるかもしれないモデルを見つけました.その名もInstaGANです.
このモデルはCycleGANよりができない輪郭の形状を変形させることができます.また,学習させたい部分を指定して学習することもできるGANになっています.↑では,スカートをズボンにしたり(形状が自然にちゃんと変化している!),ズボンをスカートに(足の部分がちゃんと肌色になってる!)することができてます.よって,自分たちの状況ではマッチョ化させる場所を体の首下から腰まで(上半身)に限定することでマッチョになれるのではないかと考えました.そこで,まずはタスクを簡単化するために,上半身だけでできるかどうか試しました.
ただし,InstaGANの原著論文では学習させる部分(スカートやズボン)などが切り抜かれたデータ(マスクデータ)を膨大な量学習で使っている反面,自分たちの班ではこれらのデータセットをすべて自作する必要がありました.
マスク画像は左の元画像から欲しいマスク部分を右画像のように準備する必要があります.これらはすべて人力で行います😭
作業の途中から,セグメンテーション(白抜き)するアプリケーションをGitHubで見つけて効率化を行ったものの発表までの時間が足りず,結果,一般人データは48枚分,マッチョデータは148枚分しか作ることができませんでした.
InstaGANを用いた結果はこんな感じになりました.左が一般人画像で,右がマッチョ化した画像です.全くといっていいほど学習できていないことが分かります.InstaGANが自分たちの環境でなかなか動かなかったこと,画像が全くと行っていいほど足りなかったこと,学習時間も足りていなかったこと・・・など沢山理由があり,無念といった結果になりました.
まとめはこんな感じで,結果的にCycleGANでもInstaGANでもマッチョになることができませんでした.しかし,もう少し環境を整えればInstaGANでどうにかマッチョ化できそうな気がするのでまたチャレンジしたいと思います.
余談ですが,結果は残せなかったものAIセミナーの最優秀賞(口答でしたが)を頂けました笑.おそらく,CycleGANで問題が見つかった流れから,最新論文をサーベイして改善されたモデルを使って実験を行った点が評価されたんだと自分は思っています.
最後に,機械学習でただ遊んでみるのも楽しいことが分かりました笑.普段は研究である意味固い感じで取り組んでいるので,またこんなラフな感じで遊びたいと思いました.
以上💪('ω'💪)