RPC数据集整理与 Scalabel 标注说明
RPC数据集整理与 Scalabel 标注说明1. RPC 数据集简介RPCRetail Product Checkout Dataset是一个面向自动结算ACO, Automatic Checkout场景的大规模零售商品数据集核心目标是从结算台图像中自动识别商品并生成购物清单。RPC 的特点在于它同时包含受控环境下的单商品图像与真实结算场景下的多商品图像因此既适合做商品分类也适合做检测、计数、检索与结算场景理解。1.1 数据集关键特征根据 RPC 官方项目页与论文共包含200 个 SKU细粒度商品类别这 200 个 SKU 被组织为17 个 meta-categories元类别同时提供训练集Exemplar images单商品图验证集Checkout images多商品结算图测试集Checkout images多商品结算图Checkout 图像提供了多层级标注可用于检测、定位、分类和自动结算任务1.2 官方划分规模RPC 官方项目页给出的数据规模如下Split图像数目标数平均每图目标数平均每图类别数Training set (Exemplar images)53,73953,7391.001.00Validation set (Checkout images)6,00073,60212.276.33Test set (Checkout images)24,000294,33312.266.31另外验证集与测试集按 clutter level拥挤程度还可分为Clutter mode图像数目标数平均每图目标数平均每图类别数Easy10,00071,4967.153.81Medium10,000122,96112.306.27Hard10,000173,47817.358.872. RPC 的类别体系RPC 共有 200 个 SKU官方论文将其划分为 17 个元类别meta-categoriespuffed fooddried fruitdried foodinstant drinkinstant noodlesdessertdrinkalcoholmilkcanned foodchocolategumcandyseasonerpersonal hygienetissuestationery你当前提供的instances_val2019.json中也能看到这一结构categories中保存了id / name / supercategory例如{id: 1, name: 1_puffed_food, supercategory: puffed_food}{id: 79, name: 79_alcohol, supercategory: alcohol}{id: 200, name: 200_stationery, supercategory: stationery}此外这个 JSON 里还额外带有__raw_Chinese_name_df其中包含category_idsku_namesku_classname中文商品名clas中文大类名knowncodeshelfnum这对于后续把 RPC 转成中文目录名分类集、做可视化、或者生成 Scalabel 的类别显示名称都很有帮助。3. RPC 原始标注结构COCO 风格RPC 的常见标注文件如instances_train2019.jsoninstances_val2019.jsoninstances_test2019.json整体上是COCO 风格 JSON核心字段包括{info:{...},licenses:[...],categories:[...],images:[...],annotations:[...]}3.1images每张图像通常包含{id:123,file_name:xxx.jpg,width:800,height:800}3.2annotations每个实例通常包含{id:456,image_id:123,category_id:79,bbox:[x,y,w,h],area:12345.6,iscrowd:0}其中image_id关联到images[*].idcategory_id关联到categories[*].idbbox [x, y, w, h]左上角坐标 宽高area目标面积iscrowd是否为 crowd 实例3.3 训练 / 验证 / 测试图像语义train2019单商品图像exemplar images通常每张图对应一个商品类别val2019/test2019结算场景图像checkout images每张图有多个商品实例框因此在工程上常见两种转换方向RPC - YOLO 检测集使用val/test/train中的bbox生成检测标签RPC - YOLO 分类集train2019直接作为单商品分类样本val/test通过bbox crop裁成单商品 patch 作为分类验证/测试样本4. Scalabel 简介Scalabel 是一个开源、可扩展的视觉标注平台支持 2D/3D 标注、目标检测框、实例分割、多边形、轨迹等多种标注形式。其文档说明中Scalabel 的数据格式本质上由frame 列表组成每个 frame 可以包含图像信息和该图像上的多个 labels。对于 2D 目标检测最关键的字段是frame.nameframe.urlframe.labelslabel.idlabel.categorylabel.box2d {x1, y1, x2, y2}如果只做 RPC 商品框标注通常只需要使用2D Bounding Box子集即可。5. Scalabel 标注格式适配 RPC 的最小必要字段一个最小可用的 Scalabel 2D 检测标注文件通常可以写成一个 frame 数组[{name:20180827-10-42-32-575.jpg,url:images/20180827-10-42-32-575.jpg,videoName:,frameIndex:0,labels:[{id:ann_50196,category:187_tissue,attributes:{},manualShape:true,manualAttributes:true,box2d:{x1:120.0,y1:80.0,x2:240.0,y2:300.0}}]}]其中5.1 Frame 级字段name图像文件名url图像相对路径或绝对路径videoName图像任务一般可为空frameIndex图像任务可用索引占位labels该图像上全部标注对象5.2 Label 级字段id实例 ID可直接用 RPC 的annotation.idcategory类别名可用categories[*].name英文 SKU 名或__raw_Chinese_name_df.name中文商品名manualShape是否人工绘制框manualAttributes是否人工标注属性attributes扩展属性可为空字典box2d检测框要求是(x1, y1, x2, y2)而不是 COCO 的(x, y, w, h)6. RPC COCO - Scalabel 的字段映射RPC 原始标注是 COCO 风格而 Scalabel 检测标注更接近 frame-label 结构。二者转换关系可整理如下RPC 字段含义Scalabel 字段说明images[i].file_name图像文件名frame.name建议保留原文件名图像相对路径图像路径frame.url可填相对路径images[i].id图像 ID-作为中间关联键annotations[j].id实例 IDlabel.id建议转为字符串annotations[j].category_id类别 IDlabel.category需查categories或中文名映射annotations[j].bbox[0]xbox2d.x1左上角 xannotations[j].bbox[1]ybox2d.y1左上角 yannotations[j].bbox[0]bbox[2]xwbox2d.x2右下角 xannotations[j].bbox[1]bbox[3]yhbox2d.y2右下角 yannotations[j].iscrowdcrowd 标记attributes.iscrowd可选扩展属性categories[k].name英文类名label.category最常用__raw_Chinese_name_df.name中文商品名label.attributes.cn_name或label.category适合中文项目7. 推荐的 RPC - Scalabel 组织方式如果目标是把 RPC 转为 Scalabel 标注项目建议目录组织如下rpc_scalabel_project/ ├── images/ │ ├── val2019/ │ ├── test2019/ │ └── train2019/ ├── annotations/ │ ├── rpc_val_scalabel.json │ ├── rpc_test_scalabel.json │ └── rpc_train_scalabel.json └── meta/ ├── classes.txt ├── class_id_map.csv └── class_id_map.json其中images/存原图annotations/*.jsonScalabel 读取的 frame-label 标注文件meta/额外保存 RPC 的类别映射、中文名映射等8. RPC 转 Scalabel 的实现要点8.1 COCO bbox 转换为 Scalabel box2dRPC COCO:x,y,w,hann[bbox]Scalabel:box2d{x1:float(x),y1:float(y),x2:float(xw),y2:float(yh),}8.2 类别名选择策略推荐三种模式英文 SKU 名直接用categories[*].name如187_tissue中文商品名从__raw_Chinese_name_df根据category_id查找name如维他低糖原味豆奶250ml双语模式label.category 英文名label.attributes.cn_name 中文名最适合工具链兼容与人工核查兼顾8.3 可选属性扩展Scalabel 的attributes可扩展因此在 RPC 场景中可以加入{attributes:{category_id:103,supercategory:milk,cn_name:维他低糖原味豆奶250ml,cn_class:奶制品,known:true,code:4891028707851}}这样可以让 Scalabel 项目同时承担“可视化标注浏览器”和“零售商品元数据查看器”的角色。9. Scalabel 标注文件示例适配 RPC下面给出一个更完整的 RPC - Scalabel 示例[{name:20180827-10-42-32-575.jpg,url:images/val2019/20180827-10-42-32-575.jpg,videoName:,frameIndex:0,labels:[{id:50196,category:187_tissue,attributes:{category_id:187,supercategory:tissue,cn_name:某纸巾商品中文名,cn_class:纸品},manualShape:true,manualAttributes:true,box2d:{x1:120.0,y1:80.0,x2:240.0,y2:300.0}},{id:50197,category:79_alcohol,attributes:{category_id:79,supercategory:alcohol,cn_name:喜力啤酒500ml,cn_class:酒},manualShape:true,manualAttributes:true,box2d:{x1:260.0,y1:90.0,x2:330.0,y2:310.0}}]}]10. RPC 数据整理建议10.1 如果目标是目标检测建议保留images/instances_*.jsonclass_id_mapCOCO - YOLO / COCO - Scalabel 的转换脚本10.2 如果目标是商品分类建议整理为train/类名/*.jpgval/类名/*.jpgtest/类名/*.jpg其中val/test可由 checkout 图按 bbox 裁剪得到。10.3 如果目标是可视化审阅建议优先转成 Scalabel因为它更适合浏览每张图的所有商品框用英文/中文类名审阅扩展属性字段后续人工修订标注11. 小结RPC 是一个非常适合零售商品检测、分类与自动结算研究的数据集。它的标注原生是 COCO 风格因此非常适合做检测训练同时由于训练集为单商品图RPC 也非常适合作为细粒度商品分类数据源。若希望将 RPC 用于可视化标注管理、人工复核和后续二次修订那么将其转换为Scalabel 2D box 标注格式是一个很自然的选择。核心转换工作并不复杂重点只有两点将 COCO 的bbox [x, y, w, h]转为 Scalabel 的box2d {x1, y1, x2, y2}用category_id关联categories与__raw_Chinese_name_df生成更友好的类别显示名称与属性信息12. 参考资料RPC 官方项目页RPC: A Large-Scale and Fine-Grained Retail Product Checkout DatasetRPC 论文arXiv:1901.07249Scalabel 官方文档Scalabel Format / Quick StartRPC提供的instances_val2019.json其中包含categoriesimagesannotations__raw_Chinese_name_df
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2500678.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!