インテリジェントにコードが生み出す芸術

Elizaveta Semakova

beauty
/ˈbjuːti/
美。形状、色、または形態などの本質を組み合わせたもので、美的感覚、特に視覚を楽しませるもの。

を創造するように機械をトレーニングするとどうなるのでしょうか。 このブログポストでは新しいバージョンのコード生成アートについて紹介したいと思います。

JetBrains では、スプラッシュスクリーン、バナー、およびリリースグラフィックスに、コード生成アートを使用してオリジナルのグラフィックスを生み出しています。 各製品には、独自のユニークなデザインを施し、皆さんのデスクトップに心地よい美をお届けしています。

JetBrains Artwork Generator v4

新機能

このバージョンのグラフィックスジェネレータでは、ニューラルネットワークを使用して、アニメーションと静的グラフィックスの両方を作成します。

画像ジェネレータが生み出す画像は、本質的に、フィードフォワードニューラルネットワークのマッピング関数により生成された景色です! より美しくするために、内部的にいくつかのトリックを施してはいますが、ほとんどは、ネットワークに渡しているデータそのものに基づいています。

目に嬉しい画像を簡単に生成する上で鍵となるツールは Mixer mode です。 気に入った画像を組み合わせて使用し、視覚的に似通った、新しい画像を生成することができます。 汎用アルゴリズムの単純な実装であり、選択された画像のパラメータを混合させて、完全に新しいものに進化させることができます。 ユーザーが混ぜ合わせた画像、つまりはユーザーが美しいと見なす画像に関する情報を使用することで、どのパラメータのセットが美しい画像となるかを予測できる二項分類モデルをトレーニングできます。

つまり、ニューラルネットワークの使用には、画像の生成プロセスそのものと、目を引く結果を生成するために生成プロセスの最適な初期条件を検索するために使用するという 2 通りがあります。

自分自身がデザイナーとなって、あなただけのユニークなデスクトップウォールペーパーを作成できるのです。 ぜひ JetBrains ウェブサイトのデスクトップアートのページをご覧ください。または、code2art.jetbrains.com に直接アクセスすることも可能です。 ニューラルネットワークが内部からどのように機能するかを知りたい場合は、 Datalore notebook Datalore はJetBrains が提供するオンライン データサイエンス向けノートブックです)をご確認ください。

Desktop Art を試す

以下のアートは、ジェネレーターを使用して作成できるもののほんの一例です。

Ēage

Kubrik
Kubrik

Venus
Venus

GUI の仕組み

フロントエンドは、Mixer mode のユーザーインターフェイスとして機能し、 Solo mode では、ニューラルネットワークの特定の結果を調整するコントローラーとして機能します。 同じフロントエンドのコードがすべてのバージョンのジェネレータで使用されていたため、また現在も使用されているため、各バージョンで大幅に改善されています。 今回は、構成可能な個別のコンポーネントとして表示され、独立した静的アートまたは動きのあるアートを生成できるレイヤーの機能がようやく洗練されました。 また、GUI のロジックもすべての視覚表現から切り離され、プラガブルとなったため、将来的に、スライダー、ノブ、入力、ボタンといったあらゆるビジュアルプロバイダに接続できるようになるでしょう。

ツールの新機能を使用するには

ドロップダウンから IntelliJ IDEAMPS などの製品を選択して Prescribed ボタンをクリックするだけで、アニメーションが施された、その製品のスプラッシュスクリーンが作成されます。

Mixer mode の操作

初期画面には、9 つの画像が表示されます。それぞれ、ユーザーの個性に合わせてニューラルネットワークが生成した画像です。 これを Mixer mode と呼びます。このモードでは、ランダムなアイデアをミックスし、本当に好きなアイデアを選択して、自分を反映したアートを作成できます。

Venus

提案された画像がどれも好みに合わない場合は、 Regenerate を押して、9つの新しい画像を取得できます。これらはすべて、以前の画像とは何らかの形で異なります。 ただし、Regenerate を押す前に、生成された画像を微調整できることに留意してください。これについては後で詳しく説明します。 微調整を行わずとも既存の画像に満足した場合は、1 つずつクリックして Cross-breed ボタンを押します。 選択した画像はそこに残されたまま、選択した画像を混ぜ合わせた新しい画像が生成されます。 完璧な画像が見つかるまで、この作業を何度でも繰り返してください。

さらに、ニューラルネットワークは選択内容をもとに学習します。これを「クラウドソーシング」と呼ぶことにしましょう。 世の中は、何が本当に美しいかを理解しています。 ニューラルネットワークは、集団的知識を集めて組み合わせることで、美とは何であるかを理解するようにもなるのです。 Mixer mode には、JetBrains ユーザーが選択した画像でトレーニングされたニューラルネットワークが含まれています。これを独自の選択と比較したり、Trained by を wild に切り替えてトレーニング済みのネットワークを無効にしたりすることができます。

Solo 調整

Mixer mode の任意の画像をダブルクリックすると Solo mode が起動します。Solo mode では、特定の画像のすべての側面を制御することができます。 右側の Neuro フォルダーには、さまざまなスライダーやチェックボックスが含まれています。こういった要素を実際に触って、実験してみてください。

Mixer mode に戻るには、必要なときに画像をダブルクリックします。

シーンの保存

画像の完璧な組み合わせを共有する準備ができたら、または最後の仕上げを後で行うには、Get URL ボタンを押します。 すると、ブラウザのアドレスバーに一意の URL が生成されます。この URL を使用して、作品を現状のまま共有するか、後で戻って編集を続けることができます。

Solo 画像のアニメーション

Solo modeAnimate ボタンを押して、少し待ちましょう。 もしかすると、もう少し長くかかるかもしれません。 キューに配置される可能性もありますが、キューのどこにいるのかを知ることができます。 タブを閉じて後で戻ってくることができますが、ステータスを確認するには、必ずシーンを保存してから、もう一度 Animate ボタンを押すようにしましょう。 しばらくすると、画像のアニメーション動画がレイヤーに表示されます。 このアニメーションはメビウスの輪のように無限にループします。 静止バージョンの画像に戻るには、Back to static ボタンを押してください。
アニメーションシーンの URL を生成すれば、世界と共有することができます。

動画のエクスポート

.mp4 ファイルが必要な場合でも、その形式にエクスポートできます! これは非常にコツのいるプロセスではありますが、やりがいは絶対にあります。 ごめんなさい、冗談です。Export Video ボタンを押せば一発でエクスポートが完了です!

アニメーションと同じ条件が適用されます。キューが存在し、レンダリングのプログレスバーがありますが、レンダリング処理中に URL を生成してシーンを保存しておけば、後でもとってきてレンダリングが完了したかどうかを確認することができます(大気中にブラウザのタブを閉じても構いません)。

今日はラッキーですか?

運を試すのであれば、I feel lucky ボタンを押してみましょう。 人工的でない、インテリジェントでもないランダム性によって、根拠のない組み合わせの設定が提案されます。 ランダムな設定であっても、美しいものを生み出すことができます。 もちろん見るに堪えないものが生み出されることもありますが、「美」となる確率の方が高いと言えます。

技術情報

技術的に説明すると、サーバー側はいくつか部分に分けられています。

  • TensorFlow で構築されたニューラルネットワークベース* の画像生成エンジン
  • 画像から動画を生成する動画レンダリングエンジン
  • シーンのストレージ
  • サーバーコンポーネント間で、CPU および GPU 使用率の高いタスクを分散するためのタスクキュー
  • Mixer mode: 汎用アルゴリズムを使って、生成された画像を進化させるためのツール
    • Mixer mode と画像生成エンジンの上には、さらに別のニューラルネットワークが構築されています。このネットワークは、ユーザーの嗜好を集計して画像が美しいと見なされる可能性のより高い画像を予測することができます。

*ニューラルネットワークそのものは、 Datalore by JetBrains というデータサイエンティスト向けのオンラインノートブックで作成されています。 ネットワークアーキテクチャの詳細は、こちらをご覧ください。 ノートブックのコピーを作成して、自分でモデルパラメータを試してみてください。

ジェネレータをお楽しみください。またぜひ、ソーシャルメディアで #code2art を使って、生成した画像を共有し、@JetBrains をタグしてください。 皆さんのアートを楽しみにお待ちしています!

JetBrains 一同
The Drive to Develop