Skip to content

Latest commit

 

History

History
460 lines (301 loc) · 22.5 KB

README_JP.md

File metadata and controls

460 lines (301 loc) · 22.5 KB
hivision_logo

HivisionIDPhoto

English / 中文 / 日本語 / 한국어



関連プロジェクト

  • SwanLab:人物切り抜きモデルの訓練を通じて、分析と監視、ラボの仲間との協力と交流を行い、訓練効率を大幅に向上させました。

目次


🤩 最近の更新

  • オンライン体験: SwanHub DemoSpaces

  • 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デモに顔回転対応機能を追加、カスタムサイズ入力にミリメートルをサポート

  • 2024.09.14: GradioデモにカスタムDPI機能を追加、日本語と韓国語を追加,明るさ、コントラスト、鮮明度の調整機能を追加

  • 2024.09.12: Gradioデモにホワイトニング機能を追加 | APIインターフェースにウォーターマーク追加写真のKBサイズ設定証明写真のトリミングを追加


プロジェクト概要

🚀 私たちの仕事に興味を持っていただきありがとうございます。画像分野における他の成果もぜひご覧ください。お問い合わせは、[email protected] まで。

HivisionIDPhotoは、実用的で体系的な証明写真のスマート制作アルゴリズムを開発することを目的としています。

さまざまなユーザー撮影シーンの認識、切り抜きおよび証明写真の生成を実現するために、一連の洗練されたAIモデル作業フローを利用しています。

HivisionIDPhotoは以下のことができます:

  1. 軽量切り抜き(完全オフラインで、CPUのみで迅速に推論可能)
  2. 異なるサイズ仕様に基づいて異なる標準証明写真、六寸レイアウト写真を生成
  3. 完全オフラインまたはエッジクラウド推論をサポート
  4. 美顔(待機中)
  5. スマートな正装変更(待機中)

HivisionIDPhotoがあなたに役立つ場合は、このリポジトリをスターしたり、友人に推薦したりして、証明写真の緊急制作の問題を解決してください!


🏠 コミュニティ

私たちは、コミュニティによって構築されたHivisionIDPhotosの興味深いアプリケーションや拡張機能をいくつか共有しています:

ComfyUI workflow

HivisionIDPhotos-wechat-weapp

  • HivisionIDPhotos-Uniapp:基本のuniapp証明写真ミニプログラムの前部、HivisionIDphotosアルゴリズムに基づく、soulerrorによる貢献

HivisionIDPhotos-uniapp


🔧 準備作業

環境のインストールと依存関係:

  • Python >= 3.7(プロジェクトは主にpython 3.10でテストされています)
  • OS: Linux, Windows, MacOS

1. プロジェクトをクローンする

git clone https://github.com/Zeyi-Lin/HivisionIDPhotos.git
cd  HivisionIDPhotos

2. 依存環境をインストールする

condaでpython3.10の仮想環境を作成することをお勧めします。その後、以下のコマンドを実行してください。

pip install -r requirements.txt
pip install -r requirements-app.txt

3. 重みファイルをダウンロードする

方法一:スクリプトでダウンロード

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にリネーム

4. 顔検出モデルの設定(オプション)

拡張顔検出モデル 説明 使用文書
MTCNN オフライン顔検出モデル、高性能CPU推論、デフォルトモデル、検出精度は低い このプロジェクトをクローン後、直接使用
Face++ Megviiが提供するオンライン顔検出API、高精度の検出、公式文書 使用文書

5. パフォーマンスリファレンス

テスト環境は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秒

6. GPU推論の加速(オプション)

現在のバージョンでは、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ページが生成され、ページ内で証明写真の操作と対話が可能になります。


🚀 Python推論

核心パラメータ:

  • -i: 入力画像のパス
  • -o: 保存画像のパス
  • -t: 推論タイプ、idphoto、human_matting、add_background、generate_layout_photosから選択可能
  • --matting_model: 人物切り抜きモデルの重み選択
  • --face_detect_model: 顔検出モデルの選択

詳細なパラメータはpython inference.py --helpで確認できます。

1. 証明写真の作成

1枚の写真を入力し、1枚の標準証明写真と1枚の高解像度証明写真の4チャンネル透明PNGを取得します。

python inference.py -i demo/images/test0.jpg -o ./idphoto.png --height 413 --width 295

2. 人物切り抜き

1枚の写真を入力し、1枚の4チャンネル透明PNGを取得します。

python inference.py -t human_matting -i demo/images/test0.jpg -o ./idphoto_matting.png --matting_model hivision_modnet

3. 透明画像に背景色を追加

1枚の4チャンネル透明PNGを入力し、背景色を追加した3チャンネル画像を取得します。

python inference.py -t add_background -i ./idphoto.png -o ./idphoto_ab.jpg -c 4f83ce -k 30 -r 1

4. 六寸レイアウト写真の取得

1枚の3チャンネル写真を入力し、1枚の六寸レイアウト写真を取得します。

python inference.py -t generate_layout_photos -i ./idphoto_ab.jpg -o ./idphoto_layout.jpg --height 413 --width 295 -k 200

5. 証明写真のトリミング

1枚の4チャンネル写真(切り抜き済みの画像)を入力し、1枚の標準証明写真と1枚の高解像度証明写真の4チャンネル透明PNGを取得します。

python inference.py -t idphoto_crop -i ./idphoto_matting.png -o ./idphoto_crop.png --height 413 --width 295

⚡️ APIサービスのデプロイ

バックエンドを起動

python deploy_api.py

APIサービスにリクエスト

詳細なリクエスト方法はAPIドキュメントを参照してください。以下のリクエスト例が含まれます:


🐳 Dockerデプロイ

1. イメージをプルまたはビルドする

以下の方法から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

2. サービスを実行

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 

📖 プロジェクトの引用

  1. MTCNN:
@software{ipazc_mtcnn_2021,
    author = {ipazc},
    title = {{MTCNN}},
    url = {https://github.com/ipazc/mtcnn},
    year = {2021},
    publisher = {GitHub}
}
  1. ModNet:
@software{zhkkke_modnet_2021,
    author = {ZHKKKe},
    title = {{ModNet}},
    url = {https://github.com/ZHKKKe/MODNet},
    year = {2021},
    publisher = {GitHub}
}

よくある質問 (FAQ)

1. 基本的なサイズと色をどのように変更しますか?

  • サイズ: size_list_EN.csv ファイルを修正した後、app.pyを再実行すれば大丈夫です。最初の列はサイズ名、二番目の列は高さ、三番目の列は幅です。
  • 色: color_list_EN.csv ファイルを修正した後、app.pyを再実行すれば大丈夫です。最初の列は色名、二番目の列はHex値です。

2. ウォーターマークのフォントをどのように変更しますか?

  1. フォントファイルをhivision/plugin/fontフォルダーに置きます。
  2. hivision/plugin/watermark.pyファイル内のfont_fileパラメータの値をフォントファイル名に変更します。

3. ソーシャルメディアのテンプレート画像をどのように追加しますか?

  1. テンプレート画像をhivision/plugin/template/assetsフォルダーに置きます。テンプレート画像は4チャンネルの透明PNGです。
  2. hivision/plugin/template/assets/template_config.jsonファイルに最新のテンプレート情報を追加します。ここでwidthはテンプレート画像の幅(px)、heightはテンプレート画像の高さ(px)、anchor_pointsはテンプレートの透明領域の4つの隅の座標(px)です。rotationは透明領域の垂直方向に対する回転角度で、>0は反時計回り、<0は時計回りです。
  3. demo/processor.py_generate_image_template関数内のTEMPLATE_NAME_LIST変数に最新のテンプレート名を追加します。

4. Gradio Demoの上部ナビゲーションバーをどのように変更しますか?

  • demo/assets/title.mdファイルを修正します。

📧 お問い合わせ

ご不明な点がございましたら、[email protected]までメールをお送りください。


貢献者

Zeyi-LinSAKURA-CATFeudalmanswpfYKaikaikaifangShaohonChenKashiwaByte


Thanks for support

Stargazers repo roster for @Zeyi-Lin/HivisionIDPhotos

Forkers repo roster for @Zeyi-Lin/HivisionIDPhotos

Star History Chart


Lincese

This repository is licensed under the Apache-2.0 License.