Skip to content

Latest commit

 

History

History
399 lines (265 loc) · 15.4 KB

README_KO.md

File metadata and controls

399 lines (265 loc) · 15.4 KB
hivision_logo

HivisionIDPhoto

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



관련 프로젝트

  • SwanLab:인물 컷아웃 모델의 훈련을 통해, 분석과 감시, 연구실 동료들과의 협력 및 교류를 진행하여 훈련 효율성을 크게 향상시켰습니다.

목차


🤩 최근 업데이트

  • 온라인 체험: SwanHub DemoSpaces

  • 2024.09.09: 새로운 배경 제거 모델 BiRefNet-v1-lite 추가 | Gradio에 고급 매개변수 설정워터마크 탭 추가

  • 2024.09.08: 새로운 컷아웃 모델 RMBG-1.4 추가 | ComfyUI 워크플로우 - HivisionIDPhotos-ComfyUI AIFSH의 기여

  • 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 기반) 업데이트


프로젝트 개요

🚀 우리의 작업에 관심을 가져 주셔서 감사합니다. 이미지 분야의 다른 성과도 꼭 확인해 주시기 바랍니다. 문의는 zeyi.lin@swanhub.co로 해주세요.

HivisionIDPhoto는 실용적이고 체계적인 증명사진의 스마트 제작 알고리즘을 개발하는 것을 목표로 합니다.

다양한 사용자 촬영 장면의 인식, 컷아웃 및 증명사진 생성을 실현하기 위해 일련의 세련된 AI 모델 작업 흐름을 활용하고 있습니다.

HivisionIDPhoto는 다음과 같은 기능을 제공합니다:

  1. 경량 컷아웃 (완전 오프라인에서, CPU만으로 신속한 추론 가능)
  2. 다양한 사이즈 사양에 따라 다양한 표준 증명사진, 육寸 레이아웃 사진 생성
  3. 완전 오프라인 또는 엣지 클라우드 추론 지원
  4. 미용 (대기 중)
  5. 스마트한 정장 변경 (대기 중)

HivisionIDPhoto가 여러분에게 도움이 된다면, 이 리포지토리를 스타하거나 친구에게 추천하여 증명사진의 긴급 제작 문제를 해결해 주세요!


🏠 커뮤니티

우리는 커뮤니티에 의해 구축된 HivisionIDPhotos의 흥미로운 애플리케이션 및 확장 기능을 몇 가지 공유합니다:


🔧 준비 작업

환경 설치 및 의존성:

  • 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. 가중치 파일 다운로드하기

방법 1: 스크립트를 통해 다운로드

python scripts/download_model.py --models all

방법 2: 직접 다운로드

프로젝트의 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. GPU 추론 가속 (선택 사항)

NVIDIA GPU를 통한 추론 가속을 사용하려면 CUDA와 cuDNN이 설치되어 있는지 확인하고, 문서에 따라 해당 onnxruntime-gpu 버전을 설치합니다. 예:

# CUDA 12.x, cuDNN 8
pip install onnxruntime-gpu==1.18.0

완료 후, birefnet-v1-lite 모델을 호출하면 GPU에 의한 추론 가속이 이용됩니다.


🚀 데모 실행

python app.py

프로그램을 실행하면 로컬 웹 페이지가 생성되어 페이지 내에서 증명사진의 조작 및 상호작용이 가능합니다.


🚀 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/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를 입력하여 배경색이 추가된 이미지를 얻습니다.

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

⚡️ API 서비스 배포

백엔드 시작

python deploy_api.py

API 서비스에 요청

자세한 요청 방법은 API 문서를 참조해 주세요. 아래의 요청 예시가 포함됩니다:


🐳 Docker 배포

1. 이미지 풀 또는 빌드하기

아래의 방법 중 3가지를 선택해 주세요.

방법 1: 최신 이미지 풀하기:

docker pull linzeyi/hivision_idphotos

방법 2: Dockerfile에서 직접 이미지 빌드하기:

모델 가중치 파일 hivision_modnet.onnxhivision/creator/weights에 배치한 것을 확인한 후, 프로젝트의 루트 디렉토리에서 실행:

docker build -t linzeyi/hivision_idphotos .

방법 3: 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

두 개의 서비스를 동시에 시작합니다

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

💻 개발 팁

기본 크기와 색상을 어떻게 수정하나요?**

  • 크기: size_list_EN.csv 파일을 수정한 후 app.py를 다시 실행하면 됩니다. 첫 번째 열은 크기 이름, 두 번째 열은 높이, 세 번째 열은 너비입니다.
  • 색상: color_list_EN.csv 파일을 수정한 후 app.py를 다시 실행하면 됩니다. 첫 번째 열은 색상 이름, 두 번째 열은 Hex 값입니다.

워터마크 폰트 변경 방법

  1. 폰트 파일을 hivision/plugin/font 폴더에 배치합니다.
  2. hivision/plugin/watermark.pyfont_file 매개변수 값을 폰트 파일 이름으로 변경합니다.

📧 문의하기

궁금한 점이 있으시면 zeyi.lin@swanhub.co로 이메일을 보내 주세요.


기여자

Zeyi-LinSAKURA-CATFeudalmanswpfYKaikaikaifangShaohonChenKashiwaByte


StarHistory

Star History Chart