Loading... ## 1 前言 最近做的是一个比较偏的数据集,从网上找了700张图片,最多的类有500张,其余类都是20-40张,极不平衡,用标注工具手动标注后做了下实验,发现精度特别低,数量最多的类别还可以。所以决定在大型开源数据集上面找,根据要研究的对象,最终确定了Open Image数据集。查了下相应的文章,发现千篇一律的Ctrl C + Ctrl v,按指定类别下载的文章倒有,但是转为VOC格式的一个都没有。由于做的是目标检测这一块的,一个自己熟悉的标记格式很有帮助,而且VOC格式很多框架都支持,所以自己研究了一下谷歌数据集的标记特点并写了一个Python转化脚本。 ## 2 Open Image v4简单介绍 <div class="tip inlineBlock share"> These annotation files cover the 600 boxable object classes, and span the 1,743,042 training images where we annotated bounding boxes and visual relationships, as well as the full validation (41,620 images) and test (125,436 images) sets. </div> <div class="tip inlineBlock success"> <button class="btn m-b-xs btn-success btn-addon" onclick='window.open("https://storage.googleapis.com/openimages/web/index.html","_blank")'><i class="fontello fontello-google-plus"></i>谷歌OID官网主页</button> </div>  如果是做目标检测,要重点关注 ***class-descriptions-boxable.csv***、***validation-annotations-bbox.csv***、***train-annotations-bbox.csv***、***test-annotations-bbox.csv*** 这四个文件,然后按照下面的教程下载就行了。 ## 3 按指定类别下载数据集 ### 3.1 OIDv4_ToolKit 所要使用的一个开源工具是 OIDv4_ToolKit,目前该项目仅支持v4版本,但v4对于大多数任务足够了。 <button class="btn m-b-xs btn-success btn-addon" onclick='window.open("https://github.com/EscVM/OIDv4_ToolKit","_blank")'><i class="iconfont icon-github-copy"></i> OIDv4_ToolKit 项目</button> 用Gitbash把项目下载到本地: ``` git clone https://github.com/EscVM/OIDv4_ToolKit.git ``` ### 3.2 项目结构  ### 3.3 下载命令 运行下面的命令查看参数说明: ``` python main.py -h ``` 参数说明:  > `--type_csv` 'train' 或 'validation' 或 'test' 或 'all' 从哪个csv下载图像 > `--sub` 人工验证图像或机器生成的子集(h或m) > `--image_IsOccluded` 1或0 表示对象是否被图像中的另一个对象遮挡。 > `--image_IsTruncated` 1或0 表示对象是否超出图像的边界。 > `--image_IsGroupOf` 1或0 表示标记框是否跨越一组物体(分组5)。 > `--image_IsDepiction` 1或0 表示 对象是否是一个草稿或漫画。 > `--image_IsInside` 1或0 表示是否是从对象内部拍摄的照片。 > `--multiclasses` 0(默认值)或1 分别(0)或一起(1)下载不同的类 > `--n_threads` [默认20] 要使用的线程数 > `--noLabels` 没有标签创作 > `--limit` 要下载的图像数量的可选限制 按照下面的命令就行了: ```Python python main.py downloader --classes classes.txt --type_csv train python main.py downloader --classes classes.txt --type_csv validation python main.py downloader --classes classes.txt --type_csv test ``` ## 4 批量转化为VOC格式 ### 4.1 标签特点 具体类别的内部文件,一个Label文件夹,包含该类所有图像对应的标记文本,一个文本对应一个图片,一行一个标记框。   ### 4.2 分析 由于标签文本的命名和图像一致,那么只需要提取txt文件就行了,然后改后缀把图像复制到VOC的JPEGImages文件夹(也可以手动,哈哈,但是写都写了,就偷个懒一次完成吧)。但是VOC文件夹的标签名不能有空格,Open Image 有的类别是两个单词,中间有空格,所以要把前两个单词合并。 ### 4.3 批量转化 说了那么多,下面正式开始干货! 一键转换box2voc.py: <div class="hideContent">此处内容需要评论回复后(审核通过)方可阅读。</div> 匹配测试isPatch.py: <div class="hideContent">此处内容需要评论回复后(审核通过)方可阅读。</div> ## 5 最终效果 批量生成的annotations:  xml和图片的匹配效果:   2021/3/12更新:Open Image标注框有小数,从0.0-0.9不等,有的框边缘细微地方没有完全包含整个物体,所以采用取上/下整函数。 Last modification:March 12th, 2021 at 11:15 am © 允许付费转载 Support 喜欢就加个鸡腿吧! ×Close Appreciate the author Sweeping payments Pay by AliPay Pay by WeChat