HivisionIDPhotos/README_JP.md
2024-09-08 13:51:44 +08:00

16 KiB
Raw Blame History

hivision_logo

HivisionIDPhoto

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



関連プロジェクト

  • SwanLab:トレーニング用のポートレート切り抜きモデルの分析と監視に使用し、実験室の仲間と協力してコミュニケーションを取ることで、トレーニング効率を大幅に向上させました。

目次


🤩 プロジェクトの更新

  • オンライン体験: SwanHub DemoSpaces

  • 2024.09.08: 新しい背景除去モデル RMBG-1.4 を追加しました | ComfyUI ワークフロー - HivisionIDPhotos-ComfyUIAIFSH によって提供されました

  • 2024.09.07: 顔検出APIオプション Face++を追加し、より高精度な顔検出を実現

  • 2024.09.06: 新しい切り抜きモデル modnet_photographic_portrait_matting.onnxを追加

  • 2024.09.05: Restful API ドキュメントを更新

  • 2024.09.02: 写真のKBサイズ調整を更新、DockerHub

  • 2023.12.01: **APIデプロイfastapiベース**を更新

  • 2023.06.20: プリセットサイズメニューを更新

概要

🚀 私たちの仕事に興味を持っていただきありがとうございます。画像分野での他の成果もご覧になりたい場合は、zeyi.lin@swanhub.coまでご連絡ください。

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

このアルゴリズムは、さまざまなユーザーの撮影シーンを認識し、切り抜き、証明写真を生成するために、整ったAIモデルのワークフローを利用しています。

HivisionIDPhotoは次のことができます

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

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


🔧 準備作業

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

  • 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): 単色背景に適した切り抜きモデル、ダウンロード
  • mnn_hivision_modnet.mnn (24.7MB): mnn変換後の切り抜きモデル by zjkhahahダウンロード
  • rmbg-1.4.onnx (176.2MB): BRIA AIからのオープンソースマッティングモデルです。ダウンロードして、rmbg-1.4.onnxに名前を変更してください。

4. 顔検出モデルの設定

これはオプションです。

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

🚀 Gradioデモの実行

python app.py

プログラムを実行すると、ローカルWebページが生成され、そのページで証明写真の操作とインタラクションができます。


🚀 Python推論

コアパラメータ:

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

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

1. 証明写真の制作

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

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

2. 人物切り抜き

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

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

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

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

4. 六寸レイアウト写真の生成

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

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

APIサービスのデプロイ

バックエンドの起動

python deploy_api.py

APIサービスのリクエスト - Pythonリクエスト

リクエスト方法についてはAPI文書を参照してください。これにはcURLPythonJavaJavascriptリクエスト例が含まれます。

1. 証明写真の制作

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

import requests

url = "http://127.0.0.1:8080/idphoto"
input_image_path = "demo/images/test.jpg"

files = {"input_image": open(input_image_path, "rb")}
data = {"height": 413, "width": 295}

response = requests.post(url, files=files, data=data).json()

# responseはstatus、image_base64_standard、image_base64_hdの3項目を含むjson形式の辞書です
print(response)

2. 背景色の追加

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

import requests

url = "http://127.0.0.1:8080/add_background"
input_image_path = "test.png"

files = {"input_image": open(input_image_path, "rb")}
data = {"color": '638cce', 'kb': None}

response = requests.post(url, files=files, data=data).json()

# responseはstatusとimage_base64を含むjson形式の辞書です
print(response)

3. 六寸レイアウト写真の生成

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

import requests

url = "http://127.0.0.1:8080/generate_layout_photos"
input_image_path = "test.jpg"

files = {"input_image": open(input_image_path, "rb")}
data = {"height": 413, "width": 295, "kb": 200}

response = requests.post(url, files=files, data=data).json()

# responseはstatusとimage_base64を含むjson形式の辞書です
print(response)

🐳 Dockerデプロイ

1. イメージのプルまたは構築

以下の3つの方法のいずれかを選択

方法一:最新イメージをプル:

docker pull linzeyi/hivision_idphotos

方法二Dockerfileから直接イメージを構築

モデル重みファイルhivision_modnet.onnxhivision/creator/weightsに置いた後、プロジェクトのルートディレクトリで実行:

docker build -t linzeyi/hivision_idphotos .

方法三Docker composeで構築

モデル重みファイルhivision_modnet.onnxhivision/creator/weightsに置いた後、プロジェクトのルートディレクトリで実行:

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}
}

💻 開発のヒント

1. プリセットサイズを変更するには?

size_list_CN.csvを変更後、再度app.pyを実行すればOKです。第一列はサイズ名、第二列は高さ、第三列は幅です。


📧 お問い合わせ

ご不明な点がございましたら、zeyi.lin@swanhub.coまでメールしてください。


貢献者

Zeyi-LinSAKURA-CATFeudalmanswpfYKaikaikaifangShaohonChenKashiwaByte


StarHistory

Star History Chart