「あーこの人ゴリラっぽい。」と思うことはありませんか?
ゴリラっぽさってどこから来るんだろうかと悩んでいました。
前回、[Python] ディープラーニングのモデル「VGG16」を使って画像認識をし、判断した理由の可視化をする。を行っていた際もその疑問がつきませんでした。
1.
2.
どちらの画像の方がゴリラっぽいかを知りたくありませんか?
今回実装したのは、「ゴリラっぽさ(ゴリラであると予想される確率)をディープラーニングの画像認識システムで認識し、2枚の画像の予測値はどちらが高いのか?を人間が予想する。10組用意して正答率を出す。」です。
名前は「Predict Gollira」。
Golliraのスペルミスを何度したかわからない。(これも合っているかどうかも!)
この技術の応用としては、
「人間の写真を撮って、どっちの方が犬・猫っぽいかを比べるアプリ」
「そもそもあなたは犬?猫?どっち系の人間?」
みたいな女子高校生向け・・・おっさんがやってたら怖いアプリになります。
使い方
- 下記のURLからzipファイルをダウンロードして解凍します。
- app.pyの46行目にあるMySQLの接続設定をしてください。
- MySQLに下記コードのテーブルを追加してください。
- ターミナルで下記コマンドを実施してください。遊べます。
データベースは「predict_gollira」になっていますが、別に他の名前でもOKです。
CREATE TABLE image_pred ( id INT NOT NULL, pred double, PRIMARY KEY(id) ) ENGINE = INNODB character set utf8mb4; CREATE TABLE list ( no INT NOT NULL AUTO_INCREMENT, comp_array VARCHAR(2000), PRIMARY KEY(no) ) ENGINE = INNODB character set utf8mb4;
python app.py
※必要に応じてモジュールをインストールしてください。
※Pythonの環境構築はAnacondaでやれば5分もかからない。おすすめだ。
構成
ディープラーニングモデル:VGG16
Python:Keras+Flask+MySQL
HTML5とCSS、JavaScriptもちょっぴり使ってたりする。
※FlaskとMySQLdbはほぼ初見なので、「動けばいい」との考えで作っています。
※MySQLなしでも良い。ただ、画像の予測に時間がかかるので、予測値をMySQLに入れて1画像1回切りの計算にとどめている。あらかじめ全ての予測値を計算しておくのも良いかと思ったが、今回はコンペごとに分散させた。
遊び方
知人と同じ番号のコンペで正答率を競ったり、
毎日の日課として、自分のゴリラの判別精度を高めたり、
画像を追加(static/imgフォルダ)して、写真(例:人間)のゴリラっぽさを試したり・・・。
例
初見で頑張ったら6割でした。ランダムで選ぶよりマシだ。
んー0.4%低いですねー。(わかるのか・・・?)
影や日の光が強いと見えにくくなるから、これだ!と判定されにくくなる…。
これは機械学習の大きな問題~。って言っても人間もだけど。
まとめ
疑問だったゴリラっぽさを学ぶ環境ができました。
ただ、モデルによってゴリラっぽさの基準が違うようです。(今回はVGG16だが、他にもたくさんある。)
もしかしたら複数のモデルの平均を取ったほうが良いかもしれない。それとも多数決か。
なんにせよまだまだ発展は可能だ。発展させる人がいるかどうかは別だが。
ゴリラ画像を集めるときにはpixabayがすべての役割を担った。感謝します。