有害な画像に機械学習?Cloud Vision APIを使ってみる
- Google Cloud Vision API
- 機械学習
- 深層学習
今回はポルノとかアダルトとか言ってますが、とても真面目な話です。
毎週水曜更新のツクロアのデザイン・ラボ、今週と来週は2週続けて「デザイナーも触れたほうがいい?機械学習。」という画像解析をテーマに記事にしてみたいと考えています。
なお、今回自分で試したかったので画像投稿のフォームをつくってみました。APIの無料トライアル期間内だけですが、このページの下にありますので、何かご自身の写真を画像解析してみてください。
簡単に写真や動画を、特定の相手やネット上に送れる時代、リベンジポルノが社会問題のひとつに…。
GoogleがCloud Vision API(ベータ)という、誰でも簡単に使える画像解析APIを公開しています。
恋人や旦那さんに女性が自分の写真を送信する直前に性的な疑わしき写真と機械が自動で判断し、「この写真、本当に大丈夫?後悔するかもしれないですよ。」と思いとどまらせる仕組みづくりもフォームデザインのひとつかもしれないですね。
技術のチカラと人間力の2段構えで、この行為が将来の自分にどれだけ重大なことなのか?ということを機械が呼びかけてユーザーに考えてもらえる可能性がここ最近見えてきている気がします。
Cloud Vision APIについて
私が技術者ではないのであまり詳しくは書けません。
しかしたくさんの記事がネットに上がっていて、まだAPIが公開されて年月も経ってないためそんなに古い記事はないと思います。
私も以下の記事が参考になりました。とても分かりやすく書かれています、感謝です。
Cloud Vision APIの使い方まとめ (サンプルコード付き) : https://syncer.jp/cloud-vision-api
こちらの記事にも書かれている通り、最初の60日は無償ですが、クレジットカード番号を入力し、課金を有効にしないとこのAPIは使うことができません。これが嫌でしたら諦めましょう。
このAPIでできることは、画像の中にある顔を認識したり、顔のパーツの位置、いわゆる目、鼻、口だけでなく、FOREHEAD_GLABELLA(眉間)やCHIN_GNATHION(下顎の一番下の位置)までも認識する機能を持っていて、その他に企業ロゴマークなどを認識したり、そもそも「この被写体は猫でしょう」なんて生物種別まで言い当てます。画像にかかれている文字を認識するOCR機能もあり、そして今回の記事のテーマである「安全な画像かどうか?(アダルト、暴力性)」も解析します。
もちろん完璧というわけではないのですが、画像によってはかなりの精度で言い当ててくれますのでコレがお試し期間、無償で使えるというのは今の技術進化を体験できるのに良いチャンス、本当にありがたいです。
猫かどうか?
安全な(卑猥ではないか?)というテーマなのですが、ちょっと脱線して、被写体が動物かを言い当てる機能を見てみました。
ここで私の自宅で飼っている猫、ちくわの写真をこのCloud Vision APIで検証するために簡易な入力フォームをつくってみました。ちなみにちくわはTwitterをやっています、とても人気者です(本当に脱線)。
生物の種類だけでなく、食べ物の名前なども判断しますが、全て英語となります。
このちくわの写真をAPIに投げて試してみた結果の一例を見てみましょう。
この写真の結果、「猫、ペット、哺乳動物、動物、脊椎動物」と解析されました。
変な体勢ですね、猫らしくない。でも「猫、ペット、ほおひげを生やしている、哺乳動物、動物」と出ました。
コンクリートに身体をこすりつけてゴロンゴロンするのが日課なくらい大好きなのですが、「ペット、哺乳動物、動物、ほおひげを生やしている、猫」と出ました。猫というキーワードが最後に来ています。
このAPIは画像を送る際に候補の最大数を指定できます。
つまり、最後の写真の場合、候補数が3つだと「猫」と判断できないことになります。
これにより、そもそもこの写真に写っているものは建物?人?動物?などを解析してくれます。
顔のパーツを認識する
人の顔については、先ほど書いた通り、目、鼻、口をはじめとする位置を特定してくれます。その箇所は34箇所、ちょっと多すぎるので、「左目、右目、鼻、口」だけに絞ってフォームの画面に表示してみました。
写真は、ぱくたそ(https://www.pakutaso.com/)さん、モデルは河村友歌さんです。
なお、この被写体を解析した結果「衣類、木、写真撮影、人物写真、葉」と出ました。女性が出てないですね。割りとモデルさんより周囲が目立っている気がします。
拡大すると、しっかりと右目(分かりづづらいですが)、左目、鼻、口をとらえています。
こちらは「衣類、写真、女性、写真撮影、人物写真」と、女性のキーワードが3番目に出てきました。髪が長いところが先ほどの写真と違いますが関係あるのでしょうか?憶測ですが。
アダルト性のある画像か判断する
安全かどうかを判断するパラメーターとして「adult, medical, spoof, violence」の4つがあり、それぞれに「UNKNOWN」と「VERY_UNLIKELY, UNLIKELY, POSSIBLE, LIKELY, VERY_LIKELY」があります。どうやら「VERY_UNLIKELY」に行けばいくほど安全っぽくて、「VERY_LIKELY」に行くほど危険っぽいようです。(正確にはLikelyなので「きっと」「そうだろう」という予測を込めた断定しない言い方ですね)
まだしっかり調べきれていないのですが、spoofは元々の画像を加工された可能性やパロディ写真の疑いがあるかのパラメータのようです。
女性の水着姿の写真を判定してみます。
写真は無料写真素材 写真ACさん(http://www.photo-ac.com/)
この程度だと特に危険度は低いようです。「underpants」と出ているのは形状からしても、男性用の下着(ボクサーパンツ)と見られて、「active undergarment」と出たので、スポーツ用下着と見られているようです。あとは「太もも、腹部」などが出てきました。
水着と下着の判定は難しいだろうと思ったのですが、swimwearと出ている時点で安全と判断されているようです。
もっと露出が高い写真についてはこのような解析結果でした。まあこれは一部なので必ずともこういう結果になるとは限らないです。
どうやら水着と下着の判別はちゃんとできている印象が高いです。
- 全身下着姿…adult: VERY_LIKELY(危険度、とても高そう)
- 上半身を露出…adult: VERY_LIKELY(危険度、とても高そう)
- ヘアヌード写真…adult: VERY_LIKELY(危険度、とても高そう)
- 全裸ではあるが、背中をむけている…adult: VERY_LIKELY(危険度、とても高そう)
- 全裸ではあるが、胸と陰部は手足で隠している…adult: POSSIBLE(危険度中くらいっぽい)
- 下着っぽく見える水着…adult: UNLIKELY(危険度少なそう)
アダルト画像かセクシー画像か?判断が微妙かと思ったんですが、思った以上に機械学習が優れているのに正直驚いています。
試してみよう
ご自身で色々な画像を使って、どの程度の露出でadultがVERY_LIKELYやLIKELYになるのか試してみてください。デモでは送信した画像を、ツクロアでは記録したり保存したりは一切していないのでどうぞ安心してください。
さて、次週も同じようなテーマで記事を書いてみたいと思います。毎週水曜更新、ツクロアのデザイン・ラボ、今後もよろしくお願いします。
デモ
こちから画像アップロードをしてみてください。数秒の解析時間がかかります。