コードノートスマートフォン用の表示で見るコードノートコードノートはwebを中心にテクノロジー・クリエイティブを伝えるWebメディアです。コードリンク代表、片岡亮が執筆しています。Colaboratoryで学ぶ、ディープラーニングのDCGANによる教師無し画像生成AI以前、こちらの記事に書いたようにディープラーニングについて専門家でもない僕がゆるく非IT系な方向けに話す、という勉強会をしたのですが、まさかの第2回も開催したのでその内容も公開することにします。blog.codelink.co.jp前回は、単にどんなディープラーニングの技術が実際にあるかをまとめて紹介するだけだったのですが、今回は実践編として既存のディープラーニングプログラムを動かす、ということをしました。サンプルコードをgithubからコピーして動かすだけとはいえ、数年前だったら環境構築で全員挫折していただろうに、今は学習環境が整っていて素敵ですね。概要の説明なども含め、1~2時間ほどで一応みなさん実行できました。networks)前回の記事にも書いてますが、以下のようにAIが入力した画像を学習し、オリジナルの画像を生成するよ!という技術です。詳細な説明記事はweb上にたぶん100万記事ぐらいあります。概略だけ言えば、ジェネレーター(画像の生成器)とディスクリミネータ(画像の識別器)という2つのモデルを作成し、ジェネレーターは本物っぽい偽画像を作り、ディスクリミネータはそれが偽物かどうか見抜く、というバトルを繰り替えす中でお互い成長し、最終的にまるで本物のような画像が作れるという、青春バトルものマンガのようなAIです。公式の実装を使って、最大解像度を512x512pxに下げて学習しています。学習途中(50%ぐらい)ですが、以前のPGGANよりさらにリアルになっているように思います。2019本来的な学習ステップとしていきなりGANをやるのは、行程をすっ飛ばしまくっていますが、仕事でもないしおもろいことやらないとみんな眠いよね!というチョイスでした。上記の例はGANの中でも、styleGANという新しめな技術でさらにその中でも学習がうまくいったものを公開しているように見受けられます。今回は、styleGANでなく最初期に公開されたDCGANという、GANを作るチュートリアルの時にはほぼこれが出てくるってやつを使いました。モデル構造もシンプルなので理解しやすいですが、その分そんなにはうまく画像は生成されません。僕がポケモンやドラクエのモンスターを数時間学習させたものでもこんなもんです。GANで新たなポケモンを生み出したかった夢の後。2019手書き文字ぐらいのシンプルなものなら、割と良い具合に。論文自体は2015年11月に公開され、使ってみました!みたいな記事も一番出てきますね。APIとして公開されているGANもDCGANによるものが、現状まだ多い気がします。arxiv.org実装されたコードはこちらのものを利用しました。github.comTensorFlowで書かれたもので、今ではkerasやchainer、PyTorchといったより手軽にコードを書けるディープラーニング用のライブラリ製のものもたくさんgithub等で公開されていますが、このTensorFlow製のものがオプションも豊富で使いやすかったため採用しました。Python2で書かれているので、実行環境がPython3だとそのまま使えないのだけが詰まりどころでしょうか。model.pyを見ればジェネレーターもディスクリミネータも、畳み込み層を4層入れてるだけなんだなぁとか、ぼんやりはわかって面白いです。必要な事前準備GANの学習のためには、事前に「AI君、キミはこれらの画像を元に、新しい画像を作ってね!」という画像の準備が必要です。最低でも100枚ほど、精度を上げるためには数千枚あった方が良いです。(Photoshopのバッチ処理で画像加工時などについてしまうケースもあります。)・zipに圧縮(フォルダごと圧縮でなく、画像をすべて選択の上、圧縮してください。サブディレクトリが発生しないように。unzip時にオプションで解決しても良いけど)この準備が手間ですが、ディープラーニングはデータ集めが大事っていうのはこういうことなのだなぁというぷち体験ができます。勉強会では、インターネットの大海に転がっていたポケモンの画像一覧などを共有しましたが、さすがに公に2次配布するのは色々よろしくなさそうなので、ここでは控えておきます。データセット」などでググれば商用で無ければ自由に使える画像データも多く手に入るはずです。できれば100万円ぐらい)を購入する必要がある、という準備が必要で詰みます。機械学習の学習環境が作れる??マジかよGoogle最高すぎでは???と界隈ではかなり話題となっていました。ブラウザ経由でクラウド上にあるGoogleのPCを使うイメージなので、windowsの方でもmacと同様に使うことができます。無料な分、12時間ごとに全データの削除がかかるといった制限はあるのですが、勉強に使うだけであれば十分ですね。Colab上に記載したコマンドはノートブックとして共有も可能で、チュートリアル的なものを作成するのも容易です。今回は、この機能を使ってみなさんにポチポチと実行してもらいました。書籍では、こちらの本がディープラーニングの各種プログラムを実行するためのColabノートブックをたくさん制作されていて良かったです。Amazon巷で話題の技術書典で販売されていたものを書籍版として加筆したもののようですね。DCGANを実践するためのGoogleColabノートブックというわけで、僕が作成したDCGANを実行するためのノートブックを公開しておきます。colab.research.google.com上記ファイルを開き、画面左上の「PLAYGROUNDで開く」をクリックすれば、ご自身のColab環境で学習をすることができます。この内容も、下記記事を参考にしたものであり、僕が作ったと言えるものではありません。追加で生成結果画像をGifアニメ化するコードを追加してあるぐらいです。感謝の念を遠隔で送ってから使いましょう。基本は、このファイル内にある各コマンドにカーソルを合わせると出てくる再生ボタン(「▼」を横にしたようなボタン)を押していけば、実行できるようになっています。コマンドを編集した後であれば、Shift+Enterで実行。書き換えが必要な部分は捕捉コメントを書いてあるので、それに沿って変更し実行してください。プログラムをしたことが無い方はどこかしらでエラーが出て詰まります。勉強会でも基本的にほぼそのサポートをするのがメインでしたが、エラーの内容を見て適宜「ls」コマンドでファイルの存在を確認したり、「pwd」コマンドで自分が今いるフォルダを確認しながら、実行していってください。コマンドならなんとなく知っているよ、という人であれば余裕だと思います。画像枚数が少なく学習回数が少ないと、結果を出力するまでのポイントに届かず、結果を出す前に学習が終わっている可能性があります。学習を実行するコマンドを下記のように書き換え、学習回数増加と、画像を出力する頻度減をしてみてください。--crop--epochが学習回数。(サンプルだと25になってる)--sample_freqが結果画像を出力する頻度。(デフォルトだと200になってる)Q.もっと長く学習させて良い結果を作りたいです。A.学習を開始するコマンド内の「--epoch=25」を「--epoch=10000」などに書き換えて実行すればokです。(これで1万回学習を実行)ただ、たくさん学習する際にはいくつか補足が必要なので解説します。1.Colabの時間制限問題GoogleColabは無料で使えるのですが、その代わり12時間ごとにデータがすべて削除されるという制限があります。そのため、学習は最高でも数万回程度が限度かと思います。(画像の枚数で前後)また画像の枚数が数百枚程度だと、epoch3000回程度であまり画像が代わり映えしなくなってきます。通称「過学習」2.ブラウザ開きっぱなしが必要問題GoogleColabは12時間がリセットかかるのと合わせ、1時間半画面を開いてなくてもリセットがかかるという制限があります。画面を開いていたとしても、別のタブを開いていたり、ブラウザ以外のアプリを見ていても10分ほどでセッションが切れる(キミ、画面もう見てないよねという判定)がされます。長時間学習する際には、Colabの画面を開いたまま他の作業はせず放置する必要があります。その間PCがスリープモードになってもダメなので、PCの設定を変えPCを放置してもスリープしない設定に変更してください。基本的には、学習が完了するまで結果の画像を確認するコマンドを実行することができません。何時間も学習を持つのも寂しいので、途中で都度結果を確認する方法があります。(放置したまま12時間経ってしまって、データ消えちゃうとより寂しい。)それは、学習しているタブとは別に、もう一つ別タブでGoogleClabを開き、そこでコマンドを実行するという方法です。これなら、学習を進める処理と平行して、都度学習した結果を確認できます。そのためのノートブックも公開してあるので、ご利用ください。長時間、学習をさせているとブラウザがメモリを大量に消費しブラウザが落ちるという問題を確認しています。(Windowsだとブラウザが固まる、macだと「PCの容量が足りません」的なメッセージが出る。0.00110264みたいな表示が溜まると、起きてしまう問題のようです。そのため、元のプログラムからこのログ表示をしないように変更したファイルをアップしたので、そちらに上書きを行い実行してみてください。(print文をコメントアウトしただけのgithubに公開するまでもないものをdropboxで共有しているものなので、そのうち消してしまっているかもしれません。)この処理は、先ほど貼ったColabノートブックの「KTP-学習中に平行して実行結果を確認する用.ipynb」の一番最後、「modelファイル上書き」という部分に記載してあります。Colaboratoryで学ぶ、Pythonによる画像加工&DCGAN非ITな人向けディープラーニング勉強会を、第3回目も実施したの...2019-06-18AI・ディープラーニングついて話した内容をまとめておくこんにちは。先日なぜか、主に非ITな方々に向けてディ...2017-04-18人工知能で遊ぶ。流行りに乗って趣味:人工知能やってます。シンギュラリティはい...2017-02-04イケてるwebデザインの違いとは何か。ユミソラIllustrator基礎講座のススメ3年前にお世話になった、ユミソラ先生のIllustrator講座の感想...更新情報をLINE@でお届け中!連絡もこちらからどうぞ。»プロフィールコードリンク代表。1989年1月29日千葉県産まれ。高校在学中からweb業界で働き始めており、メディア運営・ディレクションの傍ら自らプログラミング・デザインも行う。2015年からフリーランス。(5)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。