⌚ 2023/2/17 (Fri) 🔄 2024/3/20 (Wed)
圧倒的効率化!【機械学習】誰でもできる、自動モザイク処理の方法
誰もがインターネット上に情報を発信できる現代。問題となっているのは人の顔写真を無断でアップロードすることによる肖像権の侵害です。それを防ぐために、自動で顔を検出し、モザイク処理を施してくれるプログラムをご紹介します。
記事を見れば、誰でも、簡単にモザイク処理ができるようになり、そして、人工知能の機械学習についてちょっぴり詳しくなります。
- 人工知能に興味のある社会人
- 自動モザイク処理に興味のある映像制作会社
- 機械学習の種類やそれぞれのメリット・デメリットについて知りたい方
▼この記事を書いた人
サン・エム・システム入社1年目のひよっこ社員。脳をディープラーニングしたいと思い、データ分析のチームに参画し、日々データ分析を学習しています。
1.モザイクの重要性
誰もが情報を発信できる現代。
ブログやSNS、YouTube等で画像や動画をアップロードする人が増えています。
しかし、その中で問題となっているのが、コンプライアンスです。
動画や写真に写りこんだ一般人をインターネット上に公開してしまい、肖像権を侵害するケースが後を絶ちません。
増え続ける情報。厳しさを増すコンプライアンス。晒され続ける被害者たち。
こんな現代社会だからこそ、動画や画像を発信する際は、適切にモザイク処理をする必要があります。
たまたま写りこんでしまった一般人、ひいては自分自身を守るために。
とはいえ、モザイク処理は時間と労力がかかるもの。
このようなデータがあります。
「日本テレビによると、例えば1分の映像素材へのモザイク入れはベテランの編集者でも1時間程度かかることもあるなど非常に手間のかかる作業であり、現場の課題となっていた。また、個人情報保護の重要性の高まりから一層の慎重な取り扱いが必要となり、作業負荷が増大しているという。」
日テレが映像編集の自動モザイク入れAIソフトをリリース、作業を最大90%効率化
ベテランの編集者ですら、1分の映像素材のモザイク入れに1時間要します。
では、素人の我々ではどうなるでしょうか?
倍の時間。
そう仮定すると10分の映像素材のモザイク処理に、20時間必要となります。
これはとても非効率で時間の無駄です。
ということで今回は、モザイク処理があっという間にできる機械学習の魅力と誰でもモザイク処理を実行できるプログラムをご紹介します。
この記事を読んで、簡単にモザイク処理ができるようになり、さらに、人工知能の機械学習について詳しくなりましょう!
ぜひ最後までご覧ください。
2.モザイク処理自動化の技術
2-1.教師あり学習について
今回モザイク処理を実施するにあたり、使用する技術は「教師あり学習」の顔検出です。
皆さんの中に以下のような技術を目にしたことがある人は多いのではないでしょうか?
・顔の自動検出
・顔の喜怒哀楽判定
・スマホの顔認証
これらは「教師あり学習」を用いた顔検出で実現されています。
「教師あり学習」は機械学習という手法の中の技術です。
正解のある学習データを用いて学習を行う機械学習です。
※機械学習について詳しくはこちらから。
例えば、"1"と手書きで書かれた写真を「この写真は"1"ですよ」と正解を与えた状態でインプットし、それを学習させることで、コンピュータは"1"の特徴を効率よく、正確に掴むことができます。
このように、学習データに正解を付与させ、学習を進めるのが「教師あり学習」です。
「教師あり学習」は顔検出のほかにも電子メールのスパム検出、機械翻訳などに使用されています。
2-2.教師あり学習による顔検出
「教師あり学習」を用いて、顔検出を行いモザイク処理を自動化します。
「人間の顔」の画像を大量に用意し、「これは人間の顔ですよ」と正解を与え、人間の顔を学習させます。
それによって学習後のプログラムは画像をインプットした際に、人間の顔の画像か、そうでないか、を学習します。
このように人間の顔の検出を行います。
3.プログラムコード紹介
3-1.実行のための下準備
では、実際に「教師あり学習」の顔検出、自動モザイク処理を実装していきましょう。
まずは実行するための開発環境を準備します。
Google Colabにアクセスします。
Google ColabはWeb上で簡単にPythonコードを実行できる実行環境です。
※詳しい使い方はこちらから。
アクセスできたら下記の手順で実行準備を行ってください。
①フォルダを作成し、対象の画像、動画をアップロードする。
②顔検出の学習済みデータを取得する。
下記のサイトにアクセスします。(opencvが提供する学習済みデータ格納サイト)
https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalcatface.xml
アクセスできたら、人間の顔の特徴を学習した「haarcascade_frontalface_alt」のデータをダウンロードしましょう。
③②で取得した顔検出学習済みデータをGoogle Colabにアップロード。
これで準備完了です。
この後に次節で紹介するプログラムを実行すれば、自動モザイク処理を実現することができます。
3-2.プログラム紹介
自動でモザイク処理を行ってくれるプログラムがこちらです。
↓↓↓
import cv2
from google.colab.patches import cv2_imshow
# 画像の抽出を行います。
src = cv2.imread('img2/img02.jpg')
# 顔検出用の学習済みデータを取得します。
cascade_file = "haarcascade_frontalface_alt.xml"
cascade = cv2.CascadeClassifier(cascade_file)
# 画像に含まれている顔を検出します
src_gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
faces = cascade.detectMultiScale(src_gray)
# 検出した顔にモザイク処理を行います
def mosaic(src, ratio=0.07):
small = cv2.resize(src, None, fx=ratio, fy=ratio, interpolation=cv2.INTER_NEAREST)
return cv2.resize(small, src.shape[:2][::-1], interpolation=cv2.INTER_NEAREST)
def mosaic_area(src, x, y, width, height, ratio=0.07):
dst = src.copy()
dst[y:y + height, x:x + width] = mosaic(dst[y:y + height, x:x + width], ratio)
return dst
for x, y, w, h in faces:
dst_face = mosaic_area(src, x, y, w, h)
# モザイク加工を行った画像を表示します。
cv2_imshow(dst_face)
# 画像の保存を行います。
cv2.imwrite('data/dst/opencv_mosaic_face.jpg', dst_face)
↑↑↑
このプログラムをGoogle Colabに記載します。
最後にコード欄左上の実行ボタンを押下すれば、画像に自動でモザイク加工をすることができます。
3-3.実行結果
プログラムの実行が完了したら、モザイク加工した顔画像を確認してみましょう。
・実行前の画像
・実行後の画像
皆さんも上記の画像のように人間の顔だけモザイク加工できたのではないでしょうか?
機械学習の「教師あり学習」を利用すればこのように誰でも簡単にモザイク処理を実現することができます。
この記事のまとめ
以上が自動で顔検出を行い、モザイク処理を行う方法の紹介でした。
このように「教師あり学習」を活用すれば、自動でモザイク処理を行うことが可能になります。
それもたった数十行のコードで。
これは機械学習の大きな利点の一つです。
予め「教師あり学習」で、正解データを学習させ、学習済みデータを作成しておくことで、誰でも自由に、すぐに高機能な処理を行うことができます。
これもまた、人工知能による作業の効率化の一つ。
この「教師あり学習」の技術を用いれば、自動運転時の車両判定、機械の異常動作検知、など様々な技術に応用できます。
わくわくしますよね。
是非皆さんも機械学習の「教師あり学習」に触れてみてください。
きっと、様々な業務が効率化されるはずですよ!
弊社、サン・エム・システム株式会社はデータ分析の分野に明るい人材が多いです。
データ分析に関するプロダクトを提供していますので、ご興味のある方は是非こちらをご確認ください。
参考
・日本コンピュータビジョン株式会社/機械学習を活用したAI顔認証とは? 仕組みとメリットを解説
・株式会社アイディオット/機械学習を用いた顔認証の仕組み・メリット・活用事例を紹介
・日経XTech/日テレが映像編集の自動モザイク入れAIソフトをリリース、作業を最大90%効率化
・『Python実践データ分析100本ノック』著:下山輝昌、 三木孝行、 松田雄馬