関連プロジェクト:
- SwanLab:人物切り抜きモデルの訓練を通じて、分析と監視、ラボの仲間との協力と交流を行い、訓練効率を大幅に向上させました。
-
2024.11.20: Gradioデモに印刷レイアウトオプションを追加、六つ切り、五つ切り、A4、3R、4Rレイアウトサイズをサポート
-
2024.11.16: APIインターフェースに美顔効果パラメータを追加
-
2024.09.24: APIインターフェースにbase64画像入力オプションを追加 | Gradioデモにレイアウト写真トリミングライン機能を追加
-
2024.09.22: GradioデモにビーストモードとDPIパラメータを追加
-
2024.09.18: Gradioデモにテンプレート写真の共有機能を追加、米国式背景オプションを追加
-
2024.09.17: Gradioデモにカスタム底色-HEX入力機能を追加 | (コミュニティ貢献)C++バージョン - HivisionIDPhotos-cpp 貢献 by zjkhahah
-
2024.09.16: Gradioデモに顔回転対応機能を追加、カスタムサイズ入力にミリメートルをサポート
🚀 私たちの仕事に興味を持っていただきありがとうございます。画像分野における他の成果もぜひご覧ください。お問い合わせは、zeyi.lin@swanhub.co まで。
HivisionIDPhotoは、実用的で体系的な証明写真のスマート制作アルゴリズムを開発することを目的としています。
さまざまなユーザー撮影シーンの認識、切り抜きおよび証明写真の生成を実現するために、一連の洗練されたAIモデル作業フローを利用しています。
HivisionIDPhotoは以下のことができます:
- 軽量切り抜き(完全オフラインで、CPUのみで迅速に推論可能)
- 異なるサイズ仕様に基づいて異なる標準証明写真、六寸レイアウト写真を生成
- 完全オフラインまたはエッジクラウド推論をサポート
- 美顔(待機中)
- スマートな正装変更(待機中)
HivisionIDPhotoがあなたに役立つ場合は、このリポジトリをスターしたり、友人に推薦したりして、証明写真の緊急制作の問題を解決してください!
私たちは、コミュニティによって構築されたHivisionIDPhotosの興味深いアプリケーションや拡張機能をいくつか共有しています:
- HivisionIDPhotos-ComfyUI:ComfyUI証明写真処理ワークフロー、AIFSHによって構築
- HivisionIDPhotos-wechat-weapp:WeChat証明写真ミニプログラム、HivisionIDphotosアルゴリズムに基づく、no1xuanによる貢献
- HivisionIDPhotos-Uniapp:基本のuniapp証明写真ミニプログラムの前部、HivisionIDphotosアルゴリズムに基づく、soulerrorによる貢献
- HivisionIDPhotos-cpp:HivisionIDphotos C++バージョン、zjkhahahによって構築
- HivisionIDPhotos-windows-GUI:Windowsクライアントアプリケーション、zhaoyun0071によって構築
- HivisionIDPhotos-NAS:Synology NAS導入の中国語チュートリアル、ONG-Leoによる貢献
環境のインストールと依存関係:
- Python >= 3.7(プロジェクトは主にpython 3.10でテストされています)
- OS: Linux, Windows, MacOS
git clone https://github.com/Zeyi-Lin/HivisionIDPhotos.git
cd HivisionIDPhotos
condaでpython3.10の仮想環境を作成することをお勧めします。その後、以下のコマンドを実行してください。
pip install -r requirements.txt
pip install -r requirements-app.txt
方法一:スクリプトでダウンロード
python scripts/download_model.py --models all
方法二:直接ダウンロード
プロジェクトのhivision/creator/weights
ディレクトリに保存します:
modnet_photographic_portrait_matting.onnx
(24.7MB): MODNet公式の重み、ダウンロードhivision_modnet.onnx
(24.7MB): 単色背景に対して適応性の高い切り抜きモデル、ダウンロードrmbg-1.4.onnx
(176.2MB): BRIA AIのオープンソース切り抜きモデル、ダウンロード後にrmbg-1.4.onnx
にリネームbirefnet-v1-lite.onnx
(224MB): ZhengPeng7のオープンソース切り抜きモデル、ダウンロード後にbirefnet-v1-lite.onnx
にリネーム
拡張顔検出モデル | 説明 | 使用文書 |
---|---|---|
MTCNN | オフライン顔検出モデル、高性能CPU推論、デフォルトモデル、検出精度は低い | このプロジェクトをクローン後、直接使用 |
Face++ | Megviiが提供するオンライン顔検出API、高精度の検出、公式文書 | 使用文書 |
テスト環境はMac M1 Max 64GB、非GPU加速、テスト画像の解像度は512x715(1)と764×1146(2)。
モデルの組み合わせ | メモリ使用量 | 推論時間(1) | 推論時間(2) |
---|---|---|---|
MODNet + mtcnn | 410MB | 0.207秒 | 0.246秒 |
MODNet + retinaface | 405MB | 0.571秒 | 0.971秒 |
birefnet-v1-lite + retinaface | 6.20GB | 7.063秒 | 7.128秒 |
現在のバージョンでは、NVIDIA GPUで加速可能なモデルはbirefnet-v1-lite
です。約16GBのVRAMが必要であることにご注意ください。
NVIDIA GPUを使用して推論を加速したい場合は、CUDAとcuDNNがインストールされていることを確認した上で、onnxruntime-gpuのドキュメントに従って適切なonnxruntime-gpu
バージョンをインストールし、PyTorchの公式サイトから適切なpytorch
バージョンをインストールしてください。
# もしコンピュータにCUDA 12.xとcuDNN 8がインストールされている場合
# torchのインストールは任意です。cuDNNが設定できない場合は、torchを試してみてください
pip install onnxruntime-gpu==1.18.0
pip install torch --index-url https://download.pytorch.org/whl/cu121
インストールが完了したら、birefnet-v1-lite
モデルを呼び出してGPU加速推論を利用します。
TIPS: CUDAのインストールは下位互換性があります。たとえば、CUDAのバージョンが12.6で、torchが現在対応している最高バージョンが12.4である場合、コンピュータに12.4のバージョンをインストールすることも可能です。
python app.py
プログラムを実行すると、ローカルWebページが生成され、ページ内で証明写真の操作と対話が可能になります。
核心パラメータ:
-i
: 入力画像のパス-o
: 保存画像のパス-t
: 推論タイプ、idphoto、human_matting、add_background、generate_layout_photosから選択可能--matting_model
: 人物切り抜きモデルの重み選択--face_detect_model
: 顔検出モデルの選択
詳細なパラメータはpython inference.py --help
で確認できます。
1枚の写真を入力し、1枚の標準証明写真と1枚の高解像度証明写真の4チャンネル透明PNGを取得します。
python inference.py -i demo/images/test0.jpg -o ./idphoto.png --height 413 --width 295
1枚の写真を入力し、1枚の4チャンネル透明PNGを取得します。
python inference.py -t human_matting -i demo/images/test0.jpg -o ./idphoto_matting.png --matting_model hivision_modnet
1枚の4チャンネル透明PNGを入力し、背景色を追加した3チャンネル画像を取得します。
python inference.py -t add_background -i ./idphoto.png -o ./idphoto_ab.jpg -c 4f83ce -k 30 -r 1
1枚の3チャンネル写真を入力し、1枚の六寸レイアウト写真を取得します。
python inference.py -t generate_layout_photos -i ./idphoto_ab.jpg -o ./idphoto_layout.jpg --height 413 --width 295 -k 200
1枚の4チャンネル写真(切り抜き済みの画像)を入力し、1枚の標準証明写真と1枚の高解像度証明写真の4チャンネル透明PNGを取得します。
python inference.py -t idphoto_crop -i ./idphoto_matting.png -o ./idphoto_crop.png --height 413 --width 295
python deploy_api.py
詳細なリクエスト方法はAPIドキュメントを参照してください。以下のリクエスト例が含まれます:
以下の方法から3つを選択してください。
方法一:最新のイメージをプル:
docker pull linzeyi/hivision_idphotos
方法二:Dockerfileから直接イメージをビルド:
hivision/creator/weights
ディレクトリに少なくとも1つのマスキングモデルの重みファイルがあることを確認してから、プロジェクトのルートディレクトリで以下を実行してください:
docker build -t linzeyi/hivision_idphotos .
方法三:Docker composeでビルド:
hivision/creator/weights
ディレクトリに少なくとも1つのマスキングモデルの重みファイルがあることを確認してから、プロジェクトのルートディレクトリで以下を実行してください:
docker compose build
Gradioデモサービスを起動
次のコマンドを実行し、ローカルで http://127.0.0.1:7860 にアクセスすると使用可能です。
docker run -d -p 7860:7860 linzeyi/hivision_idphotos
APIバックエンドサービスを起動
docker run -d -p 8080:8080 linzeyi/hivision_idphotos python3 deploy_api.py
2つのサービスを同時に起動
docker compose up -d
本プロジェクトは、いくつかの追加設定項目を提供し、環境変数を使用して設定します:
環境変数 | タイプ | 説明 | 例 |
---|---|---|---|
FACE_PLUS_API_KEY | オプション | これはFace++コンソールで申請したAPIキーです。 | 7-fZStDJ···· |
FACE_PLUS_API_SECRET | オプション | Face++ APIキーに対応するSecret | VTee824E···· |
dockerでの環境変数使用例:
docker run -d -p 7860:7860 \
-e FACE_PLUS_API_KEY=7-fZStDJ···· \
-e FACE_PLUS_API_SECRET=VTee824E···· \
linzeyi/hivision_idphotos
- MTCNN:
@software{ipazc_mtcnn_2021,
author = {ipazc},
title = {{MTCNN}},
url = {https://github.com/ipazc/mtcnn},
year = {2021},
publisher = {GitHub}
}
- ModNet:
@software{zhkkke_modnet_2021,
author = {ZHKKKe},
title = {{ModNet}},
url = {https://github.com/ZHKKKe/MODNet},
year = {2021},
publisher = {GitHub}
}
- サイズ: size_list_EN.csv ファイルを修正した後、
app.py
を再実行すれば大丈夫です。最初の列はサイズ名、二番目の列は高さ、三番目の列は幅です。 - 色: color_list_EN.csv ファイルを修正した後、
app.py
を再実行すれば大丈夫です。最初の列は色名、二番目の列はHex値です。
- フォントファイルを
hivision/plugin/font
フォルダーに置きます。 hivision/plugin/watermark.py
ファイル内のfont_file
パラメータの値をフォントファイル名に変更します。
- テンプレート画像を
hivision/plugin/template/assets
フォルダーに置きます。テンプレート画像は4チャンネルの透明PNGです。 hivision/plugin/template/assets/template_config.json
ファイルに最新のテンプレート情報を追加します。ここでwidth
はテンプレート画像の幅(px)、height
はテンプレート画像の高さ(px)、anchor_points
はテンプレートの透明領域の4つの隅の座標(px)です。rotation
は透明領域の垂直方向に対する回転角度で、>0は反時計回り、<0は時計回りです。demo/processor.py
の_generate_image_template
関数内のTEMPLATE_NAME_LIST
変数に最新のテンプレート名を追加します。
demo/assets/title.md
ファイルを修正します。
ご不明な点がございましたら、zeyi.lin@swanhub.coまでメールをお送りください。
Zeyi-Lin、SAKURA-CAT、Feudalman、swpfY、Kaikaikaifang、ShaohonChen、KashiwaByte
This repository is licensed under the Apache-2.0 License.