はじめに

ChatGPTが連日話題ですが1回の質問で人の顔にモザイクを掛ける実装が出来るか試してみました。何回か試してみた結果、1回では実装出来ない場合もありましたが概ね1回の質問で実装出来ることを確認出来ました。

ChatGPTはなんでもそれっぽい事を回答してくれる事は周知のことで、コーディングやバグ探しなどもやってくれるのですがどうせなら目に見えて結果がすぐ確認出来るイメージ処理で試してみたいと思いProcessingのコードを書かせてみました。

どういうイメージ処理の実装をやらせてみようかなと思ったのですが、画像ファイルを読み込み人の顔を自動で認識してモザイクを掛けるというのが面白そうだなと思い今回はそれをやってみることにしました。

事前準備

事前準備としては顔にモザイクをかけたいので人の顔が写っている画像の用意とProcessingをMacにインストールしておくだけです。

Processing画面

人の顔の画像は著作権に問題ないAIが生成した画像をこちらから取得し使わせてもらいました。用意したAI生成画像はこちらです。

合成写真っぽい感じはしますが実在しない人物のはずなのでこれを使ってみたいと思います。

無料のGPT-3.5で試してみる

以下のようにChatGPTに質問してみました。

Processingでイメージファイルを読み込み、人の顔を認識してモザイクを掛けるコードを教えてください。

すると次のようなコードと詳細な説明をしてくれました。

コードを提案してくれたので、このコードをそのままコピーしてProcessingに貼り付けて実行してみました。

すると、「The package “gab” does not exist. You might be missing a library.」というエラーメッセージが表示されました。

ライブラリのインストールが必要だと思うのですが、Processingは初めて使うので使い方がよく分かりません。なのでそのままChatGPTに聞いてみました。

「The package “gab” does not exist. You might be missing a library.」エラーが発生したんだけどどうすれば良いですか?

するとOpenCVライブラリがないのでライブラリを追加する手順を教えてくれます。

おそらく情報が少し古いようでImportの手順が最新版のProcessingではちょっと違ったのですが、ChatGPTが教えてくれた情報を手掛かりにOpenCVライブラリをインポートする事ができました。

これでどうだ。ということで再度実行してみると今度は「HAAR_DO_CANNY_PRUNING cannot be resolved or is not a field.」というエラーが出ます。

うーむ。OpenCVの使い方が分からないのでどうすれば良いのかよく分からない。またエラーメッセージで聞いても良いのですがライブラリインポート手順も古い情報であることからGPT-4でやった方が早く出来るかなと思いChatGPT Plusを使うことにして決済を行いました。

GPT-4で試してみる

ChatGPT Plusが使えるようになるとモデルを選択して質問する事が出来るようになります。

GPT-4を使えるようになったので再度質問をしてみます。

Processingでイメージファイルを読み込み、自動で人の顔を認識してモザイクを掛けるコードを教えてください。

GPT-3.5の時と質問が違うのは、人の顔を自動で認識して欲しかったので、より明確に「自動で」という文言を追加したことです。

そのおかげか先ほどとは少し違うコードを提案してくれました。(先ほどのコードはdetect()を使っているので、これも恐らく自動で認識してくれそうですが)

GPT-4はGPT-3.5とは違ってChatGPTの回答のスピードがめちゃくちゃ遅いです。

その上、途中で止まってしまいます。

少し待っても一向に回答が戻ってくる気配がないので、「続き」と入力すると止まってしまったところの次からの回答を返してくれます。

ただ、ここがバグっているようでコードのところを単なる文字列として表示したり、回答のところをコードとして表示したりという感じで非常に見づらいです。

ちょっとGPT-4の挙動に苛立ちを覚えながらもコードが提案されたのでコードをコピーしてProcessingにペーストしていざ実行です。

下の方のコードにインデントが入っていないのはChatGPTの方でバグっててコードを文字列として表示したのをそのままコピペしたためです。

おぉ。ちゃんと人の顔を自動で認識し、モザイクを掛けてくれました。

mosaic = createMosaic(inputImage.get(face.x, face.y, face.width, face.height), 10);

createMosaic()の引数10のところを変更するとモザイクの大きさを変更出来ます。30にしてみたら次のように表示されました。

プログラミング言語で視覚的表現がしやすいProcessingとChatGPTを使って、Processingの知識もOpenCVの知識もないまま爆速でモザイク処理実装を検証してみました。ChatGPTからの返答待ち時間も含めて全体を通して1時間程度でここまで実装できてしまいました(返答が早ければ10分程度で実装できていたかもしれません!)。

イメージ処理のプログラミング勉強用のサンプルコードを随時生成出来、便利そうです。

今回のコードをJavaScriptなど他の環境で動かせるようにChatGPTに聞いても教えてくれそうです。

GPT-4の反応速度はまだ残念なところはありますが、やはり今後の開発や業務においてChatGPTがない世界は想像できなくなりそうです。

おわりに

TC3は「Gig Innovated.」のスローガンを掲げ、ギグ・エコノミーとの共創を通してソフトウェア開発やAI開発を支援する会社です。ギグ・エコノミーとの共創による開発には、ツール、プロセスなどの観点で様々な課題も存在しています。このような世界を一緒に作っていく仲間をTC3では募集していますので、カジュアル面談などお気軽にお問い合わせください!(参考:リクルートサイト