DeepStyleとUbuntuで独自のニューラルペインティングを作成する
ニューラルネットワークは多くのことを行うことができます。彼らは画像を解釈し、私たちの声を理解し、会話を翻訳することができます。しかし、彼らがペイントもできることを知っていましたか?
最近の研究論文(「芸術的なスタイルのニューラルアルゴリズム」というタイトル)は、いくつかの印象的な視覚的な例を使用して、オンラインディスカッションの急増を開始しました。基本的に、この論文では、深いニューラルネットワークをトレーニングして、芸術的なスタイルを画像構造から分離し、ある画像のスタイルを別の画像の構造と組み合わせる手法について説明します。これらすべての結果として、巨大なニューラルネットワークをトレーニングして、写真を有名な芸術家が描いたように見える「ニューラルペインティング」、いわば「デジタル偽造品」に変えることができます。
これが記事からのいくつかの例です。最初の画像はオリジナルです。後の画像は生成された結果であり、スタイルがサンプリングされた絵画がミニチュアで表示されています。
残念ながら、元の研究者はコードをリリースしていません。ただし、一部の勇敢なプログラマーは過去数日間に結果を複製しており、そのコードはインターネット上でオープンソースで入手できます。実行するために必要なのは、Linuxマシンと少しの忍耐だけです。
今日は、その方法を説明し、私自身の結果のいくつかを紹介します。これは、DeepDreamチュートリアルの緩い続編と考えることができます。少し複雑ですが、Linuxマシンを持っている人なら誰でも従うことができ、コーディングの経験は必要ありません。
まず、急いでいない場合やLinuxマシンを持っていない場合でも、DeepForger Twitterボットを使用してDeepStyleで遊ぶことができます(画像とスタイルを送信すると、最終的に結果が返されます。欲しいです)。より多くの画像をすばやく処理したい(そして結果をより細かく制御したい)場合は、チュートリアルを読んでください。
まず、 Ubuntuの最新のコピーがあることを確認してください (14.04は私が使用したものです)。少なくとも数ギガのハードドライブスペースが必要です。詳細については、Windowsと一緒にUbuntuをデュアルブートするチュートリアルをご覧ください。ルート権限も必要になるため、続行する前に必ずルート権限を取得してください。
すぐに、これはオープンソースプロジェクトなので、 Gitが必要になります。 インストールされています。 Gitは、バージョン管理ソフトウェアのゴールドスタンダードです。知っておく価値のあるほとんどすべてのオープンソースプロジェクトはGithubでホストされています。
Gitをダウンロードしてインストールするには、ターミナルを開いて「
」と入力するだけです。sudo apt-get install git
"そしてインストーラーの要求に同意します。
次へ:いくつかの基本的なツールを設定する ソフトウェアを機能させるために必要です。
まず、Luaをインストールします。これはツールが書かれている言語です。とてもシンプルです。 「
」と入力するだけですsudo apt-get install lua5.2
"そしてインストールプロセスに従います。
次に、Luarocksを取得します。これは、他のツールのインストールを簡単にするツールです(Linuxが好きではありませんか?)。これには、「
」と入力しますsudo apt-get install luarocks
"そしてインストール手順に従います。
第三に、Luajitをインストールします。これは、Luaのジャストインタイムコンパイラであり、私たちの生活を少しシンプルにします。 「
」と入力するだけですsudo apt-get install luajit
。"
これまでのところ良いです。
次に、アプリケーションのバックボーンを構成する科学計算および機械学習フレームワークであるTorchをインストールします。残念ながら、これはapt-get(標準のUbuntuパッケージマネージャー)を使用してインストールすることはできません。
幸いなことに、コマンドラインの魔法を使用する1行のインストーラーがあります。ターミナルに戻り、「
」と入力しますcurl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-all | bash
"。
完了したら、「
」と入力しますluajit -ltorch
"。これにより、トーチインターフェイスが表示され、すべてが正しくインストールされたことを確認します。
終了します。
次に、 loadcaffeをインストールします -ニューラルネットワーク固有のパッケージ。 「
」と入力して、唯一の依存関係をインストールしますsudo apt-get install libprotobuf-dev protobuf-compiler
"。次に、"
を使用してパッケージ自体をインストールできます。sudo luarocks install loadcaffe"
。
最後に、すべてがスムーズに進むようにするために、いくつかのものを先制的に更新します。
「
」と入力しますsudo luarocks install image
「」を使用して、画像パッケージが最新であることを確認します。次に、「
」と入力します。luarocks install nn
「これは、「nn」パッケージでも同じことを行います。
大丈夫!この時点で、ソフトウェア自体を実際にインストールする準備が整いました。クリーンにするために、ホームディレクトリ('mkdir DeepStyle')に新しいフォルダを作成します。次に、「
」を使用して入力しますcd Deepstyle
"。ここで「
」と入力しますsudo git clone https://github.com/jcjohnson/neural-style.git".
次に、モデルをダウンロードする必要があります。一杯のコーヒーか何かを作ってください、これはしばらく時間がかかります。ターミナルに戻り、「
」と入力しますsudo sh models/download_models.sh
"。これにより、長くて手の込んだダウンロードプロセスが開始されます。アクセス許可エラーが原因で失敗した場合は、chmodを使用して、関連するフォルダーに対する読み取り/書き込みアクセス許可を自分に与えてみてください。
さて、私たちは行ってもいいです。ソフトウェアの使用は非常に簡単です。
DeepStyle/neural-styleディレクトリにいることを確認してください ターミナルで。次に、作業するためにいくつかの画像が必要になります。それらをインターネット(またはその他)からダウンロードしてから、 DeepStyle/neural-styleフォルダーにコピーします。 ファイルブラウザを使用します。
これで、コマンドラインを使用して個々の画像を処理できます。形式は非常に単純です:
th neural_style.lua -style_image YOURPAINTINGHERE.jpg - content_image YOURPHOTOHERE.jpg -gpu -1
(明らかに、すべて大文字のチャンクをファイルの名前に置き換える必要があります。)
これでニューラルネットワークが開始されます。それは約1時間実行され、完了するまで数分ごとに新しい部分的に収束した画像を吐き出します。
-gpu -1
フラグは、GPUへのアクセスを停止します。
数時間試した後(そしてオペレーティングシステムを数回ブリックした後)、UbuntuとCUDAをGPU(NVIDIA GTX 970)でうまく動作させることができませんでした。運が良ければ、CUDAとcudann.torchをインストールすることをお勧めします(詳細については、githubリポジトリを参照してください)。そうでない場合は、それで問題ありません。CPUを使用しても機能します。少し遅くなります。
これらすべてを機能させる上で問題が発生した場合は、コメントで質問してください。できる限りサポートさせていただきます。
これが私が過去数日間に生成したいくつかの画像です。結果はまちまちですが、それらの多くはかなり印象的です。
フル解像度については、ここをクリックしてください。
これは、イエローストーンへのハイキング旅行中の私の友人ザックのものです。スタイルはテレサ・パデンによって作成された抽象絵画から来ています。構造のない画像を使ってシステムがどうなるのか気になりました。結果はかなりきれいで、スタイル画像との類似点をはっきりと見ることができます。
フル解像度については、ここをクリックしてください。
これは、私のお気に入りの芸術家の1人であるチャールズデムスの好意によるものです(「新しい教会の香」と「金の図5」を参照)。興味深いことに、スタイル画像からわかるように、DemuthはTeamFortress2のアートの主要な視覚的インスピレーションの1つです。
ウィキメディアで見つけたジャージーシティの画像をフィードしました。結果は...かなり良いです。デムスのスタイルの角度には気づきませんでしたが、柔らかく質感のある外観とカラーパレットには確かに気づきました。
フル解像度については、ここをクリックしてください。
これは、私が見つけたいくつかの花のかなりありふれた写真を使用して、合成オキーフを生成する試みです。結果は、率直に言って、壮観です。審美的に、これは私のお気に入りの結果の1つです。オキーフの色と形の豊かさがはっきりと伝わってきます。花びらの層状のエッジは、背景の葉のエッジになります。花自体が溶けて色になり、ほぼ抽象的になります。
人間がやったらいい絵になるでしょう。このバージョンの高解像度バージョンをレンダリングしてフレーム化するのに数日を費やしたくなります。
フル解像度については、ここをクリックしてください。
ピカソのプリントで、ハロウィンコスチュームを着た友達のシャノンです。興味深いことに、デバイスは彼女の顔の下部を白く塗ることを選択しました(ピカソの作品のカラーレイアウトに似ています)。これが偶然かどうかはわかりませんが、結果は目を見張るものがあります。また、左側のシャノンの髪の毛を正しく識別し、スタイル画像の髪の毛の色と線画を使用して再描画したようです。彼女の帽子も同じです。
これは、テクニックの限界が明らかになり始めた部分の1つです。ピカソが実際にシャノンを描いていたとしたら、彼は彼女の顔の構造を捨てて、彼が望む効果を達成するために特徴を歪めていただろう。このシステムは、このような高レベルの概念を理解しておらず、暗い、角のある線やカラーパレットなど、スタイルの表面的な側面のみを模倣することができます。
フル解像度については、ここをクリックしてください。
かなりわかりやすい:エッフェル塔とゴッホのその他の写真 星が輝く夜。元の画像に雲がないにもかかわらず、ゴッホアイスタイルで雲をレンダリングするのに適しています。また、シーンを昼から夜に翻訳するのにも役立ちます。
なぜフィッフェル塔の先端を火の柱にすることにしたのかわかりませんでした。見た目はかっこいいですが、入力データからは正当化できません。それから、スタイル画像には、水中での反射の形で、13本の長い垂直の黄色の帯が含まれていることに気付きました。トレーニングデータがほとんどない場合、これはかなり大規模なクラスターです。かわいそうなことは、高コントラストの垂直エッジがそれらの反射の1つでなければならないことをおそらく知っています。雲の中には、より無関係な縦縞がかすかに見えます。
フル解像度については、ここをクリックしてください。
同じゴッホの絵ですが、今回は実際に星を描いてみました。この場合、わし星雲の柱の部分です。結果は気に入っていますが、黄色の縞模様に執着していることがわかります。柱のすべての垂直部分は、明るくぐらついた黄色の線になります。また、トレーニングデータでは発生しなかった緑に明らかに動揺しており、青と黒を優先してそれを取り除くために最善を尽くしています。
この手法には明らかな制限がありますが、これによるいくつかの結果は非常に説得力があります。一部の画像の構図はお粗末であり、システムは、主題を歪め、その特徴を分散させることで有名なピカソのようなより抽象的なアーティストには困難を伴います。アルゴリズムは彼の角のある線と衝突する色を拾いますが、それでも画像のピクセル値の奴隷です。ソース資料から大きく逸脱するために必要な理解がありません。
これらすべてについて私がわくわくするのは、これらの制限が基本的なものではないと思うことです。
ここで使用されているアプローチ(ある画像でネットワークをトレーニングし、それを使用して別の画像を構築する)は、基本的に一種のハックです。ネットワークに使用できるデータはほとんどありません。このアプリケーションのより高度なバージョンでは、多くの絵画、場合によっては実際の画像に関する情報を含むネットワークを使用して、「ペイント」しようとしている画像に関する十分なコンテキストを提供します。
スタイルの深い把握は、より広い文脈でのみ存在することができます。単一の画像からそれを導き出すことはできません。システムがより広範なデータにアクセスできるようにするアーキテクチャを設計することで、画像のより「人間らしい」理解と、アーティストが現実世界のさまざまな要素をどのように表現するかを導き出すことができる場合があります。このようなネットワークは、より抽象的な、より良い構成の画像を生成できる可能性があります。このようなアルゴリズムは、(このような)かっこいいおもちゃではなくなり、実際のオリジナルアートを作成する方法になります。
これは、ある意味で非常に独特な考えです。
期待外れの結果が得られた場合は、オプションを少し試して、より説得力のある結果を得ようとすることができます。完全なリストはGithubにあります。重要なのは
- -content_weight -value コンテンツ再構築用語をどの程度重み付けするか。デフォルトは5e0です。
- -style_weight -value: スタイルイメージに与える重み。デフォルトは1e2です。
- -style_scale-値: システムが分析する必要のある画像パッチの大きさ(大きいほど抽象的になります)。デフォルトは1.0です。
すべてが満足のいくように機能するようになったら、コメントに最も興味深い画像を投稿してください。皆さんが思いついたものを見て本当に興味があります。
画像クレジット:Shutterstock経由の人間の脳の画家
-
火曜日のヒント:Plex Server で独自の Spotify を作成する
Apple が Lala を買収し、殺して以来、私は Spotify やその他のストリーミング サービスを使用してギャップを埋めてきました。しかし、どこでもストリーミングできない (エンコードが不十分な YouTube のバージョンを数えない限り) さまざまなデバイスで聴きたい音楽がたくさんあります。 Plex に入ります。 Plex は、Mac またはネットワーク接続ストレージ (NAS) デバイスをサーバーとしてセットアップし、自宅から離れていても自分の音楽を iPhone にストリーミングできるようにするソフトウェア パッケージです。 Plex を設定するには、ネットワークに関する基本
-
Product Creator で独自のディストリビューションを作成
今回もキウイのお話です。 Kiwi は、より優れた openSUSE Build Service の一部である Imaging System であり、複雑で全能のイメージング/仮想化ソリューションであり、あらゆる種類のオペレーティング システム イメージを作成でき、完全にカスタマイズ可能で、さまざまな形式で展開できます。独自のインストール、バニラ openSUSE またはその他の Linux ディストリビューション。 Kiwi は、XML テンプレートを使用してこれらのタスクを実行できます。これは、自動化とスクリプト作成が好きなパワー ユーザーを対象としているためです。ただし、Kiwi は