• 用yolov5图像分割做人物抠像


    前言

    yolov5的6.2版本不仅更新了前一篇文章里提到的分类模型,同时也更新了图像分割模型,在官方的教程和用法还没出之前(2022/09/19),我基于官方已经写好的推理脚本进行部分修改,实现了基于图像分割的简单人物抠像。
    注:本文所用模型为yolov5s-seg,是已经预训练好的官方模型。

    展示效果

    话不多说,先来放图!
    首先是官方的图像分割推理结果,为了不透露小伙伴信息,这里打上马赛克:
    在这里插入图片描述
    其次是我修改后需要的人物抠像结果:
    在这里插入图片描述

    如何实现

    克隆yolov5新版源码解压后(这个就不展开谈了)
    1.首先修改yolov5-master\utils下的plots.py:

    #plots.py
    def masks(self, masks, colors, im_gpu=None, alpha=1):
    

    这里的alpha值需要修改为1,alpha影响的是mask也就是遮罩层的透明度,默认是0.5,是以下这种效果:

    在这里插入图片描述
    可以看到很明显暗半圈,不符合我们的效果。

    接下来需要修改几行代码,为了清楚,我直接把我修改的和原始文件对比进行截图:

    在这里插入图片描述
    也就是修改成:

    masks = masks.unsqueeze(3)  # shape(n,h,w,1)
    masks_color = masks * (colors * alpha)  # shape(n,h,w,3)
    inv_alph_masks = (masks * alpha).cumprod(0)  # 1-masks*alpha
    mcs = (masks_color * inv_alph_masks).sum(0) * 2  # mask color summand shape(n,h,w,3)
    im_gpu = im_gpu.flip(dims=[0])  # flip channel
    im_gpu = im_gpu.permute(1, 2, 0).contiguous()  # shape(h,w,3)
    im_gpu = im_gpu * inv_alph_masks[0] #no mcs
    

    其中我把mcs(也就是着色块)先去掉,然后因为是要去掉背景保留前景,所以需要把1-mask乘alpha改成mask乘alpha,同时为了只取最大的物体,这里inv_alph_masks里的-1(取全部)改成了0(只取第一个物体)。

    为了更好地理解,这里分别放出mcs,inv_alph_masks分别是什么效果:
    在这里插入图片描述
    在这里插入图片描述
    2.修改yolov5-master\segmant\predict.py文件:

    在这里插入图片描述

    上面两行代码的意思是这里取masks里的第一个物体,也就是检测值最大的那个物体,其他我不要了(这个看需求处理),同时要把目标检测框去掉的话只要把下面四行代码注释掉即可。

    3.预测:

    #D:\yolov5-master-seg\yolov5-master\segment在当前目录下启动命令行
    python predict.py --weights yolov5s-seg.pt --source 3014193119028716040.avi --class 0
    

    –source后面跟的换成你需要的视频文件或者视频源。
    –class 0表示只预测0的分类,这里的分类取自coco数据集,0就是人的意思,所以只会进行人的图像分割。
    以下是推理的结果:

    Speed: 0.4ms pre-process, 8.3ms inference, 1.0ms NMS per image at shape (1, 3, 640, 640)
    Results saved to ..\runs\predict-seg\exp24
    

    用的是rtx4000显卡,速度是非常理想的,此外这里提一句,yolov5s的推理速度就比yolov5n慢了一点点(大约2ms),但是效果要好不少,各位请根据自己的实际情况选择模型。

  • 相关阅读:
    量化风控的规则开发,如何更好做策略定规则,抓坏人
    基于Go语言的xmind读写库,我主要用来把有道云笔记思维导图转为xmind
    激发客户潜在需求
    开启生态新姿势 | 使用 WrodPress 远程附件存储到 COS
    EMQ正式上线:全球首个物联网MQTT测试云服务 XMeter Cloud
    Linux ❀ 磁盘IO较大故障告警排查确认方法
    孙宇晨最新研判:加密货币将成为全球金融基础设施的一部分
    ElasticSearch-Query DSL(Domain Specific Language)
    PTA_1164 Good in C_模拟
    小鼠参考基因组id转换gtf文件chb 自己注释 从官网下载相应的基因中注释文件gse155802 getmatrix genecode
  • 原文地址:https://blog.csdn.net/weixin_43945848/article/details/126926929