Spaces:
Running
Running
File size: 9,177 Bytes
90ab8c0 ca46a75 90ab8c0 ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be b306945 ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 d5d20be ca46a75 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 |
---
title: 'HivisionIDPhotos'
emoji: 🌖
colorFrom: green
colorTo: purple
sdk: gradio
sdk_version: 4.43.0
app_file: app.py
pinned: true
---
<div align="center">
<h1>HivisionIDPhoto</h1>
[English](README_EN.md) / 中文 / [日本語](README_JP.md) / [한국어](README_KO.md)
[![GitHub](https://img.shields.io/static/v1?label=GitHub&message=GitHub&color=black)](https://github.com/xiaolin199912/HivisionIDPhotos)
[![SwanHub Demo](https://swanhub.co/git/repo/SwanHub%2FAuto-README/file/preview?ref=main&path=swanhub.svg)](https://swanhub.co/ZeYiLin/HivisionIDPhotos/demo)
[![zhihu](https://img.shields.io/static/v1?label=知乎&message=知乎&color=blue)](https://zhuanlan.zhihu.com/p/638254028)
[![Spaces](https://img.shields.io/badge/🤗-Open%20in%20Spaces-blue)](https://huggingface.co/spaces/TheEeeeLin/HivisionIDPhotos)
<a href="https://docs.qq.com/doc/DUkpBdk90eWZFS2JW" target="_blank">
<img alt="Static Badge" src="https://img.shields.io/badge/WeChat-微信-4cb55e"></a>
<a href="https://trendshift.io/repositories/11622" target="_blank"><img src="https://trendshift.io/api/badge/repositories/11622" alt="Zeyi-Lin%2FHivisionIDPhotos | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
<img src="assets/demoImage.png" width=900>
</div>
<br>
> **相关项目**:
>
> - [SwanLab](https://github.com/SwanHubX/SwanLab):训练人像抠图模型全程用它来分析和监控,以及和实验室同学协作交流,大幅提升了训练效率。
<br>
# 🤩 项目更新
- 在线体验: [![SwanHub Demo](https://img.shields.io/static/v1?label=Demo&message=SwanHub%20Demo&color=blue)](https://swanhub.co/ZeYiLin/HivisionIDPhotos/demo)、[![Spaces](https://img.shields.io/badge/🤗-Open%20in%20Spaces-blue)](https://huggingface.co/spaces/TheEeeeLin/HivisionIDPhotos)
- 2024.9.5: 更新 [Restful API 文档](docs/api_CN.md)
- 2024.9.2: 更新**调整照片 KB 大小**,[DockerHub](https://hub.docker.com/r/linzeyi/hivision_idphotos/tags)
- 2023.12.1: 更新**API 部署(基于 fastapi)**
- 2023.6.20: 更新**预设尺寸菜单**
- 2023.6.19: 更新**排版照**
# Overview
> 🚀 谢谢你对我们的工作感兴趣。您可能还想查看我们在图像领域的其他成果,欢迎来信:zeyi.lin@swanhub.co.
HivisionIDPhoto 旨在开发一种实用的证件照智能制作算法。
它利用一套完善的模型工作流程,实现对多种用户拍照场景的识别、抠图与证件照生成。
**HivisionIDPhoto 可以做到:**
1. 轻量级抠图(仅需 **CPU** 即可快速推理)
2. 根据不同尺寸规格生成不同的标准证件照、六寸排版照
3. 美颜(waiting)
4. 智能换正装(waiting)
<div align="center">
<img src="assets/gradio-image.jpeg" width=900>
</div>
---
如果 HivisionIDPhoto 对你有帮助,请 star 这个 repo 或推荐给你的朋友,解决证件照应急制作问题!
<br>
# 🔧 环境安装与依赖
- Python >= 3.7(项目主要测试在 python 3.10)
- onnxruntime
- OpenCV
- Option: Linux, Windows, MacOS
**1. 克隆项目**
```bash
git clone https://github.com/Zeyi-Lin/HivisionIDPhotos.git
cd HivisionIDPhotos
```
**2. (重要)安装依赖环境**
> 建议 conda 创建一个 python3.10 虚拟环境后,执行以下命令
```bash
pip install -r requirements.txt
pip install -r requirements-app.txt
```
**3. 下载权重文件**
在我们的[Release](https://github.com/Zeyi-Lin/HivisionIDPhotos/releases/tag/pretrained-model)下载权重文件`hivision_modnet.onnx` (24.7MB),存到项目的`hivision/creator/weights`目录下。
<br>
# 🚀 运行 Gradio Demo
```bash
python app.py
```
运行程序将生成一个本地 Web 页面,在页面中可完成证件照的操作与交互。
<br>
# 🚀 Python 推理
## 1. 证件照制作
输入 1 张照片,获得 1 张标准证件照和 1 张高清证件照的 4 通道透明 png
```python
python inference.py -i demo/images/test.jpg -o ./idphoto.png --height 413 --width 295
```
## 2. 增加底色
输入 1 张 4 通道透明 png,获得 1 张增加了底色的图像)
```python
python inference.py -t add_background -i ./idphoto.png -o ./idhoto_ab.jpg -c 000000 -k 30
```
## 3. 得到六寸排版照
输入 1 张 3 通道照片,获得 1 张六寸排版照
```python
python inference.py -t generate_layout_photos -i ./idhoto_ab.jpg -o ./idhoto_layout.jpg --height 413 --width 295 -k 200
```
<br>
# ⚡️ 部署 API 服务
## 启动后端
```
python deploy_api.py
```
## 请求 API 服务 - Python Request
> 请求方式请参考 [API 文档](docs/api_CN.md),含 [cURL](docs/api_CN.md#curl-请求示例)、[Python](docs/api_CN.md#python-请求示例)、[Java](docs/api_CN.md#java-请求示例)、[Javascript](docs/api_CN.md#javascript-请求示例) 请求示例。
### 1. 证件照制作
输入 1 张照片,获得 1 张标准证件照和 1 张高清证件照的 4 通道透明 png
```python
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为一个json格式字典,包含status、image_base64_standard和image_base64_hd三项
print(response)
```
### 2. 增加底色
输入 1 张 4 通道透明 png,获得 1 张增加了底色的图像
```python
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为一个json格式字典,包含status和image_base64
print(response)
```
### 3. 得到六寸排版照
输入 1 张 3 通道照片,获得 1 张六寸排版照
```python
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为一个json格式字典,包含status和image_base64
print(response)
```
<br>
# 🐳 Docker 部署
## 1. 拉取或构建镜像
> 以下方式三选一
**方式一:拉取镜像:**
```bash
docker pull linzeyi/hivision_idphotos:v1
docker tag linzeyi/hivision_idphotos:v1 hivision_idphotos
```
国内拉取加速:
```bash
docker pull registry.cn-hangzhou.aliyuncs.com/swanhub/hivision_idphotos:v1
docker tag registry.cn-hangzhou.aliyuncs.com/swanhub/hivision_idphotos:v1 hivision_idphotos
```
**方式二:Dockrfile 直接构建镜像:**
在确保将模型权重文件[hivision_modnet.onnx](https://github.com/Zeyi-Lin/HivisionIDPhotos/releases/tag/pretrained-model)放到`hivision/creator/weights`下后,在项目根目录执行:
```bash
docker build -t hivision_idphotos .
```
**方式三:Docker compose 构建:**
确保将模型权重文件 [hivision_modnet.onnx](https://github.com/Zeyi-Lin/HivisionIDPhotos/releases/tag/pretrained-model) 放在`hivision/creator/weights`下后,在项目根目录下执行:
```bash
docker compose build
```
镜像打包完成后,运行以下命令启动 Gradio 服务:
```bash
docker compose up -d
```
## 2. 运行 Gradio Demo
等待镜像封装完毕后,运行以下指令,即可开启 Gradio Demo 服务:
```bash
docker run -p 7860:7860 hivision_idphotos
```
在你的本地访问 [http://127.0.0.1:7860](http://127.0.0.1:7860/) 即可使用。
## 3. 运行 API 后端服务
```bash
docker run -p 8080:8080 hivision_idphotos python3 deploy_api.py
```
<br>
# 🌲 友情链接
- [HivisionIDPhotos-windows-GUI](https://github.com/zhaoyun0071/HivisionIDPhotos-windows-GUI)
<br>
# 📖 引用项目
1. MTCNN:
```bibtex
@software{ipazc_mtcnn_2021,
author = {ipazc},
title = {{MTCNN}},
url = {https://github.com/ipazc/mtcnn},
year = {2021},
publisher = {GitHub}
}
```
2. ModNet:
```bibtex
@software{zhkkke_modnet_2021,
author = {ZHKKKe},
title = {{ModNet}},
url = {https://github.com/ZHKKKe/MODNet},
year = {2021},
publisher = {GitHub}
}
```
<br>
# 💻 开发小贴士
**1. 如何修改预设尺寸?**
修改[size_list_CN.csv](demo/size_list_CN.csv)后再次运行 app.py 即可,其中第一列为尺寸名,第二列为高度,第三列为宽度。
<br>
# 📧 联系我们
如果您有任何问题,请发邮件至 zeyi.lin@swanhub.co
<br>
# 贡献者
<a href="https://github.com/Zeyi-Lin/HivisionIDPhotos/graphs/contributors">
<img src="https://contrib.rocks/image?repo=Zeyi-Lin/HivisionIDPhotos" />
</a>
[Zeyi-Lin](https://github.com/Zeyi-Lin)、[SAKURA-CAT](https://github.com/SAKURA-CAT)、[Feudalman](https://github.com/Feudalman)、[swpfY](https://github.com/swpfY)、[Kaikaikaifang](https://github.com/Kaikaikaifang)、[ShaohonChen](https://github.com/ShaohonChen)、[KashiwaByte](https://github.com/KashiwaByte)
<br>
# StarHistory
[![Star History Chart](https://api.star-history.com/svg?repos=Zeyi-Lin/HivisionIDPhotos&type=Date)](https://star-history.com/#Zeyi-Lin/HivisionIDPhotos&Date) |