watamario15大学の課題を全て出し終わり、ようやく自分の作業に取り組むことができるようになりました。作成することにしました。検索すればすぐに分かるのですが、簡単に言うと環境構築を秒速で終わらせるためのファイル群です。系のソフトウェアの多くはテキストファイルを設定ファイルとして扱うものが多く、それをカスタマイズすることで自分好みに設定することができるようになっています。スクリプトを走らせるだけで即座に自分の環境が出来上がる、という訳です。始まる「ドットファイル」であることが由来です。系システムにおいてドットファイルは隠しファイルとなります。ありますので、気になる方は読んでください。出したりして頂けると嬉しいです)。シミュレータをインストールする機能、阪大生(だけ)には割と需要ありそうですね(笑)今回の投稿は以上です。参加してみてください(もちろん上回生も大歓迎!)。Calendarの24日目?の記事を書くに当たって、自分が今までやったことがない技術を使用しようと思いまして、StackGANというGANを使用したアプリを制作しようとしました。具体的には大阪大学生協食堂の料理の写真とその料理名を学習して、入力された架空の料理名から架空の料理画像を生成するアプリです。結論から言いますと上手くいかなかったのですが、その間に得られた知見などの心に移りゆくよしなし事をそこはかとなく書きつくりました。~GANって?~GANについて軽く説明します。詳しくはググってください。GeneratorとDiscriminatorという2つの学習するモデルから構成される機械学習モデルです。小学校とかの先生と生徒の関係で例えると、生徒のGenerator君は答えを写した宿題を作成し、Discriminator先生は提出された答案が答えを写したものかきちんと解いて得られた答案かを見分けます。その見分けた結果、答えを写したことがばれて叱られたGenerator君は、学習してより自分で解いたかのように見える答案を作成します。Discriminator先生もきちんと解いてきた答案かどうかを見分けられる様に学習します。そのように一方が利するともう一方が損する関係によってお互いが高めあい、Generator君は自分で解いた答案と変わらない答案を作成することができるように成長します。Generatorモデルが最終的に本物そっくりのものが生成できるようになる学習の仕組みがGANというモデルです。~StackGANって?~私も最近知ったのでよく知りません。言語から画像を生成する方法ないかなと探していたら発見したGANの一種のモデルです。これも詳しくはGoogle先生に教えを乞うか、私が参考にしたサイトを閲覧してください。(GANの説明に疲れて丸投げしたのでは無い)なお、レシピから料理を生成するCookGANというものがあるみたいですが、今回は料理名をラベルとして使用するので恐らく使えないです。・何が駄目だったのかあまり制作にかける時間がなかったので原因究明はきちんとはされていないですが、早い話学習データが圧倒的に不足していました。学習が上手くいかなくてどういうわけかこのページに行きついてしまったかわいそうな人にはこんな結論で申し訳ないです。それはさておき何が駄目だったかというと、130枚の、しかもラベルが重複しない、共通点としては器の形が似ているだけの画像で学習しようとしたことが無謀でした。そのデータ数でよくやろうと思ったなと言われそうですが、言い訳をすると入力する料理名に含まれる名詞は重複が多く何とかなるかなと思ってやってみた次第です。Augmentationという技術を発見して、もしかしたら出来るのでは?と愚考した次第です。Augmentationです。一枚目がピリ辛サーモン丼。美味で個人的なおすすめ。二枚目はマヨラーの友人によって犠牲となった親子丼。親子丼に何の恨みがあったのだろうか。二枚目は学習には使用していません。・結果StackGANのstage1の学習段階で上手くいきそうな気配がないのでやめました。一応stage1の学習結果だけ載せておきます。心が清い人には遠目で見るとかろうじて料理に見えるはず。これだけでは申し訳ないので、同じデータセットで学習したDCGANで生成したものを貼り付けておきます。右下以外はまんま存在する料理が生成されています。つまらなさで申し訳ない。生成画像を人間がコントロールできるものを作った方が楽しいですね。Lossを使用すれば上手くいくよという記事を見つけたので、これとは違うGANのアプリに実装すると劇的に学習が向上しました。Lossを適用したらより上手くいくかと思ったら、逆に学習しなくなってしまいました。Entropyは少しの値の変化もLossの値に反映されるので、これが原因ではないかと考えています。~終わりに~いかがでしたか?ろくな原因究明をしていない分、悪質なキュレーションサイトの方がよっぽど役に立つような内容でした。この山無し落ち無し意味なしのやおいページにお付き合い下さり有難うございました。1月になって記事を書いたことお許しください。未分類GAN使用のアプリ制作における雑記にコメント昔作ったゲームを振り返るこれはアドベントカレンダー25日目の記事です。なんでトリなんて選んだんでしょうね。書くこともないので昔作ったゲームでも紹介します。1つ目はブロック崩し。僕が初めて作ったゲームです。javascriptとhtmlで作りました。2つのゲームを同時にクリアさせる必要があります。カーソルは1つなのでなかなか忙しいです。当てるなってやつに当てると画面が変化して見づらくなります。作ったにしてはなかなかいい発想してたと思います。何番目に作ったのかは覚えてません。小学生のころ考えた留置所と戦争に行くという要素を含んだものです。ほかにも途中で無職になったり、事故を起こして裁判になったりと、およそ市販できないようなマスを用意しています。最近のマスがどんなものか知りませんが。大体所持金がマイナスになるというそれはひどい人生ゲームです。ちなみに画像は無職なのに車を買って事故を起こし、裁判で賠償金490万払ったところです。3つ目は陣取りゲームです。某イカのゲームが流行っていたので作りました。右にあるいろいろな塗り方から選んで盤面を塗っていきます。緑色の場所しか選べず、盤面がすべて赤色か青色で塗られたらゲーム終了。色の多いほうが勝ちです。右にある4つはスペシャル技で、1種類だけ使えます。正方形が強かった気がします。最後はトランプオセロ。これだけ大学に入ってから作ったものです。部室でトランプで遊んでた時にふと思いついたのでゲームにしたものです。トランプでオセロをすることで、単純に表の数でなく数値の和で勝敗を決める戦略性、裏が同じ模様のトランプであることから両者が使える裏というおき方、裏返ったカードの色と数値を記憶する必要があるという神経衰弱要素、そしてジョーカーを使うことで場のカードを1枚ひっくり返せるという逆転要素が盛りだくさんです。自分の周りでは結構評価高かった気がします。して振り返ってみるとなかなか頑張ってたなという気がします。今はこんな気力はないですけど、また面白そうなもの思いついたら形にしておきたいですね。日の目を浴びなくても、こうして思い出すことで自分も頑張ってたんだな、とか面白いこと考えてたな、とか懐かしい気持ちになれるなら形にした意味はあるんじゃないでしょうか。用アプリケーションの作成方法を解説します。公式の内容ではありません。普通、フリーズなどが起こった場合もリセットボタンを押せば元に戻りますが、万一何かが起こった場合も一切保証できませんので、自己責任で試してください。公式のソフトウェア以外を起動できなくするプロテクトが掛かっています。以降の機種がそれに該当します。いった機種での起動方法はこちらを参照してください。この表で第1世代から第4世代に分類されている機種を対象とします。年以降の第5世代に該当する機種用のアプリケーションは、この記事の方法では作成できません。プログラムこの記事では、プログラミングよりも開発環境やコンパイル方法など、開発手順の解説に重点を置くため、単純なプログラムを使用します。ダウンロードしてください。アプリケーションを開発できる環境があれば試すことは可能です。本格的に開発を行う際は、こちらのノウハウ集も参考にしてください。通りを解説していきます。以上でも開発可能です。こちらを使用したい場合は、こちらを参照してください。カードに「アプリ」フォルダを作成し、その中にメニューに表示させたい任意の名前のフォルダを作成します。追加アプリ・動画」に追加されます。メニューの配置は機種によって異なるので、この通りでない場合は似たものを探してください。加えることで高解像度状態のまま実行できるようになります。変更するだけで作成が可能です。ファイルを直接実行する場合は以上の作業は不要です。どんな名前でもどこに置いても構いません。完全にサポートしているなど、現在では最も使いやすい環境です。個人の方が作成されたものだというのもあり、若干癖があります。基本的に公式サイトに従います。場合は、こちらに従ってください。記法を試してください。/etc/apt/sources.list'その後、以下のコマンドを実行してインストールします。gcc-arm-mingw32ce終わったら、以下のコマンドを入力します。-v以下のような出力が得られれば環境構築は終了です。お疲れさまでした!コマンドが見つからないというエラーが出た場合は、正しくインストールできていないので今までの手順をもう一度確認してください。配置したディレクトリで、以下のコマンドを実行します。生成されるので、電子辞書にコピーして実行します。冒頭の画像のようになれば成功です!しかし、この長いコマンドを毎回入力するのは面倒です。ここでは紹介しませんが、リソースを含む場合はそのためのコマンドも必要となり、さらに面倒です。