APP下载

基于人体特征结合专家系统的西装推荐策略

2022-05-30任永亮

计算机技术与发展 2022年5期
关键词:梯度轮廓西装

任永亮,毋 涛,李 科

(西安工程大学 计算机科学学院,陕西 西安 710600)

0 引 言

随着互联网的不断发展,目前电商平台极大地促进了人们足不出户的消费方式,据调查,西装在应用电子上午的交易占比逐年呈线性增长。为了提升交易额和增加用户体验,近几年各个电商平台使用了不同的推荐技术,使得平台更加具有智能效果。目前,国内的热门西装推荐平台中的推荐系统常常根据用户的浏览记录即协同过滤技术推荐西装[1],但是该方法无法考虑浏览网页的真实,忽略了用户的真实操作行为,而无法达到预期的推荐效果。早期有关推荐系统的研究以及成果有阿姆斯特朗提出的Web Watcher,以及马尔科的LIRA等;通过这些推荐系统对用户行为的分析能够预测出一些用户可能感兴趣的物品,因此用户满意度是评价该类系统的主要指标[2]。Lin等在既有研究的基础上,提出了一种基于用户需求喜好因素以外的需求因素的用户模型[3]。王安琪等基于西装搭配的四季色彩理论与计算机视觉技术,提出一种判断优化模型,但是此模型缺乏考虑用户之间的关系[4]。周静等提出一种基于用户图像内容属性喜好与时间因子的西装推荐(UIACF)算法[5],改进了西装推荐精度不高、覆盖率低等问题。

综上所述,目前的推荐技术基本都是基于用户与西装之间信息关联性质的推荐,基于用户自身特性的推荐很少提及,比如,基于用户自身身体特征即用户的身体轮廓数据的西装推荐和基于用户肤色的推荐。考虑到西装的多样性和实际性,考虑到宽松的衣服,针对人体轮廓数据的推荐比较适合用于西服的推荐。李芹提出根据人体脸部肤色,推荐适合的西装颜色,使得用户获得个性化的西装搭配建议[6]。

该文基于人体轮廓必然要先找到轮廓提取的方法,用户在系统上传图片后,通过深度图像处理图片,获得人体的的轮廓数据,结合专家系统知识规则库为用户推荐合适的西服西装,此推荐方法也避免了冷启动的问题。最后,通过测试用例验证本系统的准确性与可行性。

1 相关工作

系统是基于人体轮廓的推荐,因此提取人体轮廓方法的选取,是实现推荐西装的前提。先前研究者在轮廓提取及测量的方向上提出了一些不同的方法,有较强的实用性,通过研究文献做出如下简要概述。

在自然场景下,受光线条件影响,传统的图像识别方法很难从照片中准确测量人体尺寸。以前使用三维扫描方法[7]或通过kinect[8]结合额外的照片深度数据的方式进行远程非接触式人体尺寸测量。由于操作设备限制,上述方法应用部署较难[9]。张艺等人提出了一种基于OpenCV的人体轮廓检测研究方法。对标识和储存的人体图像进行去噪和图像形态学处理,通过Canny边缘检测和膨胀及腐蚀处理,以阈值化等方法得到图像轮廓[10]。为了解决图像中轮廓不完整或未闭合时轮廓难以提取的问题,Chao等提出了一种基于全卷积的编解码网络的轮廓检测算法[11]。冷新科等人提出一种非刚性人体运动动作图像姿态轮廓提取算法实现了人体轮廓的提取[12]。

通过研究可知,每种人体轮廓提取方法都有其适用场景。Canny算法一直是作为一种标准的边缘检测算法,之后有不少学者对Canny算法做出了改进。如今,Canny改进算法仍然是一种优秀的边缘检测算法。因此该文选取Canny算法进行人体轮廓提取。

系统采用相关主流技术开发完成,根据专家知识制定推荐策略,当系统用户达到一定的数量时,数据库会产生一些数据基础,系统可根据身型数据包括已注册用户的体型、肩型、脸型、身高等计算用户之间相似度,参考相似用户的购买记录与专家规则库相结合的方式为用户推荐相应的西装列表。用户也可通过选择季节,系统过滤出合适的成衣面料推荐,使客户能够体验更加科学化、智能化的推荐服务。

2 基于Canny算法的人体轮廓提取

1986年,Canny提出了边缘检测算子Canny算子,在当时背景下,可以在相对简单的背景环境中提取部分的轮廓信息。后经过学者改进,如今是效果较好的一种轮廓提取算法[13-17]。图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波。微分运算是用来求信号的变化率,有加强高频值,得到边缘图像分量的作用。在空域运算中,计算微分用于对图像的锐化。因为数字图像的离散信号,所以微分运算就改为计算差分或者梯度。在图像处理中包括多种边缘检测梯度算子,如普通一阶差分、Robert算子、Sobel算子等是基于寻找梯度强度。拉普拉斯算子是基于过零点检测。通过计算梯度,设置阈值,得到边缘图像。

2.1 高斯模糊

高斯模糊又称高斯平滑,它的主要作用是去除噪声。由于噪声集中于高频信号,很容易被识别为伪边缘。应用高斯模糊去除噪声,降低伪边缘的识别。图像边缘信息也是高频信号,因此对于高斯模糊的半径选择是比较重要的一步,半径选择过大会容易检测不到一些弱边缘。高斯模糊是一种图像模糊滤波器,它的N维空间正态分布方程为:

(1)

2.2 计算梯度幅值和方向

图像的边缘指向不同方向,经典Canny算法用了四个梯度算子来分别计算水平、垂直和对角线方向的梯度。但是常用边缘差分算子,计算水平和垂直方向的差分Gx和Gy。这样就可以按公式(2)计算梯度模和方向:

(2)

梯度角度θ的范围从弧度-π到π,然后近似到四个方向,分别代表水平、垂直和两个对角线方向(0°,45°,90°,135°)。可以以±iπ/8(i=1,3,5,7)分割,每个区域的梯度角给定一个值,分别代表四个方向。

这里选择Sobel算子计算梯度。相对于其他边缘算子,Sobel算子计算出来的边缘粗大而明亮。

(3)

2.3 非极大值抑制

非极大值抑制的思想是搜索局部最大值,抑制极大值,是一种边缘细化方法。通常得出来的梯度边缘是多个像素宽。非最大值抑制能帮助保留局部最大梯度而抑制其他梯度值。这样的最终结果是只保留了梯度变化中最锐利的位置。算法描述如下:

(1)将当前像素的边缘强度与正、负梯度方向上的像素的边缘强度进行比较。

(2)如果当前像素的边缘强度与具有相同方向的掩模中的其他像素相比是最大的(即,指向y方向的像素,则将其与其上方和下方的像素进行比较,垂直轴),则保留该值,否则抑制。

2.4 双阈值

经过非极大抑制处理后的图像依然有比较多的噪声点。边缘检测算法通过一个阈值来滤除噪声或颜色变化引起的小的梯度值,保留大的梯度值。算法应用双阈值,即设定一个阈值上界和一个阈值下界来区分边缘像素。如果经过边缘像素点梯度值大于高阈值,则认为是强边缘点。如果边缘梯度值小于高阈值,大于低阈值,则标记为弱边缘点,小于低阈值的点被抑制掉。

2.5 人体轮廓提取思想

人体轮廓的提取是为西装推荐做数据基础,人体轮廓提取的本质是人体边缘检测。二维图像人体轮廓提取方法是首先给采集到的人体图像去噪,然后将图片转灰并二值化,最后在二值化图像上使用边缘检测算法进行人体边缘检测。通过实验验证了本方法得出的人体轮廓图在克服复杂背景带来影响的同时能够保证边缘的完整、清晰、细腻。

2.6 人体特征提取示例

首先利用手机进行人体图片的采集,分别采集了人体正面图和侧面图,然后使用pyCharm开发工具对图片进行灰度化处理,灰度化结果如图1(b)所示,在灰度图的基础上进行二值化处理,二值化结果如图1(c)所示,最后利用Canny边缘检测算法对二值化图进行人体轮廓的提取,提取结果如图1(d)所示。

图1 人体正面轮廓提取过程

侧面人体轮廓提取的方法与正面人体轮廓提取的方法一致,提取过程如图2所示。由实验可知,图片通过灰度化、二值化处理再利用Canny边缘检测算法可以提取出人体轮廓,并且效果较好,满足了后续推荐系统对西装进行推荐的需求。

图2 人体侧面轮廓提取过程

3 西装相关知识与推荐策略设计

3.1 西装相关知识

(1)西装版型。

在西装版型分类中,主要分为四类:欧版西装、英版西装、美版西装、日版西装。

欧版西装:欧版西装的基本轮廓是肩宽收腰的倒梯形,这类西装不适合身材偏瘦小的男性。

英版西装:一般是三个扣子,基本轮廓也是倒梯型,是欧版西装的一个变种。两侧开衩叫骑马衩,这和英国人的马术运动有关,还有一种衩是中间衩,中间开衩,西装领子比较宽广,比较狭长,适合脸型较长的人[18]。

美版西装:美国版西装的一般轮廓特点是O形。宽松,休闲。所以美版西装以单件者居多,宽衣大裤,强调舒适,随意是美国人的习惯[18]。

日版西装:日版西装的基本轮廓是H形,亚洲男人一般为H形身型,亚洲男性一般没有宽肩和细腰。一般为单排扣式,衣后不开衩。这样的设计理念使其比较适合亚洲人中等身材的人穿着[18]。

(2)西装领口。

西装领口类型主要分为三种:平驳领、戗驳领、青果领。

平驳领口特点:造型呈现菱形状,属于钝领的一种,领子下半片和上半片通常有一个夹角,适合国字脸和体型健壮的男性群体。

戗驳领特点:呈现上窄下宽,下领片的领角向上呈锐角突起,适合圆脸、娃娃脸的男性人群。

青果领特点:领面形似青果形状的领型,适合圆脸和脸部肉较多、文质彬彬及体型纤细的男性人群。

(3)西装制衣面料。

西服制衣有多种可供选择的面料,不同的面料因其材质具有不同的特点。比如春夏秋冬西服就需要采用不同的面料进行成衣制作。大多数消费者不具备面料专业知识来对面料进行区分,此时如果将不同面料适合不同季节作为考量,会使推荐系统更加智能化。下面从季节的角度对不同部分面料进行分类。

春季:需要透气性强如桑蚕丝,高捻度羊毛,马海毛,爱尔兰亚麻等。

夏季:轻薄如棉布,羊毛,泡泡纱,意大利亚麻等。

秋季:垂感强如灯芯绒,牛仔布,精纺法兰绒,斜纹凡布等。

冬季:保暖性好如法兰绒,粗花呢,羊毛,羊绒等。

3.2 人体身型特征分类

(1)体型分类。

体型主要分为:O形体型、H形体型、正三角体型、细沙漏形体型、长方形体型、倒三角体型。

H形体型:肩、腰、臀宽相似,肩窄,腰部无明显曲线。

正三角体型:肩小于臀、腰不太细,属矮胖身材。

细沙漏形体型:肩膀与臀部宽度相似,腰部偏窄。

O形体型:臀、肩、腰圆厚,腰围比肩、臀宽,体型偏胖。

倒三角体型:肩膀相对比较宽,腰部小于肩膀比较匀称、臀部偏窄。

(2)肩型分类。

人体肩型主要分为:平肩、宽肩、窄肩、溜肩。

(3)脸型分类。

脸型主要分为:钻石脸、方形脸、椭圆形脸、鹅蛋脸、圆形脸、心形脸、五角形脸、三角形脸[19]。

3.3 专家系统规则库设计

本系统采用非自动的知识获取模式。为了保证规则库设计的准确性和适用性,设计规则库相关专业知识通过对书籍文献的分析研究,得出季节-制衣面料、身型-西装版型、脸型-西装领型、肩型-是否垫肩等多方面的西装推荐知识[20],通过对规则知识的分析,使用产生式表示法表达知识,然后将这些知识存储到系统规则库中。

(1)面料推荐规则库设计。

面料推荐思想是根据季节与制衣面料的映射关系,设计出与面料与季节匹配的规则库,本小节在季节规则库中选取了一部分面料与季节的匹配关系进行展示,描述如下:

春季:桑蚕丝,高捻度羊毛,马海毛,爱尔兰亚麻等。

夏季:棉布,羊毛,泡泡纱,意大利亚麻等。

秋季:灯芯绒,牛仔布,精纺法兰绒,斜纹凡布等。

冬季:法兰绒,粗花呢,羊毛,羊绒等。

(2)西装推荐规则库设计。

西装推荐系统的思想是根据客户的身型和西装版型、脸型和西装领口、肩型和垫背之间的映射关系[21],设计出与客户的身型特征相匹配的规则知识库,使得用户在识别出自身轮廓特点后按此规则推荐给客户相应的服装,详细如表1所示。

表1 身型与西装款式规则库

3.4 系统推荐策略设计

(1)用户身型相似度定义。

在为用户进行西装推荐过程中,将参考用户身型相似度和推荐策略两个因素来形成西装推荐列表,首先是对用户身型相似度的定义,如表2所示。

表2 用户身型相似度定义

(2)西装推荐规则定义。

根据用户与其他用户相似度和是否存在购买记录,来定义参考系统规则库的权重,从而设计出西装推荐规则,如表3所示。

表3 西装推荐列表规则

4 推荐系统的设计与实现

4.1 系统开发环境

根据系统设计的可行性和有效性需求,基于人体特征结合专家系统的西装推荐使用笔记本win10系统,12G运行内存,pyCharm2020开发工具,GPU为Intel(R) HD Graphics 520,开发工具使用idea2019和Pycharm2020。前端采用JavaScript,html,css语言,后端采用Spring Boot框架,在Windows系统中搭建开发环境,用Java实现后台数据处理,用Python3.8库实现对图片的处理,采用sqLSever关系型数据库对数据进行存储。

4.2 系统架构

根据需求分析设计出西装推荐系统的总体架构,如图3所示。

图3 推荐系统总体结构设计

4.3 系统实现

根据上述有关技术完成了对系统的开发工作,下面对推荐系统的主要功能进行详细测试。

(1)提取人体轮廓信息的实现。

测试选取笔者一张全身照和侧面照为例,上传一张正面照和侧面照,系统会提取出相应的轮廓进行显示,系统根据轮廓图后台进行处理得出用户各项数据信息并显示出来,作为后序推荐的基础数据。此外,用户需要选择是否垫背和季节进行推荐,使得系统过滤出适合该季节穿的西服,效果如图4所示。

图4 轮廓提取效果

(2)推荐西装结果。

根据上一步轮廓提取的信息,系统会根据所保存的用户信息,推荐出与图片人体相符的西服,同时用户还可通过对季节的选择,筛选出适合当季穿的面料,通过点击图片可查看西装的详细信息,通过左右箭头进行翻页,用户还可以在搜索框输入关键字完成对西服的搜索并显示,通过左右箭头进行翻页查看操作,实现效果如图5所示。

图5 西装推荐效果

5 实验结果与分析

笔者批量选取了不同体型的人体图片上传到系统进行轮廓提取并进行了西装的推荐,验证了该方法的可行性和有效性,虽然在一些相似服装上存在一定的误差,但可以满足实际需求。选取几个测试用例,实验结果如表4所示。为了保护个人隐私,这里只展示提取后的轮廓提取和系统分析结果,通过实验测试结果可知,该系统可以根据提取的人体轮廓准确地推荐出合适的西装,由于测试用例三和用例一的体型相似度较高并且按照推荐策略应推荐一样的服装,因此展示推荐服装基本相同,以供用户选择,具有很好的实际应用价值。

表4 用例测试

6 结束语

系统通过选取Canny边缘检测算法完成对人体轮廓的提取,然后结合人体身型分类和推荐策略设计等相关知识来推荐用户适合的服装,完成了对系统的开发,通过系统测试,推荐准确度较高,可以满足市场应用。由于人体图片会存在干扰性较强的情况,希望通过后期改进Canny算法完成对复杂图片更加精确的人体轮廓提取和更好的推荐策略,以提高推荐准确度。

猜你喜欢

梯度轮廓西装
西装年代簿
跟踪导练(三)
一个具梯度项的p-Laplace 方程弱解的存在性
内容、形式与表达——有梯度的语言教学策略研究
更“便宜”的衣服
航磁梯度数据实测与计算对比研究
新形态西装
西装型男的3种形
组合常见模型梯度设置问题
儿童筒笔画