AnacondaとPython、kerasの環境ができたので、Githubのkerasのサンプルコードから、何となく面白そうなタイトルの「deep_dream.py」を、PCに構築したAnaconda環境で実行してみました。
JupyterNotebookでサンプルから拝借した.pyを実行できるのかしら?・・と試行錯誤してみましたが、なかなかエラーを回避できません。
JupyterNotebookからコマンドを実行するのはPathを意識してコードを書く必要があるのは、世の中の常識なのでしょうが、その辺の知識もDosコマンドだったら、あーだよね・・・だから、これでいいのかな?・・・あ、違うか・・・の、繰り返しで、ようやくJupyter Notebookのhomeディレクトリはc:\user\user である事を理解しました。こんな初歩的な事を説明してくれるネットの記事があるのかどうかわかりませんが、GUIに慣れすぎている自分としては、なかなかの手強さです。
homeディレクトリがここだとファイル管理がイマイチ気持ち悪いので、マイドキュメントの中に、「JupyterNotebook」というフォルダを作って、そのフォルダにこれから作るファイルを収納する事にしました。
JupyterNotebook から.pyを実行するのは、とりあえず後回しにして、サンプルサイトからDownloadした deep_dream.py を、作った JupyterNoteBookファイルフォルダ直下に配置し、スタートメニューからanacondaプロンプトを起動して、先のフォルダまで移動します。
(base) C:\Users\user>cd Documents\JupyterNoteBook
この状態で、サンプルコードに説明のあるとおり、pythonでサンプルと素材となる画像ファイルを指定、結果の配置を指定して、Enterで実行です。
(base) C:\Users\user\Documents\JupyterNoteBook>python deep_dream.py img/cat1.jpg results/dream_cat1
すると、TensorFlowを実行し、なにやら推奨メッセージ的な文言が何行か表示されたあと、画像生成が開始されます。
一番最初の画像を処理するときには、GithubからModeldataがローカルにダウンロードされて配置される様子がありましたが、2回目以降はその処理はスキップされて、画像生成処理のログがはじまります。
実行結果
pakutaso.comさんのロイヤリティフリー・加工OKの素材の子猫ちゃんを素材として与えた(左)ところ、AIが画像を解釈して、加工出力した画像が右です。
なんでしょうか、アライグマ的な印象が強くなったような、よく見ると背中付近に目のような模様がもやもやと見えます・・猫の背中も別生物として解釈したようで、薄気味の悪い雰囲気になってしまいました。
こちらで掲載はしませんが、自分の顔写真を素材にしたところ、StarWarsのチューバッカのような人間+動物みたいな画像になりました笑。Deep_dreamのAIは動物画像を多く認識するような学習を終えているAIなのかもしれません。
同じく、パクタソさんから拝借したシマウマやレッサーパンダを変換してみると 背景の幾何学的な模様にまで目をつけてくれます。無数の瞳のに見えるのは気のせいでしょうか・・・・ シマウマの縞模様は虹色に着色されたように見えます。
昔子供の頃にはまった、フラクタル画像のような紋様が出てくることから、マンデルブローやジュリア集合あたりの画像を素材にして与えるとどうなるのだろうか・・・と興味が沸いてきます。
感想
何種類かやってみましたが、背景を含め、目鼻立ちに見えそうな部分も持つ解像度がもう少し大きめな素材画像を与えると、より一層興味深い出力結果になる気がしています。 非力なノートPCでは処理が重いようで、 こちらに掲載している画像が出力されるまで1分~2分程度の時間が掛かりますが、画像が精細で複雑になると、より一層処理時間が必要になる様子です。
高性能なGPUが搭載されているPCだともっと高速に処理できるようですが、私の学習のレベルですと、まだまだこの程度でも十分です。
文字認識等のAIサンプルも実行してみましたが、deep_dream.pyのように、結果が画像ででるのは解りやすくて面白いです。
kerasのサンプルは他にもたくさんあるので、面白そうなものを探して、Pythonのコードを解析して、どのようなコードを書いてAIの処理を実現してるのか、理解していけたらとおもいます。
次回は画像認識のサンプルを探して、実行できるところまで挑戦してみます。