【语义分割项目实战】一种特殊的数据增强方式:copy-paste实战复现

这次复现的是一种特殊的数据增强方式,copy-paste(复制-粘贴)

参考资料:(29条消息) 代码复现:Copy-Paste 数据增强for 语义分割_叶舟的博客-CSDN博客_copy pasteicon-default.png?t=M666https://blog.csdn.net/oYeZhou/article/details/111696577?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165932070216782246443539%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165932070216782246443539&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~hot_rank-2-111696577-null-null.142^v36^pc_rank_34&utm_term=copy-paste&spm=1018.2226.3001.4187

GitHub项目代码:

https://github.com/qq995431104/Copy-Paste-for-Semantic-Segmentation 

我使用的是仿VOC数据集进行复现,因为我觉得voc格式的数据集更直观简单一些

 首先要制作一个自己的语义分割VOC格式数据集,这里我之前的教程有讲过,站里也有很多很详细的教程,就不赘述了

简单来说,我们最终制作完成的数据集只需要有两样东西,按如下格式摆放即可:

JPEGImages下存放的是图片的原图,格式为jpg,不是jpg在读入的时候会error,说return了nonetype

SegmentationClass下面存放的是与原图按顺序一一对应的掩膜图像,格式是png,一般来说用脚本生成的都是png 

然后在copy_paste.py中直接修改路径,运行即可

#改成自己的路径即可,如果显示读不到文件就改成绝对路径
def get_args():
    parser = argparse.ArgumentParser()
    parser.add_argument("--input_dir", default="./dataset/VOCdevkit2012/VOC2012", type=str,
                        help="input annotated directory")
    parser.add_argument("--output_dir", default="./dataset/VOCdevkit2012/VOC2012_copy_paste", type=str,
                        help="output dataset directory")
    parser.add_argument("--lsj", default=True, type=bool, help="if use Large Scale Jittering")
    return parser.parse_args()

Tips:本人在这里遇到了一个报错

大意为我们读入的mask图像是一个RGB格式的三通道彩色图像(括号中三个参数分别表示长,宽,通道数),而代码需要处理mask的图片是一个单通道的图像,因此我们需要把这个读入的mask图像转换成单通道的,也就是灰度图像,解决办法如下:

#大概在代码的80行左右,在img和mask分别resize之后,把mask转换成单通道灰度图像
h_new, w_new = int(h * rescale_ratio), int(w * rescale_ratio)
    img = cv2.resize(img, (w_new, h_new), interpolation=cv2.INTER_LINEAR)
    mask = cv2.resize(mask, (w_new, h_new), interpolation=cv2.INTER_NEAREST)
#我使用的是opencv中的库函数,可以直接转换
    mask=cv2.cvtColor(mask,cv2.COLOR_BGR2GRAY)

运行成功后,在同一级文件夹下会生成一个格式与VOC2012格式一样的文件夹,里面分别存放了copy-paste之后的原图和掩膜图像

检验成果:

 

 

 

 

 

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值