1、标注方案
标注方式:
Cvat1.0线上平台,连续帧2D框标注
标注文件格式:
XML
标注规则:
- 对于没有爪和推铲的挖掘机,拟生成一个同样位置的关键点框
- 每个挖掘机关键点框需要标注同样的位置
- 未有动作变化得图片标注为neg_digger(这里指未有动作之前的标注为neg_digger,挖掘机机体开始动作到结束静止都算任何一种动作标签)
- 标注关键点框时,尽量标准且精确,框需要标注在挖掘机上的大臂小臂的中心点
- 每个机型的关键点框,中心点必须在机型的部位上,且每个框的位置尽可能保持一致
标签:
挖掘机框
(1)neg_digger静止未动的挖掘机
(2)basket_digger铲斗上下摆动的挖掘机
(3)boom_digger大臂上下摆动的挖掘机
(4)blade_digger推土铲上下摆动的挖掘机
(5)forearm_digger小臂左右摆动的挖掘机
(6)rotate_digger旋转的挖掘机
关键点框:需要依据图片示例顺序进行标注
- points1关键点1
- points2关键点2
- points3关键点3
- points4关键点4
- points5关键点5
- points6关键点6
- points7关键点7
- points8关键点8
- points9关键点9
在每个点上都有属性:0该点不存在,却无法被估算/1被遮挡但可以估计坐标/2可见未被遮挡
- 标注示例
算法输出参数
不报警
```json
{
"algorithm_data": {
"is_alert": false,
"is_timeout": false,
"is_same_act": false,
"thresh_time_s": 30,
"pre_act": 1,
"infer_time":0,
"target_info": []
},
"model_data": {
"objects": [
{
"x": 1622,
"y": 677,
"width": 57,
"height": 69,
"confidence": 0.800463,
"name": "digger",
"keypoints": [
{
"point": [
1669,
715
],
"visibilty": 2,
"confidence": 0.987862,
"name": "points1"
},
{
"point": [
1649,
711
],
"visibilty": 2,
"confidence": 0.987862,
"name": "points2"
},
{
"point": [
1659,
722
],
"visibilty": 2,
"confidence": 0.987862,
"name": "points3"
},
{
"point": [
1659,
722
],
"visibilty": 2,
"confidence": 0.987862,
"name": "points4"
},
{
"point": [
1659,
722
],
"visibilty": 2,
"confidence": 0.987862,
"name": "points5"
},
{
"point": [
1659,
722
],
"visibilty": 2,
"confidence": 0.987862,
"name": "points6"
},
{
"point": [
1659,
722
],
"visibilty": 2,
"confidence": 0.987862,
"name": "points7"
},
{
"point": [
1659,
722
],
"visibilty": 2,
"confidence": 0.987862,
"name": "points8"
},
{
"point": [
1659,
722
],
"visibilty": 2,
"confidence": 0.987862,
"name": "points9"
}
]
}
]
}
}
```
```json
报警
{
"algorithm_data": {
"is_alert": true,
"is_timeout": true,
"is_same_act": true,
"thresh_time_s": 30,
"pre_act": 1,
"infer_time":12.37,
"target_info": [{
"x": 1622,
"y": 677,
"width": 57,
"height": 69,
"confidence": 0.800463,
"name": "boom_digger"
}]
},
"model_data": {
"objects": [
{
"x": 1622,
"y": 677,
"width": 57,
"height": 69,
"confidence": 0.800463,
"name": "digger",
"keypoints": [
{
"point": [
1669,
715
],
"visibilty": 2,
"confidence": 0.987862,
"name": "points1"
},
{
"point": [
1649,
711
],
"visibilty": 2,
"confidence": 0.987862,
"name": "points2"
},
{
"point": [
1659,
722
],
"visibilty": 2,
"confidence": 0.987862,
"name": "points3"
},
{
"point": [
1659,
722
],
"visibilty": 2,
"confidence": 0.987862,
"name": "points4"
},
{
"point": [
1659,
722
],
"visibilty": 2,
"confidence": 0.987862,
"name": "points5"
},
{
"point": [
1659,
722
],
"visibilty": 2,
"confidence": 0.987862,
"name": "points6"
},
{
"point": [
1659,
722
],
"visibilty": 2,
"confidence": 0.987862,
"name": "points7"
},
{
"point": [
1659,
722
],
"visibilty": 2,
"confidence": 0.987862,
"name": "points8"
},
{
"point": [
1659,
722
],
"visibilty": 2,
"confidence": 0.987862,
"name": "points9"
}
]
}
]
}
}
```
## 字段详解
| 序号 | 字段名称 | 类型 | 备注 |
| :---: | :---: | :---: | :---: |
| 1 | `algorithm_data` | Object | 业务相关的输出信息 |
| 2 | `is_alert` | bool | 报警标识, `true`告警, `false`不告警,当完成一套动作识别后,连续发生报警(即`pre_act`触发开始进行分析直至识别动作6(静止时),为一套动作完成)|
| 3 | `target_info` | Array | 报警信息,报警信息,仅输出引发报警相关的内容 |
| 4 | `model_data` | Object | 模型相关的输出信息 |
| 5 | `objects` | Array | 模型输出信息 |
| 6 | `is_timeout` | bool | 当`pre_act`参数更新时,从头开始计时,当识别到动作6(静止时),算法计时结束;当算法计时时间大于`thresh_time_s`时,返回true;当算法计时时间小于”thresh_time_s“时,返回false |
| 7 | `is_same_act` | bool | 当`pre_act`参数更新时,到识别到动作6(静止时),算法在此过程中进行算法动作识别,当算法识别到的动作与 `pre_act`预设动作相同时,返回true;不同时,返回false |
| 8 | `thresh_time_s` | float | 渣土车动作识别的时间阈值(平台侧下发或算法预设的) |
| 9 | `pre_act` | int | 渣土车动作识别的gt(平台侧下发或算法预设的),该值为1-6,分别对应6个动作,分别为动作1,2,3,4,5,6,6个动作的解释如下:
- 针对动作1:关键点1,2,3,4都会发生位移 -大臂上下摆动
- 针对动作2:关键点1发生位移 -铲斗上下摆动
- 针对动作3:关键点7发生位移 -推土铲上下摆动
- 针对动作4:关键点1,2,3,4,5,6发生位移 -旋转
- 针对动作5:关键点1,2发生位移 -小臂左右摆动
- 针对动作6:关键点都未有大位移 -静止未动 |
| 10 | `infer_time` | float | 当`is_alert` 为true时,返回动作识别的耗时,即从头开始计时,当识别到动作6(静止时),算法时间的消耗。附加:这一过程中可能多次重复一组动作|
- target_info字段详解:
| 序号 | 字段名称 | 类型 | 备注 |
| :---: | :---: | :---: | :---: |
| 1 | `x ` | int | 识别框左上角X坐标 |
| 2 | `y` | int | 识别框左上角Y坐标 |
| 3 | `width` | int | 识别框宽度 |
| 4 | `height` | int | 识别框高度 |
| 5 | `confidence` | double | 置信度 |
| 6 | `name` | String | 检测到告警时目标名称: (1)neg_digger静止未动的挖掘机(2)basket_digger铲斗上下摆动的挖掘机(3)boom_digger大臂上下摆动的挖掘机
(4)blade_digger推土铲上下摆动的挖掘机(5)forearm_digger小臂左右摆动的挖掘机(6)rotate_digger旋转的挖掘机 |
- object字段详解:
| 序号 | 字段名称 | 类型 | 备注 |
| :---: | :---: | :---: | :---: |
| 1 | `x` | int | 识别框左上角X坐标 |
| 2 | `y` | int | 识别框左上角Y坐标 |
| 3 | `width` | int | 识别框宽度 |
| 4 | `height` | int | 识别框高度 |
| 5 | `confidence` | double | 置信度 |
| 6 | `name` | String | 模型检测到的目标,digge挖掘机 |
| 6 | `keypoints` | array | 模型检测到关键点信息,关键点1到关键点9,9个关键点, |
- keypoints字段详解:
| 序号 | 字段名称 | 类型 | 备注 |
| :---: | :---: | :---: | :---: |
| 1 | `point` | array[int] | 以逗号分隔的x,y坐标 |
| 2 | `visibility` | int | 表示此坐标是否可见2: 可见1: 被遮挡但可以估计坐标 0: 该点不存在,却无法被估算,因此标注在背景上(预估标注) |
| 3 | `confidence` | double | 置信度 |
| 4 | `name` | string | 模型检测到的关键点名称(与标注对应):(1)points1关键点1(2)points2关键点2(3)points3关键点3(4)points关键点4(5)points5关键点5(6)points6关键点6(7)points7关键点7(8)points8关键点8(9)points9关键点9 |