社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

从零开始实现穿衣图像分割完整教程(附python代码演练)

小白学视觉 • 3 年前 • 460 次点击  
点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

时装业是人工智能领域很有前景的领域。研究人员可以开发具有一定实用价值的应用。我已经在这里展示了我对这个领域的兴趣,在那里我开发了一个来自Zalando在线商店的推荐和标记服装的解决方案。

在这篇文章中,我们会开发一个提取连衣裙的应用。它输入原始的图像(从网络上下载或用智能手机拍照),并提取图像中的连衣裙。分割的难点在于原始图像中存在了大量的噪声,但是我们会在预处理期间通过一个技巧来解决这个问题。

最后,您还可以尝试将此解决方案与之前引用的解决方案合并。这允许您通过外出和拍摄时拍摄的照片,开发一个实时推荐和标记服装的系统。

数据集

最近有一项关于服装视觉分析和分割的Kaggle比赛。这是一个非常有趣的比赛,但它并不适合我们。我们的目标是从图像中提取连衣裙,因此这个数据集不太适合我们,因为它包含了比较多的冗余。我们需要的是包含连衣裙的图像,因此最好自己来构建数据集。

我收集了网络上的一些图片,其中包含了在不同场景穿着不同类型的连衣裙的人。然后需要创建蒙版,它在每个对象分割任务中都是必要的。

下面是我们的数据样本。我从互联网上收集了一些原始图像,经过进一步剪切,将人与衣服分开。

图像分割示例

因为我们要将背景、皮肤和连衣裙进行分离,首先要将它们区分出来。背景和皮肤是本问题中最相关的噪声源,我们要尽量减少它们的干扰。

通过手动分割来创建蒙版,如下图所示,简单的对蒙版进行二值化。

蒙版示例

最后一步,我们将所有的蒙版图像合并为三维的单个图像。这张照片表示了原始图像的相关特征。我们的目的主要是分离背景,皮肤和连衣裙,因此这个图像非常适合!

最终蒙版

我们对数据集中的每个图像重复这个过程,为每个原始图像提供三维的对应蒙版。

模型

我们可以很容易的建立模型,过程非常简单:

我们需要训练这样一个模型,该模型输入原始图像,可以输出它的三维蒙版,即分离皮肤、背景和衣服。训练完成之后,当一个新的图像输入时,我们就可以将它分成三个不同的部分:背景、皮肤和衣服。我们只关注感兴趣区域(连衣裙),这样蒙版结合原始图像,就可以裁剪出我们需要的连衣裙。

我们使用UNet建立该模型,它经常用于类似的分割任务,而且很容易在Keras中实现。

在开始训练之前,要对所有的原始图像进行均值标准化。

结果和预测

在预测期间,当遇到高噪声的图像(背景或皮肤模糊等)时,模型开始动荡。这种问题可以简单地通过增加训练图像的数量进行解决。但我们也开发了一个巧妙的方法来避免这种问题。

我们使用 OpenCV 提供的 GrubCut 算法。该算法利用高斯混合模型分离前景和背景。通过它可以帮助我们找到图像中的人物。

我们只实现了简单的功能。假设感兴趣的人站在图像的中间。

python def cut(img): img = cv.resize(img,(224,224)) ¨K5K

执行GrubCut结果

下面是结合使用GrubCut和UNet之后的结果:

GrubCut与UNet相结合得到了优秀的结果。

总结

在这篇文章中,我们为连衣裙分割开发了一套解决方案。为了达到这个目的,我们使用了GrubCut和UNet。我们计划在真实照片中使用这个解决方案,并根据它构建一个视觉推荐系统。

原文链接:
https://towardsdatascience.com/dress-segmentation-with-autoencoder-in-keras-497cf1fd169a

下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲 即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/124490