基于3D人像复原技术的试衣平台

基于3D人像复原技术的试衣平台

摘要

近年来,随着社会的进步与发展,人们的物质生活得到了极大的丰富,对衣食住行的要求也越来越高,为了更好地适应现代化生活的需求,网上试衣软件、平台的研究也一直没有停止过,目前国内外都在积极的构建和完善自己国家的人体体型数据库。
2019年3月19日,根据官方消息,云从科技基于单帧图像的3D人体建模重建技术同时在Human3.6M、Surreal和UP-3D三大数据集上创造了最新的世界纪录,将原有的最低误差纪录大幅降低了30%。从照片快速重建人体的三维模型,将传统的人体建模过程由三步降低到两步,极大程度上简化了三维建模的流程,节约的人力物力成本,对于游戏、电影、计算机视觉等领域具有重要的意义。
本文从项目的研究背景和意义出发,搭建试衣平台:衣吧,可以应用于普通用户上传个人全身照进行提取人体模型以及模型试衣功能,研究了通过普通摄像头的二维图像为基础的人体三维模型的重建。最后,对下一步的工作进行了展望。本文的主要研究工作和贡献如下:
1.衣吧试衣平台。基于Python、Django的搭建试衣平台:衣吧,该平台可通过用户上传的单张全身照实现对人体关键点的检测以及人体骨架的提取;
2. 图像获取部分。通过用户上传单张个人全身照;
3. 图像预处理部分。主要采用了OpenCV对图像的图像阈值、图像平滑、形态学转换进行了处理。
4. 人体关键点检测。采用Harris角点检测、SIFT关键点检测、角点检测的FAST算法以及ORB算法分别对用户上传的图像进行人体关键点检测,选择特征提取与描述以及执行效率最优的算法。
5. 人体骨架提取。采用OpenCV库计算生态骨架(morphological skeleton)。
关键词:三维人体重建, ORB图像特征提取, 试衣平台, OpenCV

Fitting Platform Based on 3D Human Image Restoration Technology

ABSTRACT

In recent years, with the progress and development of society, people’s material life has been greatly enriched, and the requirements for clothing, food, housing and transportation have become higher and higher. In order to better adapt to the needs of modern life, the research on online fitting software and platform has never stopped. At present, both at home and abroad are actively building and improving their own national body shape database.
On March 19, 2019, according to the official news, the 3D human modeling and reconstruction technology based on single frame image of Yuncong technology has set the latest world record on three data sets of human3.6m, surreal and up-3d, greatly reducing the original minimum error record by 30%. The rapid reconstruction of three-dimensional human body model from photos reduces the traditional human body modeling process from three steps to two steps, greatly simplifies the process of three-dimensional modeling, saves the cost of human and material resources, and is of great significance in the fields of games, movies, computer vision, etc.
Starting from the research background and significance of the project, this paper builds a fitting platform: clothing bar, which can be used for ordinary users to upload personal full body photos to extract the human body model and model fitting function, and studies the reconstruction of the three-dimensional human body model based on the two-dimensional image of the ordinary camera. Finally, the future work is prospected. The main research work and contributions of this paper are as follows:
Dressing bar fitting platform. Build a fitting platform based on Python and Django: clothing bar, the platform can detect the key points of human body and extract the skeleton of human body through a single full body photo uploaded by users;
Image acquisition part. Upload a single full body photo through the user;
Image preprocessing part. Opencv is mainly used to process image threshold, image smoothing and morphological transformation.
Detection of key points of human body. The fast algorithm of Harris corner detection, sift key point detection, corner point detection and orb algorithm are used to detect the human body key point of the image uploaded by the user, and the algorithm of feature extraction and description as well as the best execution efficiency is selected.
Human skeleton extraction. Opencv library was used to calculate the ecological skeleton.

Key words: 3D human reconstruction, orb image feature extraction, fitting platform, OpenCV

目录

第1章 绪论 7
1.1 引言 7
1.2 本文主要研究内容 8
第2章 关键技术综述 9
2.1 OpenCV 9
2.2 Python 9
2.2 Django 10
第3章 图像特征获取与描述 11
3.1 图像预处理技术 11
3.1.1 图像阈值 11
3.1.2 图像平滑 11
3.1.3 形态学转换 11
3.2 人体关键点检测技术 12
3.2.1 Harris角点检测 12
3.2.2 SIFT关键点检测 12
3.2.3 FAST算法 13
3.2.4 ORB算法 14
3.3 人体骨架提取 15
3.2.1 OpenCV库计算生态骨架 15
3.2.2 算法步骤 15
第4章 衣吧试衣平台设计与实现 16
4.1 需求分析 16
4.1.1 功能需求 16
4.1.2 系统配置 16
4.2 数据库设计 16
4.3 系统实现与平台展示 18
4.3.1 衣吧 照片建模 18
4.3.2 衣吧 储衣间 19
4.3.3 衣吧 模型试衣间 20
第5章 21
5.1 工作总结 21
5.2 未来展望 21
参考文献 23

第一章 绪论

1.1引言

近年来愈发成熟和普及的AR、VR技术,无一不是依赖三维重建技术。目前网络购物愈发普及,这就导致很多的商家为了吸引顾客,减少顾客的差评率,让顾客的体验感达到极致,需要实现网上试衣的功能,网上试衣离不开三维建模。
目前不管是基于视频流还是基于多图重建三维模型的技术都逐渐的走向成熟。2017年CVPR国际会议提出一种基于单张照片的三维模型预测网络,可以对单张图片中的物体进行三维预测,通过三维的点图绘制出照片中物体的三维模型。2018年全球人工智能与机器人峰会(CCF-GAIR)在深圳召开,峰会由中国计算机学会(CCF)主办,香港科技大学教授,ICCV 2011主席,IEEE Fellow权龙教授发表题为“计算机视觉,识别与三维重建”的精彩演讲中提到在识别的基础上,计算机视觉下一步必须走向三维重建。2019年3月19日,根据官方消息,云从科技基于单帧图像的3D人体建模重建技术同时在Human3.6M、Surreal和UP-3D三大数据集上创造了最新的世界纪录,将原有的最低误差纪录大幅降低了30%。从照片快速重建人体的三维模型,将传统的人体建模过程由三步降低到两步,极大程度上简化了三维建模的流程,节约的人力物力成本,对于游戏、电影、计算机视觉等领域具有重要的意义。
通过传统的三维建模方法所需要的人力物力资源较为庞大,对于大规模的模型重建来说,具有极大的不便性。通过深度学习,机器学习进行三维模型的预测与重建所需要的先决条件较少,可以实现大规模重建。目前国内外都在积极的构建自己国家的人体体型数据库,为计算机下一步视觉走下三维重建做准备。
目前,国内外对于网上虚拟试衣系统一直处于初级探索阶段,有些试衣软件在用户上传自己的照片之后,建立的模型只是将人脸更换了,并没有在人体体型上做任何改变。还有一些试衣网站有不同的体型的模特供消费者选择,消费者需要输入自己的身体关键部位的参数,就能够生成与自己的体型相似的模特,试穿衣服。

1.2本文主要研究内容

本文研究的具体内容如下:
衣吧试衣平台。设计实现基于Python,Django的试衣平台,该平台主要通过接收用户上传的图片,对上传的图片进行处理之后,将建立的模型在该平台进行显示,用于之后进行模型试衣。
图像预处理。主要采用了OpenCV对图像的图像阈值、图像平滑、形态学转换进行了处理。
人体关键点检测。采用Harris角点检测、SIFT关键点检测、角点检测的FAST算法以及ORB算法分别对用户上传的图像进行人体关键点检测,选择特征提取与描述以及执行效率最优的算法。
人体骨架提取。采用OpenCV库计算生态骨架(morphological skeleton)。

第2章 关键技术综述

2.1 OpenCV

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。该库也有大量的Python的接口。如今也提供对于C#、Ch、Ruby,GO的支持。
OpenCV 拥有包括 500 多个C函数的跨平台的中、高层 API。它不依赖于其它的外部库——尽管也可以使用某些外部库。
OpenCV可以在Windows,Android,Maemo,FreeBSD,OpenBSD,iOS,Linux 和Mac OS等平台上运行。使用者可以在 SourceForge 获得官方版本,或者从 SVN 获得开发版本。OpenCV也是用CMake。
OpenCV有多种优化过的算法,这戏算法主要应用与物体识别、图像分割、动作识别、运动跟踪、机器人、人脸识别、运动分析、机器视觉等。

2.2 Python

Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),逐渐用于独立的、大型项目的开发。
Python是一种解释型脚本语言,主要应用于人工智能、软件开发、后端开发、网络爬虫、科学计算和统计以及桌面开发等领域。
Python用作科学计算的优势如下:
Python完全免费,众多开源的科学计算库都提供了Python的调用接口。用户可以在任何计算机上免费安装Python及其绝大多数扩展库。
Python是一门更易学、更严谨的程序设计语言。它能让用户编写出更易读、易维护的代码。
Python有着丰富的扩展库,可以轻易完成各种高级任务,开发者可以用Python实现完整应用程序所需的各种功能。

2.3 Django

Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的。于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。
Django是Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架。在Dj ango框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性。
Django可以运行在Apache,Nginx上,也可以运行在支持WSGI,FastCGI的服务器上。支持多种数据库Postgresql,MySql, Sqlite3,Oracle。

第3章图像特征获取与描述

3.1 图像预处理技术

3.1.1 图像阈值
我们知道图像阈值分为简单阈值、全局阈值和Otsu二值化。采用OpenCV中的cv2.threshold(),为图像的像素设定一个阈值,当像素值高于阈值时,我们给这个像素赋予一个新值(白色),否则的话,就给它赋予另外一种颜色(可能是黑色)。如果使用全局阈值,就相当于是随便给一个数做阈值,效果的好坏就需要不断的尝试,这样会加大工作量。所以,在这里我们使用函数cv2.threshold时会多传入一个参数(flag):cv2.THRESH_OTSU,这时要将阈值设置为0,然后算法会找到最优阈值。
在本次项目中,会对用户输入的图像首先使用一个5*5d的高斯核去除噪音,然后使用Otsu二值化。
3.1.2 图像平滑
使用低通滤泼器可以达到图像模糊的目的,这在去除图像噪音方面非常有效果。OpenCV提供4种模糊技术:cv2.blur()平均模糊、cv2.GaussianBlur()高斯模糊、cv2.mediaBlur()中值模糊、cv2.bilateralFilter()双边滤波。在本次项目中,会使用5*5的高斯核对用户输入的图像进行处理。
3.1.3 形态学转换
形态学操作时根据图像形状进行的简单操作,一般是对二值化图想进行操作,需要输入两个参数:原始图像和结构元素(又称为核),它用来决定操作的性质。形态学操作分为腐蚀和膨胀,OpenCV中有二者的变体,开运算、闭运算、梯度等。
在本次项目中,主要采用的是开运算(即先腐蚀后膨胀)对用户输入的图像进行处理。

3.2 人体关键点检测技术

3.2.1 Harris角点检测
早在1988年的文章《A Combined Corner and Edge Detector》中就提出了Harris角点检测的算法。由Harris角点检测的结果是一个由角点分数构成的灰度图像。选取合适的阈值对结果图像进行二值化,我们就可以获取图像中的角点了。
本项目中对用户上传的图片使用Harris算法进行角点检测的结果如下:

基于3D人像复原技术的试衣平台_第1张图片

3.2.2 SIFT关键点检测
2004年,D.Lowe提出了一个新的算法:尺度不变特征变换(SIFT),上面使用的角点检测技术Harris,具有旋转不变特征,即使图片发生了旋转,我们也可以找到相同的角点,但是如果图片缩放的话,使用Harris算法检测的话,可能角点就不是角点了。这就需要SIFT来帮我们解决了,这个算法可以帮助我们提取图像中的关键点并计算它们的描述符。
本项目中,使用cv2.xfeatures2d.SIFT_create()创建一个sift对象,之后调用sift的detect()函数,采用OpenCV提供的绘制关键点函数:cv2.drawKeyPoints(),在关键点部位绘制一个小圆圈。上传图片,点击提取模型,结果如下:

基于3D人像复原技术的试衣平台_第2张图片

3.2.3 FAST算法
Edward_Rosten和Tom_Drummond在2006年提出的FAST算法,可以解决上面两种算法,在检测关键点时不够快的缺点。
算法的原理:
取图像中的检测点,通过判断检测点的像素值是否比以该点为圆心的周围16个像素点中的大部分像素点的像素值要亮一个阈值或者暗一个阈值,来判断检测点是否是角点。
本项目中采用cv2.FastFeatureDetector.create()创建一个fast对象,并且使用非最大值抑制,解决检测到的特征点相连问题。之后就可以使用fast的detect()函数检测关键点,并且使用cv2.drawKeyPoints()绘制关键点。项目中使用FAS算法检测用户上传的图像的关键点如下:

基于3D人像复原技术的试衣平台_第3张图片

由上图FAST算法检测出的的关键点,我们可以看出,即使使用了非最大值抑制,关键点之间还是存在很多相连的关键点。这种效果并不能够满足我们的需要。
3.2.4 ORB算法
本次项目采用OpenCV中的Harris角点检测、SIFT关键点检测、角点检测的FAST算法以及ORB算法分别对用户上传的图像进行人体关键点检测。通过对比,发现ORB算法无论是从关键点检测的效果还是从执行效率上都优于Harris、SIFT以及FAST,所以,在项目中会采用ORB(Oriented FAST and Rotated BRIEF)对图像人体关键点检测。
ORB基本上是FAST关键点检测和BRIEF关键点描述器的结合体,并且增强了性能。
算法步骤:
1.创建ORB对象;
2.使用FAST找到关键点;
3.使用Harris检点检测对这些关键点进行排序,找到其中的前N个点;
4.使用金字塔,从而产生图像中人体尺度不变性;
5.根据ORB_create()中指定的参数WTA_K的值(默认值为2),每次选择2个点进行匹配。
在项目中对用户上传的图片使用ORB算法检测关键点效果如下:

基于3D人像复原技术的试衣平台_第4张图片

3.3 人体骨架提取

3.3.1 OpenCV库计算生态骨架原理
二值图像X的形态学骨架可以通过选定合适的结构元素B,对X进行连续腐蚀或开运算来求得。设S(X)表示X的骨架,则求图像X的骨架的表达式为:

在这里插入图片描述
(1-1)
在这里插入图片描述
(1-2)

其中,Sn(X)为X的第n个骨架子集,N是预算将X腐蚀成空集前的最后一次迭代次数,即。表示连续n次用B对X进行腐蚀,即

在这里插入图片描述

(1-3)

3.3.2 算法步骤
1.获取原图像的首地址及图像的宽和高,并设置循环标志为1;
2.对获取的图像5*5的高斯核去除噪音,然后使用Otsu’s二值化,并且控制背景为黑色;
3.用结构元素腐蚀原有图像,并保存腐蚀结果;
4.设置循环标志为0,如果腐蚀结果中有一个点为255,即原图像尚未被完全腐蚀成空集,则将循环标志为1;
5.用结构元素对腐蚀后的图像进行开运算(消除小的白色区域),并求取腐蚀运算与开运算的差(得到消除的白色区域);
6.把本次循环中保存的腐蚀结果赋值给原图像;
7.重复步骤【3】-【6】,直到将原图像腐蚀为空集为止;
最终求得的骨架就是结果。

第4章 衣吧试衣平台设计与实现

4.1 需求分析

4.1.1 功能需求
试衣平台功能:
1.照片建模:为用户提供上传二维照片建模的功能;
2.储衣间:与衣吧试衣平台合作的商家的服装会放在储衣间展示,提供服装加入模型试衣间的功能;
3.模型试衣间:提供将建立好的模型从数据库中显示在模型试衣间,并且实现试衣。
4.1.2 系统配置
开发平台:Windows 10
编程语言:Python
开发工具:Pycharm
相关依赖:Django、Djangorestframework、OpenCV、Numpy、Scipy、Pillow等
4.2 数据库设计
本平台采用Mysql数据库构建存储用户信息表front_use、存储用户上传图片表photos以及存储建立的用户模型表person_model。
存储用户信息的表的主要包括字段:id、password、is_superuser、username、telephone、email、is_active、date_joined。password指的是该用户密码(使用md5加密);is_superuser指的是用户是否是超级管理员,默认为0,不是超级管理员;username指的是用户名;telephone指的是用户的手机号;email指的是用户的邮箱地址;is_active指的是用户当前是否可用;date_joined指的是用户注册的时间;而img_url指的是上传的照片存放在本地服务器的url,用于之后访问。数据表具体信息如下:

基于3D人像复原技术的试衣平台_第5张图片

存储用户上传的图片的表的主要包括字段:id、position、pub_time、img_url。position指的是该用户上传的第几张图片;pub_time指的是用户上传照片的时间;而img_url指的是上传的照片存放在本地服务器的url,用于之后访问。数据表具体信息如下:

基于3D人像复原技术的试衣平台_第6张图片

存储用户上传的图片的表的主要包括字段:id、pub_time、model_url。pub_time指的是模型生成的时间;而model_url指的是生成的模型存放在本地服务器的url,用于之后访问。数据表具体信息如下:

基于3D人像复原技术的试衣平台_第7张图片

4.3 系统实现与平台展示

4.3.1 衣吧 照片建模

基于3D人像复原技术的试衣平台_第8张图片

用户可以点击上传图片的按钮,即可跳转以下界面:

基于3D人像复原技术的试衣平台_第9张图片

点击上传个人全身照之后,保存图片,会提示“图片保存成功”,之后就可以点击提取模型了,如果模型提取成功,会在导航栏处提示“图片处理完成,已保存!”。之后,刷新页面,就可以看到提取的模型骨架了。(因为知识储备不足,导致模型并没有建立成功,只能提取模型骨架。)

基于3D人像复原技术的试衣平台_第10张图片

4.3.2 衣吧 储衣间
储衣间:主要实现与衣吧试衣平台合作的商家的服装会放在储衣间展示,提供服装加入模型试衣间的功能。界面如下:

基于3D人像复原技术的试衣平台_第11张图片

4.3.3 衣吧 模型试衣间
模型试衣间:主要提供将建立好的模型从数据库中遍历出来,显示在模型试衣间,并且提供模型试衣功能(目前只能展示提取的用户骨架)。

基于3D人像复原技术的试衣平台_第12张图片

第5章

5.1 工作总结
传统的3D人体重建算法需要将问题降维,将复杂的人体形态从三维降到二维层面,以降低问题的难度。但是,信息的传递层级越多,信息的受损也就越大。因此,我们需要做的就是怎么样才能够无需依赖任何参数化的人体模型,从单个彩色图像中直接获取人体的3D模型?而单张图像包含的信息量又相对较少,无疑,这使得从单张图像直接获取3D人体数据又增加了一定的难度。
人体具有封闭的3D曲面结构,任何一个角度拍摄的图像都存在约一半的不可见部分;人体的四肢更加多变,更加复杂;还存在因为服装、光照、雾等的遮挡问题,人体的3D关键点在视觉上也会有明显的差异,身体的不同部位都会有视觉上的缩短效果,导致人体3D数据更难获取,对深度学习技术的使用限制更多等问题。如果要重建,需要技术从单帧图像中推理出人体的3D形态,并通过光学透视、阴影叠加等基本光学原则准确测出各个关键点在3D空间的位置和朝向,才能得到人体的姿态或表情信息。
另外,Github上nkolotTI提出的人形重建的卷积网格回归非常值得学习。这个在部署在Windows 10操作系统上时出现opendr安装不成功,查证之后发现,opendr依赖的操作系统只能是MacOS和Linux,Python版本为Python 2.7,而目前使用的是Python 3.7,所以部署过程就此搁置。之后,将试衣平台,衣吧,部署在Ubuntu 16上时,可以再进行安装opendr。
就目前来说,无论是对OpenCV还是计算机视觉,以及基于深度学习的图像三维重建,现在的技术储备并不能够满足项目的需求,所以还是需要继续学习有关线性蒙皮、骨骼动画等技术,以便之后继续实现该项目做准备。
5.2 未来展望
本文研究的内容还处于起步阶段,对于骨骼蒙皮技术尚不能使用,需要进一步掌握线性蒙皮技术以及骨骼动画技术。另外,还需要进一步的进行三维去噪和曲面去噪的学习,使建立的模型能够更加接近人体的特征,最终提高模型试衣的成功率。
同时,对于衣吧试衣平台的功能也需要进一步优化,需要提供给用户修改模型参数的功能,使用户可以更好的建立属于自己的人体模型。

参考文献

【1】Fan H,Su H,Guibas L J.A point set generation network for 3d objects reconstruction from a single image[C].Proceeding of the IEEE conference on computer vision and pattern recognition.2017:605-613.
【2】权龙,计算机视觉,识别与三维重建.2018:702.
【3】赵广立,云从科技取得3D人体重建技术新突破.2019:319.
【4】王雅芳,基于三维人体模型重建的人体测量技术研究与实现.2016:12.
【5】齐晓屾,基于二维照片的人物三维模型重建系统的设计与实现.2019:610.
【6】杨成泽,基于图像的三维人体建模技术研究,2011:12.

你可能感兴趣的:(模型试衣)