伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

如何用自己的数据制作Pascal VOC格式数据集(详细教程,附带所有代码脚本)

来源:本站原创 浏览:45次 时间:2023-07-13

https://zhuanlan.zhihu.com/p/53068162

本文作者管斌,天津大学 电气自动化与信息工程学院研二在读,目前研究方向是深度学习在医学图像检测上的应用。

正文

目前object detection这块主流的数据集主要就是COCO和Pascal VOC格式的。github上现成的检测算法基本都是自带VOC格式数据集的输入接口的,所以想要跑起来一个算法,我们需要准备好Pascal VOC格式的数据集就可以了。但是之前网上没有对小白很友好的准备Pascal VOC格式数据集的教程。

所以我写了这篇文章,让新手也可以马上学会的教程。这样大家就不用为准备数据集浪费太多时间。如果看完这篇文章还有不清楚的可以评论区问我。

以我从零准备自己的数据集为例子,首先准备好所有的图像和 用标注工具labelme 标注好的 .xml格式文件。如何组织文件夹和文件位置我录了个视频给大家看清楚。

https://v.qq.com/x/page/e0818v35sgi.html

视频中噪声有点大,建议静音观看

在一个文件夹 image 里创建两个子文件夹 train 和 test 分别存放所有的训练和测试图像。

同样在文件夹 label 里创建两个子文件夹 train 和 test 分别存放所有的训练和测试标注文件。

以上是准备原始的数据,然后我们要分别提取文件夹image和label里的文件路径,为接下来制作Pascal VOC格式数据集做准备。

注:本文的脚本代码是基于python2.7环境的,python3环境的用户可以用anaconda自行创建一个python2.7的环境,具体方法请百度。

创建sortpath1.sh文件,文件里就一行代码,复制进去保存以后关闭。

find /data/dataset/THIGH -name '*.xml' |sort -n > lb.txt

再创建sortpath2.sh文件,文件里也就一行代码,复制进去保存以后关闭。

find /data/dataset/THIGH -name '*.jpg' |sort -n > fullpath.txt

然后打开终端,输入

./ sortpath1.sh

按回车,即准备好了标注文件的所有路径 lb.txt。

再输入

./ sortpath2.sh

按回车,就准备好了所有图像的路径 fullpath.txt。

打开 fullpath.txt 和 lb.txt 看一下,会是下面这样的。

fullpath.txt

lb.txt

然后创建 prepare.py脚本,完整代码如下,直接复制即可。

import shutilimport osimg_path = 'VOC2007/JPEGImages'lb_path = 'VOC2007/Annotations'txt_path = 'VOC2007/ImageSets/Main/'os.makedirs(img_path)os.makedirs(lb_path)os.makedirs(txt_path)fg = dict()types = ['humerus', 'elbow', 'forearm']fimg = open('fullpath.txt')for line in fimg:    path = line.strip()    flag = path.split('/')[-1].split('.')[0]    for typ in types:        if path.find(typ) == -1:            continue        else:            flag = typ + '@' + flag    fg[flag] = pathflb = open('lb.txt')for line in flb:    path = line.strip()    flag = path.split('/')[-1].split('.')[0]    for typ in types:        if path.find(typ) == -1:            continue        else:            flag = typ + '@' + flag    temp = path.split('/')[-2]    extend = path.split('/')[-3]    #print temp    if fg.has_key(flag):        shutil.copy(fg[flag], img_path)        flag = flag.split('@')[-1]        os.rename(img_path + '/' + flag + '.jpg', img_path + '/' + extend + '_' + flag + '.jpg')        # print img_path, img_path.replace(flag, extend + '_' + flag)        shutil.copy(path, lb_path)        os.rename(lb_path + '/' + flag + '.xml', lb_path + '/' + extend + '_' + flag + '.xml')        if temp == 'train':            t1 = open(txt_path + 'train.txt', 'a')            t1.write(extend + '_' + flag + '\n')            t1.close()            t2 = open(txt_path + 'trainval.txt', 'a')            t2.write(extend + '_' + flag + '\n')            t2.close()        if temp == 'test':            t3 = open(txt_path + 'test.txt', 'a')            t3.write(extend + '_' + flag + '\n')            t3.close()        if temp == 'val':            print temp            t4 = open(txt_path + 'val.txt', 'a')            t4.write(extend + '_' + flag + '\n')            t4.close()            t5 = open(txt_path + 'trainval.txt', 'a')            t5.write(extend + '_' + flag + '\n')            t5.close()

保存,打开终端输入下述代码,并运行

python prepare.py

到这里所有工作就结束了!已经直接制作好了Pascal VOC格式的数据集!最后制作好的的数据集是这样的!

下面是我的知乎原文链接,欢迎评论交流。点击阅读原文,也可以直接访问。

https://zhuanlan.zhihu.com/p/53068162

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net