更新时间:2024-10-30 GMT+08:00
分享

预标注模型文件

预标注模型完成对数据的推理,并将推理结果按照规定格式放在指定路径中。

模型文件基本要求

自定义模型包通过环境变量获取数据集路径和推理结果存放路径,将每帧数据的推理结果按照规定格式存入规定路径的json文件中。

自定义模型包中必须包含启动文件。除此之外,还可包含一些其他必要的自定义模型文件、自定义脚本、自定义库等。

├─ model                # 模型包根目录,上传模型时进入该目录下(名称可自定义)  
      ├─ customer_inference.py     #“模型推理”启动文件(名称可自定义)  
      ├─ customer_package          #自定义库(可选,名称可自定义)  
          ├─ __init__.py           #自定义库 - >  python库  
          ├─ tensor_define.py      #自定义库 - >  python库文件  
          └─ ...       
      ├─ customer_utils.py         #自定义脚本1(可选,名称可自定义)  
      ├─ customer_script2.sh       #自定义脚本2(可选,名称可自定义)  
      ├─ sub_directory             #子文件夹  
          └─ customer_model.pb     #自定义模型文件(必选,名称可自定义)  
      └─ ...                       #其他(可选)
  • 启动文件

    整个自定义模型包的入口文件,该文件在启动容器时被运行。创建预标注任务时,需在“标注脚本”处提供该文件的绝对路径。文件绝对路径为模型仓库中的模型在AI引擎中的路径(“/tmp/label/source/model/”)+文件在模型中的相对路径,以上述为例,路径为“/tmp/label/source/model/customer_inference.py”。

  • 自定义库

    允许用户使用自定义库,但不推荐使用需要编译的库,以避免与内置库文件冲突。示例中使用Python语言中的package作为自定义库。

  • 自定义脚本

    允许自定义除启动文件以外的自定义脚本文件,可根据实际所需编写。

  • 自定义模型文件

    自定义模型文件“xxx.pb”,需要通过编写自定义脚本加载并使用。自定义模型文件的存放位置及名称可自定义,可以将相关模型文件保存至子文件夹中,也可以保存至根目录下。

环境变量使用说明

模型推理所需的待标注数据集目录、预标注结果数据目录、标注物文件目录、模型文件目录、预标注日志文件目录均可通过注入镜像的环境变量获取,详情见镜像制作(标注)

预标注结果格式说明

推理完毕后,需要按照规定格式组织预标注结果,并保存在特定路径下的json文件中,路径要求见“模型文件基本要求”。

Json文件内容组织结构如下所示,labels字段中保存了每个预测对象的基本信息。

{
         "labels":[]
}

其中规模3D大规模点云分割任务还包含“label_ext”字段,具体参考“3D大规模点云分割”。

{
         "labels":[],
         "labels_ext":{}
}

不同类型的任务对象基本信息所需格式不同,具体如下所示:

2D目标检测

labels中保存每个预测对象的基本信息,每个基本信息格式如下所示。
{
'label_meta_id': 168,        #标注对象对应的平台标注物的ID,可从标注物文件(OCTPS_META_PATH)中获取(即id字段)
'bndbox': {                  #矩形框的位置信息
         'xmin': 235,
         'ymin': 123,
         'xmax': 456,
         'ymax': 360
         },
'shape_type': "bndbox",        #标注物的形状,此处表示2D矩形框
'serial_number':5              #当前对象在当前帧的唯一ID, 从1递增
"label_object_id": 5,          #标注物合成对象的唯一自增id,如果标注物之间没有合成则与serial_number保持一致
"label_meta_name": "Car"       #标注物名称
}

2D语义分割

Labels中保存每个预测对象的基本信息,每个基本信息格式如下所示。

{
'label_meta_id': 167,                   #标注对象对应的平台标注物的ID,可从标注物文件(OCTPS_META_PATH)中获取(即id字段)
'shape_type': 'polygon',                # 标注物的形状,此处表示多边形
'serial_number': 2,                     #当前对象在当前帧的唯一ID,从1递增
       'polygon':{                      #多边形的具体信息
              'size': 3,                # 多边形点数
              'points':[                # 每个点的位置信息
                     {'xpoint': 123, 'ypoint': 456},
                     {'xpoint': 135, 'ypoint': 467},
                     {'xpoint': 123, 'ypoint': 456}
                     ]
              }
"label_object_id": 2,                  #标注物合成对象的唯一自增id,如果标注物之间没有合成则与serial_number保持一致
"label_meta_name": "Car"               #标注物名称
}

2D车道线:

Labels中保存每个预测对象的基本信息,每个基本信息格式如下所示。

{
'label_meta_id': 288,                   #标注对象对应的平台标注物的ID,可从标注物文件(OCTPS_META_PATH)中获取(即id字段)
       'shape_type': 'line',            #标注物的形状,此处表示折线
'serial_number': 35,                    #当前对象在当前帧的唯一ID,从1递增
       'line':{                         #折线的具体信息
              'size': 3,                #折线点数
              'points':[                #每个点的位置信息
                     {'xpoint': 123, 'ypoint': 456},
                     {'xpoint': 135, 'ypoint': 467},
                     {'xpoint': 123, 'ypoint': 456}
                     ]
              }
"label_object_id": 35,                 #标注物合成对象的唯一自增id,如果标注物之间没有合成则与serial_number保持一致
"label_meta_name": "Car"               #标注物名称
}

3D目标检测:

Labels中保存每个预测对象的基本信息,每个基本信息格式如下所示。

{
  'label_meta_id': 174,                #标注对象对应的平台标注物的ID,可从标注物文件(OCTPS_META_PATH)中获取(即id字段)
      'cube_3d': {                     # 3D框的具体信息
        'dimensions': {                #3D框的长宽高
          'width': 1.839784026145935,
          'length': 4.315396785736084,
          'height': 1.55556058883667
        },
        'location': {                  #3D框的位置
          'x': -4.736311912536621,
          'y': -71.40546417236328,
          'z': -1.356909990310669
        },
        'serial_number': 3,            #当前对象在当前帧的唯一ID,从1递增
              'rotation': {"x":0,"y":0,"z":anger},       #3D框的朝向信息
      },
      'shape_type': 'cube_3d',          #标注物形状,此处表示3D框
"label_object_id": 3,                   #标注物合成对象的唯一自增id,如果标注物之间没有合成则与serial_number保持一致
"label_meta_name": "Car"                #标注物名称
    }

3D大规模点云分割:

Labels中保存每个预测类别的基本信息,每个基本信息格式如下所示。

{
"label_meta_id": 1423,                    #标注对象对应的平台标注物的ID,可从标注物文件(OCTPS_META_PATH)中获取(即id字段)
  "polygon_3d_v2": {                      #类别的基础信息
"ascii_char": "\""                        #当前类别对应的ascii码
  },
  "shape_type": "polygon_3d_v2",          #标签的形状,此处表示3D语义分割对应的形状
  "name": "BEV土墙"                       #标注物名称
}

此外,3D大规模点云分割的结果文件中的labels_ext字段示例如下:

"labels_ext": {
  "ascii_string": "############################################################\\#######"
}

ascii_string中保存了点云中每个点的类别,如果此帧点云的点数为1000,则此字段会有1000个字符,每个字符分别代表一个点的类别。字符具体表示的类别可以根据labels- > polygon_3d_v2- > ascii_char和labels- > name找到。

用来表示点类别的ascii码包括:

['!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', '。', '<', '=', '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~'],此外空字符(' ')表示未标注的类别。

相关文档