この記事はディズニー関連ブログ Advent Calendar 2020に参加しています。
この記事は非エンジニアの方にも向けた記事になっています。
こんにちは、アクセルです。
せっかくアドベントカレンダーに参加しますが、いつものマニアックな記事はこういう企画には向かないと判断しましたので、本日は可愛いキャラクターたちを紹介する癒し記事を書きたいと思います。
本日題材にするのは、みんな大好きシマリスの兄弟、チップとデールです。

チップとデールの見分け方
実はお恥ずかしいことに、最近までどっちがチップでどっちがデールなのか分かっていませんでした…。小学3年生のときに雑誌で見分け方を読んでえらく感心した記憶はあるのですが、それっきりだったのです。
しかし最近、知り合いから「チョコチップと鼻血デール」という非常に画期的な覚え方を教わりましたので、今の僕に死角はありません!
(鼻の色が黒いチップはチョコ、赤いデールは鼻血と覚えるらしい)
鼻の色以外にも、パッと見た感じだと目や前歯に違いがありそうです。

CNNとは?
さて、タイトルにもある通り、本日は「ディープラーニング」と呼ばれる大人気なAI技術を使って、このシマリスくんたちの顔の違いをコンピューターに自動で学習してもらおうと思います。
今回は画像認識に特化した「CNN(Convolutional Neural Networks)」という技術を使います。ニュースサイトのCNNとは全然関係ないですよ。
今年何かと話題になった、人の顔を別人に変換する「ディープフェイク」とかも、実はこのCNNが応用された技術なのです。
ざっくりした学習の流れ
やってることは超シンプルです。
まずGoogle画像検索を使ってチップとデールの顔写真を各100枚くらい集めて、各写真に「チップ(0)」または「デール(1)」のラベルをつけます。そしてそれらの画像をCNNにブチ込みます。そうするとCNNが10分くらい掛けて、勝手にチップとデールの顔の違いを学習してくれるのです。

ネットから画像を集めているので、「おいおい、著作権大丈夫か?」と気になった方もいらっしゃるかもしれません。結論から言うと、今回みたいなAI技術などの学習は「著作権法三十条の四」が適用されますので、問題ありません。ただし、その画像をブログなどで公開するのはアウトです。念のため言っておきますが、当記事に貼っているチップとデールの画像は全てSNSで許可を得て頂いたものです。
ちゃんと見分けられるかテスト
ある程度学習したところで、CNNがちゃんとシマリス兄弟を見分けられるのかテストしてみましょう。
今回僕が組んだCNNは、画像を入力すると「チップである確率」と「デールである確率」の両方を計算してくれる構成になっています。

この例だと(チップである確率)>(デールである確率)なので「チップ」という判定になります。
テスト用の画像として、先日Twitterで心優しき方々から頂いた画像(チップ10枚、デール10枚)を使わせていただきます。
チップの見分けテスト

正解したのは8/10でした。まずまずですね。
見て分かる通り、顔が極端に横を向いていたり斜めになっていると判別がうまくいかなくなっています。学習に使ったデータは全て正面を向いたものだったので、正面顔じゃないと上手くいかないのは仕方がないのかもしれません。
デールの見分けテスト

正解したのは9/10。
唯一間違えた写真では、顔に何か手すり的なものが被っちゃってるせいで上手くいかなかったのだと考えられます。
AIはどこを見て判別しているのか?
「Grad-CAM」という技術を適用すると、CNNが画像のどこを見てチップとデールを判断したのか可視化することができます。
先ほどの画像で何枚かやってみましょう。

色が明るくなっている箇所が、CNNが見ている所です
これ面白いのが、チップとデールでは見ている場所に違いがあるんですね。チップは鼻の色に注目していますが、デールだと目元に注目しています。また、2つに共通してまぶたと眉毛に注目しています。
目元と眉毛に違いあるのでしょうか?全然わからない…。
(眉毛とまぶたの区別がついてない可能性もあります。)
オチ:野生のシマリス

野生のシマリスはだいたいデールらしいです。
おわりに
CNNを使ってチップとデールを識別するモデルを作りました。
最近のパソコンは処理性能が高いので、こういう技術でも手軽に試せますし、楽しいのでオススメです。
チップとデールの識別ぐらいだとCNNの凄さはそこまで実感できませんが、他にも
- 画像から隠れミッキーを自動で見つける
- ミッキーの旧フェイスを新フェイスに変換する
- 風景写真をイマジニアのコンセプトアート風に変換する
など、様々なことが可能です。暇な時にまた遊んでみたいと思います。
というかブログ分けた方が良いかも…
謝辞
ディズニー好きを公言していながら、お恥ずかしいことにチップとデールの画像を一枚も持っていませんでした。よって、当記事に掲載しているチップとデールの画像は全てTwitterの方で以下の方々から提供して頂いたものです。
うぉるぱ様、海鈴様、Yukkey様、Killua様、mana様、ビコ様
ありがとうございました!
ソースコード
一応ソースコード共有しておきます。(実装の詳細載せないのはどうかと思うので)
コメント