/vton

Primary LanguageJupyter NotebookMozilla Public License 2.0MPL-2.0

Vitrual Try On Flask

虚拟试衣网络的核心代码仓库。

实现功能:

  • 实现快速的人体图和衣服图到穿搭图片的合成
  • 基于Flask提供Web服务和后端响应服务
  • 基于SKU提供推荐穿搭功能
  • 基于安卓提供多平台客户端

启动:python main.py

如果你只是想使用纯网络模型,请见Model.py和模板notebook

其中核心的外部调用接口为predict函数,关注文档注释提及的5个flag参数即可。

def predict(self, human_img, c_img, need_pre=True, need_bright=False, keep_back=False, need_dilate=False, check_dirty=False):
    '''
    输入:
        human_img为人体图片,c_img为衣服图片,均为numpy array with shape(256,192,3) RGB
    五个flag:
        need_pre为是否需要预处理(crop+resize到256*192),在LIP数据集上关闭need_pre效果较好(upsample损失)
        need bright为亮度增强,
        keep back为基于mask保持除了上衣以外的部分,
        need dilate为膨胀柔化keep back的mask,需要keep_back开启 
        check_dirty为增加检查数据是否有肢体遮挡交叉(可能检测不全)  
    返回:
        一个(256,192,3)的穿上衣服的图片,
        画面中人体的置信度,0则为触发强排除条件(检测难样本等)
    '''
    ...

依赖

torch==1.2.0
tensorflow==1.12.0
torchvision==0.2.0

目前代码需要在GPU环境运行,若要修改到CPU环境,请删除所有CPVTON.py和Networks.py两个文件中所有的.cuda()调用。

占用

显存约占用7.12GB,单张图片预测约为0.62s(JPPNet 0.6s, CPVTON 0.02s)。
若关注Real Time,请更换人体特征提取思路,如尝试使用CE2P

文件说明

文件名 功能
main.py flask服务相关
get.py 向flask发起predict请求
Model.py 提供虚拟试衣网络的外部接口
CPVTON.py CPVTON模型整合预测代码
networks.py CPVTON模型网络定义
JPPNet.py JPP-Net 预测代码
static/* flask的静态访问资源
data/*, example/* 样例测试图片
template/* flask的模板html based on Jinjia
checkpoints/* 存预训练模型
match_server* 提供衣服推荐接口相关逻辑

checkpoints下载

coming soon..
download link

参考

模型的设计基于JPP-Net与CPVTON,及其开源代码。

VITON: An Image-based Virtual Try-on Network,Xintong Han, Zuxuan Wu, Zhe Wu, Ruichi Yu, Larry S. Davis. CVPR 2018

(CP-VTON) Toward Characteristic-Preserving Image-based Virtual Try-On Networks, Bochao Wang, Huabin Zheng, Xiaodan Liang, Yimin Chen, Liang Lin, Meng Yang. ECCV 2018

(JPP-Net)Look into Person: Joint Body Parsing & Pose Estimation Network and A New Benchmark, Xiaodan Liang, Ke Gong, Xiaohui Shen, Liang Lin, T-PAMI 2018.


Powered By Imba, JD Digits