관련 프로젝트:
- SwanLab:인물 사진 모델의 학습을 분석 및 모니터링하고 실험실 동료와 협업하여 학습 효율성을 크게 향상시키기 위해 사용되었습니다.
- 온라인 체험: 、
- 2024.9.2: 사진 KB 크기 조정 업데이트,DockerHub
- 2023.12.1: API 배포(fastapi 기반) 업데이트
- 2023.6.20: 미리 설정된 사이즈 메뉴 업데이트
- 2023.6.19: 레이아웃 사진 업데이트
🚀 저희 작업에 관심을 가져주셔서 감사합니다. 이미지 분야의 다른 성과도 확인해보시기 바랍니다. 문의사항은 이메일로 연락주세요: zeyi.lin@swanhub.co.
HivisionIDPhoto는 실용적인 증명사진 자동 생성 알고리즘을 개발하는 것을 목표로 합니다.
이 프로젝트는 다양한 사용자 촬영 장면을 인식하고, 인물 사진을 배경에서 분리하여 증명사진을 생성할 수 있는 포괄적인 모델 워크플로우를 활용합니다.
HivisionIDPhoto는 다음을 수행할 수 있습니다:
- 경량화된 배경 제거 (CPU만으로도 빠르게 추론 가능)
- 다양한 크기 규격에 따라 표준 증명사진 및 여섯 컷 레이아웃 사진 생성
- 미화(추후 지원 예정)
- 지능형 정장 변경(추후 지원 예정)
HivisionIDPhoto가 유용하셨다면, 이 저장소에 별을 달거나 친구들에게 추천하여 증명사진 응급 제작 문제를 해결해보세요!
- Python >= 3.7 (프로젝트는 주로 Python 3.10에서 테스트되었습니다)
- onnxruntime
- OpenCV
- 선택 사항: Linux, Windows, MacOS
1. 프로젝트 클론
git clone https://github.com/Zeyi-Lin/HivisionIDPhotos.git
cd HivisionIDPhotos
2. (중요함) 의존성 설치
conda를 사용하여 Python 3.10 가상 환경을 만든 다음 다음 명령을 실행하는 것이 좋습니다.
pip install -r requirements.txt
pip install -r requirements-app.txt
3. 모델 가중치 다운로드
Release에서 무게 파일 'hivision_modnet.onnx' (24.7MB)을 다운로드하여 프로젝트의 'hivision/creator/weights' 디렉토리에 저장하십시오.
1장의 사진을 입력하여 1장의 표준 신분증 사진과 1장의 고화질 신분증 사진의 4채널 투명 PNG를 얻습니다.
python inference.py -i demo/images/test.jpg -o ./idphoto.png --height 413 --width 295
1장의 4채널 투명 PNG를 입력하여 배경색이 추가된 1장의 이미지를 얻습니다.
python inference.py -t add_background -i ./idphoto.png -o ./idhoto_ab.jpg -c 000000 -k 30
1장의 3채널 사진을 입력하여 1장의 6인치 레이아웃 사진을 얻습니다.
python inference.py -t generate_layout_photos -i ./idhoto_ab.jpg -o ./idhoto_layout.jpg --height 413 --width 295 -k 200
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를 포함한 JSON 형식의 딕셔너리입니다.
print(response)
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)
1장의 3채널 사진을 입력하여 1장의 6인치 레이아웃 사진을 얻습니다.
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)
더 많은 요청 방법은 API 문서를 참조하세요. Python 스크립트 요청, Python Request 요청, Java 요청이 포함되어 있습니다.
다음 방법 중 하나를 선택하세요
방법 1: 이미지 가져오기:
docker pull linzeyi/hivision_idphotos:v1
docker tag linzeyi/hivision_idphotos:v1 hivision_idphotos
방법 2: Dockerfile로 직접 이미지 빌드:
모델 가중치 파일 hivision_modnet.onnx을 hivision/creator/weights
디렉토리에 넣은 후, 프로젝트 루트 디렉토리에서 다음을 실행합니다:
docker build -t hivision_idphotos .
방법 3: Docker compose로 빌드:
모델 가중치 파일 hivision_modnet.onnx을 hivision/creator/weights
디렉토리에 넣은 후, 프로젝트 루트 디렉토리에서 다음을 실행합니다:
docker compose build
이미지 패키징이 완료되면, 다음 명령을 실행하여 Gradio 서비스를 시작합니다:
docker compose up -d
이미지 패키징이 완료되면, 다음 명령을 실행하여 Gradio Demo 서비스를 시작합니다:
docker run -p 7860:7860 hivision_idphotos
로컬에서 http://127.0.0.1:7860에 접속하여 사용할 수 있습니다.
docker run -p 8080:8080 hivision_idphotos python3 deploy_api.py
- 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}
}
1. 미리 설정된 사이즈를 어떻게 수정하나요?
size_list_CN.csv을 수정한 후 app.py 를 다시 실행하세요. 첫 번째 열은 사이즈 이름, 두 번째 열은 높이, 세 번째 열은 너비입니다.
문의사항이 있으시면 zeyi.lin@swanhub.co 로 이메일을 보내주세요.
Zeyi-Lin、SAKURA-CAT、Feudalman、swpfY、Kaikaikaifang、ShaohonChen、KashiwaByte