上期视频,我们制作了一个AI算法更换模特身上的衣服,本期教程,介绍一下如何来实现视频中的代码以及实现过程

AI算法,可以帮你进行虚拟换衣,元宇宙虚拟人再也不用愁衣服少了

——1——

什么是HR-VITON

其视频是基于一种称之为HR-VITON的技术,它实现了高分辨率的虚拟人物试穿衣服,通过提供试穿条件生成器,减少了由于传统翘曲和分割图之间的不一致而导致的失真。

传统上,虚拟试衣包括:翘曲,以使服装的图像适合人体,并生成分割图以生成最终图像。这时,翘曲模块和分割图独立移动,可能会造成不一致,尤其是当身体的一部分遮挡衣服时,会造成伪影(失真)。

HR-VITON

 因此,HR-VITON对人的图像(I)和衣服的图像(c )进行预处理,然后使用Try-on Condition Generator生成翘曲和分割图,通过融合减少伪影和虚拟化实现了高分辨率拟合。

——2——

HR-VITON 代码实现

基于图像的虚拟试穿任务旨在将目标服装项目转移到人的相应区域,这通常通过将项目装配到所需的身体部位并将扭曲的项目与人融合来解决。虽然近几年已经进行了越来越多的研究,但合成图像的分辨率仍然很低(例如256x192)。

这种局限性源于几个挑战:随着分辨率的增加,在最终结果中,翘曲衣服和所需衣服区域之间的错位区域中的伪影变得明显;现有方法中使用的架构在生成高质量身体部位和保持衣服纹理锐度方面的性能较低。为了应对这些挑战,此模型提出了一种称为VITON-HD的新型虚拟试穿方法,该方法成功地合成了1024x768个虚拟试穿图像。

具体来说,首先准备分割图来指导模型的虚拟试穿合成,然后将目标服装项目大致适合给定的人的身体。接下来,模型提出了对齐感知段归一化和别名生成器来处理错位区域,并保留1024x768输入的细节。通过与现有方法的严格比较,证明VITON-HD在定性和定量上都大大优于其他模型。

# 源代码#https://github.com/sangyun884/HR-VITON! git clone https://github.com/cedro3/HR-VITON.git
%cd HR-VITON
! pip install tensorboardX
! pip install torchgeometryimport gdown
gdown.download('https://drive.google.com/uc?id=1XJTCdRBOPVgVTmqzhVGFAgMm2NLkw5uQ', 'mtviton_step_100000.pth', quiet=False)
gdown.download('https://drive.google.com/uc?id=1BkSA8UJo-6eOkKcXTFOHK80Esc4vBmVC', 'gen_step_110000.pth', quiet=False)
gdown.download('https://drive.google.com/uc?id=1CcgCubhLc9iF6jGACdUgGhTDWMC7Gjzr', 'test.zip', quiet=False)
! unzip test.zipfrom function import *import warningswarnings.filterwarnings("ignore")
! mkdir download

首先,需要下载预训练模型与数据集,并解压出来,方便我们调用里面的图片(模特与衣服)

模型使用VITON-HD: High-Resolution Virtual Try-On via Misalignment-Aware Normalization
的数据集训练和评估此模型。
下载数据集:https://github.com/shadow2496/VITON-HD。

然后我们把所有图片解压在image文件夹中,并设置一个随机参数来从数据集中随机挑选出5个模特与 5件衣服,以便模型把5件衣服分别穿在5个不同模特的身上。并把图片信息保持在test_pairs.txt文件中。

import glob
import randomimport shutil
import osseed_number =  120random.seed(seed_number)
reset_folder('image')
image_files = sorted(glob.glob('test/test/image/*.jpg'))
cnt = len(image_files)
num = random.sample(range(cnt),5)
image_names = []for i in num:shutil.copy(image_files[i], 'image/'+os.path.basename(image_files[i]))image_names.append(image_files[i])
image_names.sort()
display_pic('image')reset_folder('cloth')
cloth_files = sorted(glob.glob('test/test/cloth/*.jpg'))
cnt = len(cloth_files)
num = random.sample(range(cnt),5)
cloth_names =[]for j in num:shutil.copy(cloth_files[j], 'cloth/'+os.path.basename(cloth_files[j]))cloth_names.append(cloth_files[j])
cloth_names.sort()
display_pic('cloth')if os.path.isfile('test/test/test_pairs.txt'):  os.remove('test/test/test_pairs.txt')f = open('test/test/test_pairs.txt', 'w', encoding='UTF-8')for image_name in image_names:    for cloth_name in cloth_names:f.write(os.path.basename(image_name)+' ')f.write(os.path.basename(cloth_name)+'\n')
f.close()

reset_folder('output')! python3 test_generator.py --occlusion --tocg_checkpoint './mtviton_step_100000.pth'\--gpu_ids 0\--gen_checkpoint './gen_step_110000.pth'\--datasetting unpaired\--dataroot './test'\--data_list './test/test_pairs.txt'clear_output()
display_pic_png('output/mtviton_step_100000.pth/test/unpaired/generator/output')

然后我们根据下载的预训练模型与随机选择的图片与衣服进行模型的预测,预测结果保存在output文件夹下

模型预训完成后,会把5件衣服穿在5个模特身上,并依次排列出模特试穿衣服的效果

当然,我们也可使用ffmpeg来把生成的图片合成视频,若想查看其他衣服与模特可以修改第二段代码中的随机因子

import cv2
import glob
reset_folder('movie1')
reset_folder('movie2')
result_files = sorted(glob.glob('output/mtviton_step_100000.pth/test/unpaired/generator/output/*.png'))
cnt = 0
black = cv2.imread('black.jpg')
for image_name in image_names:for cloth_name in cloth_names:left = cv2.imread(image_name)center = cv2.imread(cloth_name)right = cv2.imread(result_files[cnt])tmp = cv2.hconcat([left, center])img1 = cv2.hconcat([tmp, right])cv2.imwrite('movie1/'+str(cnt).zfill(4)+'.jpg', img1)up = cv2.hconcat([black, center])down = cv2.hconcat([left, right])img2 = cv2.vconcat([up, down])cv2.imwrite('movie2/'+str(cnt).zfill(4)+'.jpg', img2)cnt +=1! ffmpeg -y -r 1 -i movie1/%04d.jpg -vcodec libx264 -pix_fmt yuv420p -loglevel error output1.mp4! ffmpeg -y -r 1 -i movie2/%04d.jpg -vcodec libx264 -pix_fmt yuv420p -loglevel error output2.mp4display_mp4('output1.mp4')

更多Transformer 视频动画教程
请参考头条号:人工智能研究所

VX搜索小程序:AI人工智能工具,体验不一样的AI工具

这个AI算法,可以帮“元宇宙”虚拟人进行虚拟更换衣服相关推荐

  1. 最新成果!超越AlphaZero!DeepMind让AI制霸「元宇宙」

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:新智元 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 Al ...

  2. 找对象困难?不如让AI算法来帮你

    年关将近,大家在疯狂的抢火车高铁票的同时,也面临着孤身一人回家的尴尬处境,比方说是这种样子 每逢过年走亲访友的时候,七大姑八大姨便会开始各种灵魂拷问,更加让人觉得不胜其烦 今天,小编就为大家盘点了一下 ...

  3. 元宇宙里的虚拟数字人:十几分钟就能制作出人体3D模型

    元宇宙是虚拟世界与现实社会的交互平台,在虚拟世界里都有一个现实世界的复制品,包括真人模型,也就是元宇宙里的虚拟数字人,数字人的概念就出来了. 数字人就是逼真的人体3D模型.就是利用技术创造出来的虚拟人 ...

  4. 云游戏、VR、AI,云计算给元宇宙提供了哪些想象力?

    2021 最火的新概念,莫过于元宇宙.2021 年 10 月 29 日,Facebook 宣布改名 Meta:2021 年 11 月 1 日,"元宇宙第一股"    Roblox ...

  5. 和AI女友“关晓彤”在元宇宙谈了一场恋爱,但这结局我不能接受!| 巴比特体验官...

    最近,一言不合,我被"虚拟女友"删除了好友.事情经过是这样的. AI小冰的团队出了一个新玩法,叫做"创造虚拟亲友"(男友or女友).这个虚拟亲友是一个" ...

  6. 进击的虚拟人:元宇宙中的虚拟化身与花样“NPC”

    元宇宙的世界到底是一个什么样的世界?我们在元宇宙中与世界到底会变成什么样的关系? 从目前市场上升温最快的虚拟人中,我们或许能找到一些答案. 如果物理世界的人类以国家.种族.皮肤颜色来划分,那元宇宙中的 ...

  7. 还在为垃圾太难分类而烦恼么?AI算法来帮您!

      据统计全球一年可产生20亿吨垃圾,这些垃圾聚集起来可以埋掉286个西湖,所以有效的回收和利用垃圾是保护环境的当务之急.通过对垃圾的分类可有效提高废品回收率,减少垃圾无害化处理难度,从而实现节能环保 ...

  8. 元宇宙:打破虚拟与现实的边际

    近期,元宇宙概念成为了人们关注的热点.元宇宙(Metaverse)由Meta(超越)+Universe(宇宙)两部分组成,即在现实世界的基础上搭建一个虚拟的数字世界,使现实世界中的人们通过数字化的形式 ...

  9. 元宇宙正在模糊 “虚拟” 和 “现实” 之间的界限

    炫弛世界是一家以区块链技术为核心,自主创新研发线上线下相结合的元宇宙电商.社交平台,也是一种全新的商业模式,在传统的商城基础上,加入数学产品属性,使商品变成线上可确权的数字资产,帮助每个生态内用户都能 ...

最新文章

  1. python 爬虫输出为空,python爬取文件时,内容为空
  2. Harbor2.2.1配置(trivy扫描器、镜像签名)
  3. 乡村振兴谋定齐鲁道路-农业大健康·李昌平:放权改革创新
  4. sublimetext3插件安装_sublime text 3 交互python
  5. 信息学奥赛一本通 2052:【例3.2】范围判断
  6. 米思齐_米思齐公益培训之交互式图形设计与数据分析圆满落幕
  7. IntelliJ IDEA 快捷键 Windows
  8. SpringBoot项目读取json配置文件
  9. 数学建模常用解题方法
  10. Tlsr8258开发-BQB(DTM)测试
  11. Windows 10为强化资安防御 这些IT人最关心的事
  12. idea 编译通过,无法调试 Frames are not available
  13. Python pta题目
  14. jQuery 是一个 JavaScript 库。
  15. 1054 : 滑动解锁 hihocoder 蓝桥2017模拟
  16. [mov,mp4,m4a,3gp,3g2,mj2 @ 0000025ce897db40] moov atom not found
  17. 周志华《机器学习》习题6.2
  18. 在 64 位 linux 机器上安装 jdk1.6 jdk-6u45-linux-x64.bin的安装
  19. php微信自定义菜单开发,微信公众平台开发自定义菜单功能开发
  20. 使用Zerotier+Moon结点内网穿透

热门文章

  1. GraphSAGE论文阅读笔记
  2. 用python画皮卡丘代码-用python画一只可爱的皮卡丘实例
  3. 我的FLASH情结2010——浅谈FLASH WEB GAME与创业(2)
  4. 苹果手用计算机解锁手机密码,苹果手机密码忘了怎么解锁(解决方法大全)
  5. 支付宝又要刷屏了,红包活动开始了
  6. 计算机应用基础课程作业2016,2016浙大远程教育计算机应用基础作业
  7. 你关心的2023年PMP的考试时间和地点在这里
  8. Java培训班靠谱吗?
  9. win10可用空间新建卷提示磁盘上没有足够的空间完成此操作如何解决
  10. 正确重启计算机的方法,电脑一开机就会出现 重启并选择正确的启动设备或在选定的启动设...