顔領域の匿名化(HypoX64/DeepMosaics を使用)
DeepMosaics を用いて,画像・動画の顔領域にモザイクを追加する.
DeepMosaics は,セマンティックセグメンテーションにより対象領域を求め,その領域にモザイクを追加する(add モード).逆に,モザイクを除去する clean モードも持つ.
配布ファイルの利用条件は,GitHub のページで確認すること.
謝辞:DeepMosaics の作者に感謝します
DeepMosaics の Windows 用 GUI 版のダウンロードと展開(解凍)
Windows 用の GUI 版は,DeepMosaics 0.5.1(2021 年 5 月公開)が最新である.CPU 版と GPU 版がある.
GPU 版の動作条件は,NVIDIA GPU(GTX 1060 以上),NVIDIA ドライバ 460 以上,CUDA 11.0 である.条件を満たさないときは CPU 版を使う.
GPU 版の動作条件は,NVIDIA GPU(GTX 1060 以上),NVIDIA ドライバ 460 以上,CUDA 11.0 である.条件を満たさないときは CPU 版を使う.
- Microsoft Visual C++ 再頒布可能パッケージ(x64)をインストールする
- Web ページを開く
- ダウンロードのリンクをクリック(「Google Drive」をクリック).
- DeepMosaics 本体(
DeepMosaics_0.5.1_cpuonly_windows_amd64.7zまたはDeepMosaics_0.5.1_gpu_windows_amd64.7z)をダウンロードする
GitHub のリリースのページ https://github.com/HypoX64/DeepMosaics/releases からも同じファイルをダウンロードできる.
- 展開(解凍)する
このとき,どのディレクトリ(フォルダ)に展開(解凍)したか,確認しておくこと.
- 先ほどの Google Drive のページで,pretrained_models をダウンロードする
右クリックメニューで「Download」を選ぶ.しばらく待つ.
- ダウンロードした .zip ファイルを,展開(解凍)する.
- 展開(解凍)してできた学習済みモデルのファイルを確認する
- 学習済みモデルのファイルを,DeepMosaics を展開(解凍)してできたディレクトリの下の
pretrained_modelsに置く.
モザイクの追加・除去では,pretrained_models/mosaic の下にファイルを置く.
学習済みモデル
モザイクの追加・除去に用いる主な学習済みモデルは次の通りである.
add_face.pth:画像・動画中の顔にモザイクを追加する
clean_face_HD.pth:画像・動画中の顔のモザイクを除去する(メモリ 8GB 以上が必要)
mosaic_position.pth:モザイクの位置を求める.clean モードで必要である
このほかに,画風変換用の style_vangogh.pth などがある.
手の領域用のモデルは,現在配布されている学習済みモデルには含まれていない.Google Drive の oldVersions に,古いバージョン用のファイルがある.
GUI で使ってみる
- DeepMosaics を起動する
- 「step 1: choose video or image」で,動画ファイルもしくは画像ファイルを選択する.
ここでは,付属のサンプル画像
imgs/ruoruo.jpgを選択してみる
- 「step 2: choose pretrained model」で,学習済みモデルを選択する.
顔にモザイクを追加するので,add_face.pth を選ぶ
- 「Run」をクリックすると,処理が始まる
- result の下に結果のファイルができるので確認
- 再生してみる
Windows 付属の Windows Media Player でうまく再生できないときは,VLC media player など,他の動画プレイヤーをインストールし試してみること.
- 演習:顔が写っている写真,ビデオを入手.「add_face.pth」で処理しなさい.
ソースコードの入手と準備
GUI 版には,Python プログラムから呼び出すための deepmosaic.py は含まれない.コマンドラインや Python プログラムから使うときは,ソースコードを入手する.
必要なもの: Python 3.6 以上,ffmpeg,PyTorch
必要なもの: Python 3.6 以上,ffmpeg,PyTorch
- コマンドプロンプトを開き,次のコマンドを実行する
git clone https://github.com/HypoX64/DeepMosaics.git cd DeepMosaics pip install -r requirements.txt - 学習済みモデルのファイルを,
DeepMosaics/pretrained_models/mosaicに置く. - コマンドプロンプトで,次のコマンドを実行し,動作を確認する
python deepmosaic.py --media_path ./imgs/ruoruo.jpg --model_path ./pretrained_models/mosaic/add_face.pth --mode add --gpu_id 0GPU を搭載していないパソコンでは,--gpu_id に -1 を指定する.この場合は CPU で処理される.
Python プログラムから使ってみる
GUI は 1 件ずつファイルを指定して処理する形になっているが,deepmosaic.py はコマンドラインから呼び出すこともできる.
ここでは,指定したフォルダに含まれる画像・動画ファイルすべてに対し,順番に「顔領域へのモザイク追加」処理を行う Python プログラムを示す.
deepmosaic.py が結果ファイルを result フォルダに出力するので,このプログラム側で出力先を指定する必要はない.
ここでは,指定したフォルダに含まれる画像・動画ファイルすべてに対し,順番に「顔領域へのモザイク追加」処理を行う Python プログラムを示す.
deepmosaic.py が結果ファイルを result フォルダに出力するので,このプログラム側で出力先を指定する必要はない.
- 次のプログラムを,DeepMosaics のディレクトリの直下に保存する(例:
batch_add_mosaic.py).# DeepMosaics の deepmosaic.py を用いて, # 指定フォルダ内の画像・動画すべてに,顔のモザイクを追加する import os import sys import glob import subprocess # 処理対象のファイルが入っているフォルダ INPUT_DIR = './imgs' # 学習済みモデルのパス MODEL_PATH = './pretrained_models/mosaic/add_face.pth' # 使用する GPU 番号(GPU を使わないときは -1) GPU_ID = '0' targets = sorted(glob.glob(os.path.join(INPUT_DIR, '*.*'))) for media_path in targets: subprocess.run([ sys.executable, 'deepmosaic.py', '--media_path', media_path, '--model_path', MODEL_PATH, '--mode', 'add', '--gpu_id', GPU_ID ]) - フォルダ INPUT_DIR に,匿名化したい画像・動画ファイルを入れておく.
- MODEL_PATH に,学習済みモデルのパスを指定する.
- コマンドプロンプトを開き,DeepMosaics のディレクトリに移動し,次のコマンドで実行する.
python batch_add_mosaic.py - 処理が終わると,result フォルダの下に,ファイルごとの結果(モザイクが追加された画像・動画)ができるので確認する.
GPU を搭載していないパソコンでは,GPU_ID に -1 を指定する.この場合は CPU で処理される.