148。人工智能MODNet网络模型实现人像抠图
MODNet是一个 仅需RGB图片输入 的 实时 人像抠图模型。本文主要演示一下MODNet Python部署,使用的是飞桨FastDeploy。
预训练ONNX的MODNet 模型,下载地址:
https://bj.bcebos.com/paddlehub/fastdeploy/modnet_photographic_portrait_matting.onnx
模型
大小
精度
modnet_photographic
25MB
- 实现主要过程1、加载下载的modnet模型2、读取人像图片和背景图片(背景图片高度和宽度需要大于人像图像)3、根据预测结果,返回人像抠图结果。(背景为纯色,前景为人像)4、人像与背景合成。(这里使用两种方式合成,一种使用掩模进行图像位操作,一种根据背景像素值遍历)
实现代码:import cv2 import fastdeploy as fd import numpy as np model_file="modnet-onnx/modnet_photographic_portrait_matting.onnx" model=fd.vision.matting.MODNet(model_file=model_file, params_file="", runtime_option=None, model_format=fd.Frontend.ONNX) img=cv2.imread("img/77.jpg") #77.jpg,386.jpg,446.jpg bg=cv2.imread("img/bg1.jpg") sbg=bg.copy() result=model.predict(img.copy()) #print(result) # 可视化结果 vis_img = fd.vision.vis_matting_alpha(img, result) #print(vis_img[0,0]) #[153,255,120] #图像合成,背景图像大小不能小于前景图像,需要调整thresh def swap_background_matting1(img,bg,thresh=127): h0,w0=bg.shape[0],bg.shape[1] h,w=img.shape[0],img.shape[1] #在背景中取合并区域,大小与前景一致 roi=bg[(h0-h)//2:(h0-h)//2+h,(w0-w)//2:(w0-w)//2+w] img2gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) ret,mask=cv2.threshold(img2gray,200,255,cv2.THRESH_BINARY) kernel=np.ones((5,5),np.uint8) mask=cv2.morphologyEx(mask,cv2.MORPH_OPEN,kernel) mask_inv=cv2.bitwise_not(mask) roibg=cv2.bitwise_and(roi,roi,mask=mask) roifg=cv2.bitwise_and(img,img,mask=mask_inv) roibgfg=cv2.add(roibg,roifg) bg[(h0-h)//2:(h0-h)//2+h,(w0-w)//2:(w0-w)//2+w]=roibgfg return bg # bg=swap_background_matting1(vis_img,bg,200) #根据背景像素,遍历实现背景与人像合成 def swap_background_matting2(vis_img,bg): hbg,wbg=bg.shape[0],bg.shape[1] #背景大小 hfg,wfg=img.shape[0],img.shape[1] #原图大小 #遍历人像与背景合成, for i in range(hfg): for j in range(wfg): if vis_img[i,j,0]==vis_img[0,0,0] and vis_img[i,j,1]==vis_img[0,0,1] and vis_img[i,j,2]==vis_img[0,0,2]: continue bg[i+(hbg-hfg)//2,j+(wbg-wbg)//2] = vis_img[i,j] return bg bg=swap_background_matting2(vis_img,bg) dst=np.hstack((img,vis_img)) cv2.imshow("result",dst) bgdst=np.hstack((sbg,bg)) cv2.imshow("bgdst",bgdst) cv2.waitKey(0) cv2.destroyAllWindows() 实现效果
人像抠图效果1
掩模方式合成效果
遍历方式合成效果
人像抠图效果2
遍历方式合成效果
人像抠图效果3
遍历方式合成效果
从背景与人像合成方式来说,掩模方式需要调整阈值大小,并做一些图像的开与闭操作。遍历方式合成背景与人像更直接方便。
从抠图效果和速度来看,效果很好,速度也非常快。
1946年戴笠去世后,蒋介石清算遗产时,得知数目后气得破口大骂1hr抗战时期,有一位国民党特务,被周恩来总理评价为他的死,足以让中国共产党革命提前十年结束。此人凭借出色的搜集情报的能力,从一个小小的学员,蜕变成为国民党军统局的一把手,同时更是
iQOONeo6对比vivoS15Pro,选哪款更好?关于iQOONeo6和vivoS15Pro这两款手机,相同版本的售价仅差100元,很多朋友在面对这两款手机的时候不知道如何选择,事实上也的确如此,因为它俩是各有优势的,vivoS1
扎根临港智能汽车撬动商汤新增长,绝影如何定下大本营自动驾驶技术被视作是人工智能皇冠上的明珠。年轻的人工智能软件公司商汤科技在成立不到2年之际,就偶然切入了这一领域。历经5年的打磨和积累,智能汽车解决方案独立新品牌SenseAuto
一夜暴富,了解下比特币疯狂,冲毁了大多数人的常识,为什么一串毫无价值的代码也能暴涨千万倍?虚拟货币比特币究竟是有多疯狂呢?究竟有多魔幻,每天的5月22日,都会有一名程序员被反复揭伤疤,这就是历史上
百度发布国内首款情感陪伴型虚拟博主林开开叶悠悠当生活压力累积情绪亟待抒发的时刻,你是否渴望拥有一个能够24小时随叫随到温柔包容你所有情绪的最佳好友?伴随着数字人的不断进化,这一切变得触手可及。8月17日,百度输入法基于多模态交
诗词十首十月吟诗来会友,八方文采乐飞扬耍溪口一游碧水铺明镜,沅江纳小溪。深湾藏鹭鸟,更有野鸭栖。岭上红枫艳,修竹万竿青。年轻出外地,路上太人稀。渴望辛丑年九月初六辛丑九月访耍溪口久雨出晴日,欣然访耍溪。舟行山影退,逆水
两首写中秋节的古诗词一首前无古人,一首后无来者一朵女子,风轻云淡欢迎关注槐序,这里有最美古诗词。。引言海上生明月,天涯共此时!时光如惊鸿照影,一晃就到了一年一度的中秋佳节。作为中国四大传统节日之一,中秋节有很多习俗,比如吃月饼
记者实地体验看上海品上海爱上海主题系列活动眼下上海的旅游业,什么最火?自然当属工会组织的市内游了。今年6月,上海市总工会积极践行上海市加快经济恢复和重振行动方案,推出了关心关爱职工助力经济发展的16项举措。其中,看上海品上
记者带你逛公园玛多,正午的云朵鹰巢和笑脸黄河源区红星新闻记者丨王震华责编任志江编辑丨郭宇云朵越来越低,车辆越来越少。6月的高原,空气稀薄,日光灼人。从西宁驱车五个多小时,遭遇一场急雨后,天边渐红,凉意陡增,我们正在靠近傍
王者荣耀法师攻略作为最受欢迎的游戏,王者荣耀,你最喜欢里面的那个法师呢?1。小乔这个英雄的优势在自保能力不错,被动的存在所以能拉开距离。一技能指定范围伤害,并且伤害高。二技能击飞,重点在于能让队友
央行重磅发布!数字人民币大招来了,这些场景都用得上9月8日,人民银行数字货币研究所(下称数研所)在2022第二届中国(北京)数字金融论坛上正式发布数字人民币智能合约预付资金管理产品元管家,可在预付消费服务场景防范商户挪用资金保障用