接口说明
车型识别
识别图片中车辆的具体车型,可识别常见的3000+款车型(小汽车为主),输出车辆的品牌型号、颜色、年份、位置信息;支持返回对应识别结果的百度百科词条信息,包含词条名称、百科页面链接、百科图片链接、百科内容简介。
注:当前只支持单主体识别,若图片中有多个车辆,则识别目标最大的车辆。
public void sample(AipImageClassify client) {
// 传入可选参数调用接口
HashMap<String, String> options = new HashMap<String, String>();
options.put("top_num", "3");
options.put("baike_num", "5");
// 参数为本地路径
String image = "test.jpg";
JSONObject res = client.carDetect(image, options);
System.out.println(res.toString(2));
// 参数为二进制数组
byte[] file = readFile("test.jpg");
res = client.carDetect(file, options);
System.out.println(res.toString(2));
// 参数图片url
String url = "http://localhost/test.jpg";
res = client.carDetectUrl(url, options);
System.out.println(res.toString(2));
}
车型识别 请求参数详情
参数 | 是否必选 | 类型 | 可选值范围 | 说明 |
---|---|---|---|---|
image | 和url二选一 | string | - | 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少50px,最长边最大4096px,支持jpg/png/bmp格式 。注意:图片需要base64编码、去掉编码头后再进行urlencode。 |
url | 和image二选一 | string | - | 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少50px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效。 |
top_num | 否 | uint32 | - | 返回结果top n,默认5。 |
baike_num | 否 | integer | 0 | 返回百科信息的结果数,默认不返回 |
车型识别 返回数据参数详情
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 唯一的log id,用于问题定位 |
color_result | 是 | string | 车身颜色 |
result | 是 | car-result() | 车型识别结果数组 |
+name | 是 | string | 车型名称,示例:宝马x6 |
+score | 是 | double | 置信度,取值0-1,示例:0.5321 |
+year | 是 | string | 年份 |
+baike_info | 否 | object | 对应车型识别结果的百科词条名称 |
++baike_url | 否 | string | 对应车型识别结果百度百科页面链接 |
++image_url | 否 | string | 对应车型识别结果百科图片链接 |
++description | 否 | string | 对应车型识别结果百科内容描述 |
location_result | 是 | string | 车辆在图片中的位置信息 |
+width | 是 | float | 车辆区域的宽度 |
+height | 是 | float | 车辆区域的高度 |
+left | 是 | float | 车辆区域离左边界的距离 |
+top | 是 | float | 车辆区域离上边界的距离 |
车型识别 返回示例
{
"log_id": 4086212218842203806,
"location_result": {
"width": 447,
"top": 226,
"height": 209,
"left": 188
},
"result": [{
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E5%B8%83%E5%8A%A0%E8%BF%AAChiron/20419512",
"description": "布加迪Chiron是法国跑车品牌布加迪出品的豪华超跑车。配置四涡轮增压发动机,420 公里每小时,有23种颜色的选择,售价高达260万美元。"
},
"score": 0.98793351650238,
"name": "布加迪Chiron",
"year": "无年份信息"
},
{
"score": 0.0021970034576952,
"name": "奥迪RS5",
"year": "2011-2017"
},
{
"score": 0.0021096928976476,
"name": "奥迪RS4",
"year": "无年份信息"
},
{
"score": 0.0015581247862428,
"name": "奥迪RS7",
"year": "2014-2016"
},
{
"score": 0.00082337751518935,
"name": "布加迪威航",
"year": "2004-2015"
}],
"color_result": "颜色无法识别"
}
车辆属性识别
传入单帧图像,检测图片中所有车辆,返回每辆车的类型和坐标位置,可识别小汽车、卡车、巴士、摩托车、三轮车、自行车6大类车辆,并针对小汽车识别11种外观属性,包括:是否有车窗雨眉、是否有车顶架、副驾驶是否有人、驾驶位是否系安全带、遮阳板是否放下、车辆朝向等。
当前主要适用于普通监控场景,如道路、停车场等,无人机高空拍摄的图片,因车辆目标较小,识别效果可能欠佳,后续会扩展支持超高空拍摄场景,如有该场景的需求,请通过QQ群或提交工单,详细沟通测试情况。
注:
1、邀测的接口,不能直接在控制台调用,可通过QQ群(659268104)联系群管、或提交工单申请开通测试权限。
2、邀测的接口,暂未封装服务端SDK,只能通过API调用。
普通监控场景示例图片:
public void sample(AipImageClassify client) {
// 传入可选参数调用接口
HashMap<String, String> options = new HashMap<String, String>();
// 参数为二进制数组
byte[] file = readFile("test.jpg");
res = client.vehicleAttr(file, options);
System.out.println(res.toString(2));
// 参数图片url
String url = "http://localhost/test.jpg";
res = client.vehicleAttrUrl(url, options);
System.out.println(res.toString(2));
}
请求参数详情
参数 | 是否必选 | 类型 | 取值范围 | 说明 |
---|---|---|---|---|
image | 和url二选一 | string | 0-255彩色图像(base64编码) | 图像数据,Base64编码字符串,不超过4M。最短边至少50px,最长边最多4096px。支持图片格式:jpg/bmp/png。 注意:图片的base64编码是不包含图片头的,如(data:image/jpg;base64,) |
url | 和image二选一 | string | - | 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少50px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效。 |
type | 否 | string | 是否选定某些属性输出对应的信息,可从12种输出属性中任选若干,用英文逗号分隔(例如vehicle_type,roof_rack,skylight)。默认输出全部属性 |
附:type字段说明
ID | type | 说明 | 类别数 | 类别 |
---|---|---|---|---|
0 | vehicle_type | 车辆类型 | 6 | 小汽车、卡车、公交车、摩托、三轮车、自行车 |
1 | window_rain_eyebrow | 是否有车窗雨眉 | 2 | 无车窗雨眉、有车窗雨眉 |
2 | roof_rack | 是否有车顶架 | 2 | 无车顶架、有车顶架 |
3 | skylight | 是否有天窗 | 2 | 无天窗、有天窗 |
4 | in_car_item | 是否有车内摆放物 | 2 | 无车内摆放物、有车内摆放物 |
5 | rearview_item | 是否有后视镜悬挂物 | 2 | 无后视镜悬挂物、有后视镜悬挂物 |
6 | copilot | 副驾驶是否有人 | 2 | 副驾驶无人、副驾驶有人 |
7 | driver_belt | 驾驶位是否系安全带 | 2 | 驾驶位未系安全带、驾驶位系安全带 |
8 | copilot_belt | 副驾驶位是否系安全带 | 2 | 副驾驶位未系安全带、副驾驶位系安全带 |
9 | driver_visor | 驾驶位遮阳板是否放下 | 2 | 驾驶位遮阳板未放下、驾驶位遮阳板放下 |
10 | copilot_visor | 副驾驶位遮阳板是否放下 | 2 | 副驾驶位遮阳板未放下、副驾驶位遮阳板放下 |
11 | direction | 车辆朝向 | 8 | 正前方,右前方,正右方,右后方,正后方,左后方,正左方,左前方 |
返回参数详情
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
vehicle_num | 是 | int | 检测到的车辆框数目 |
vehicle_info | 是 | object数组 | 每个车辆检测框的具体信息 |
+location | 是 | object | 检测到的车辆框位置 |
++left | 是 | int | 检测框左坐标 |
++top | 是 | int | 检测框顶坐标 |
++width | 是 | int | 检测框宽度 |
++height | 是 | int | 检测框高度 |
+attributes | 否 | object数组 | 包含所有车辆属性内容 |
++vehicle_type | 否 | object | 车辆类型 |
+++name | 否 | string | 如"小汽车" |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值 |
++window_rain_eyebrow | 否 | object | 是否有车窗雨眉 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大(即有车窗雨眉),实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.02 |
++roof_rack | 否 | object | 是否有车顶架 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.01 |
++skylight | 否 | object | 是否有天窗 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.5 |
++in_car_item | 否 | object | 是否有车内摆放物 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.35 |
++rearview_item | 否 | object | 是否有后视镜悬挂物 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.4 |
++copilot | 否 | object | 副驾驶是否有人 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.55 |
++driver_belt | 否 | object | 驾驶位是否系安全带 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.75 |
++copilot_belt | 否 | object | 副驾驶位是否系安全带 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.85 |
++driver_visor | 否 | object | 驾驶位遮阳板是否放下 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.2 |
++copilot_visor | 否 | object | 副驾驶位遮阳板是否放下 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.1 |
++direction | 否 | object | 车辆朝向 |
+++name | 否 | string | 如"正前方" |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值 |
返回示例
未检测到任何车辆:
{
"vehicle_num": 0,
"vehicle_info":
[
{
"location":
{
"left": 0,
"top": 0,
"width": 0,
"height": 0
"score": 0
}
"attributes":
{
}
}
]
}
检测到2辆小汽车:
{
"vehicle_num": 2,
"vehicle_info":
[
{
"location":
{
"left": 100,
"top": 200,
"width": 200,
"height": 400
}
"attributes":
{
"vehicle_type":
{
"name": "小汽车",
"score": 0.852
}
"window_rain_eyebrow":
{
"score": 0.937
}
"roof_rack":
{
"score": 0.889
}
"skylight":
{
"score": 0.925
}
"in_car_item":
{
"score": 0.774
}
"rearview_item":
{
"score": 0.774
}
"copilot":
{
"score": 0.711
}
"driver_belt":
{
"score": 0.633
}
"copilot_belt":
{
"score": 0.721
}
"driver_visor":
{
"score": 0.455
}
"copilot_visor":
{
"score": 0.455
}
"direction":
{
"name": "正前方",
"score": 0.455
}
}
}
{
"location":
{
"left": 400,
"top": 200,
"width": 200,
"height": 400
}
"attributes":
{
"vehicle_type":
{
"name": "小汽车",
"score": 0.921
}
"window_rain_eyebrow":
{
"score": 0.918
}
"roof_rack":
{
"score": 0.850
}
"skylight":
{
"score": 0.714
}
"in_car_item":
{
"score": 0.787
}
"rearview_item":
{
"score": 0.787
}
"copilot":
{
"score": 0.711
}
"driver_belt":
{
"score": 0.633
}
"copilot_belt":
{
"score": 0.721
}
"driver_visor":
{
"score": 0.455
}
"copilot_visor":
{
"score": 0.455
}
"direction":
{
"name": "右前方",
"score": 0.455
}
}
}
]
}
车辆检测
传入单帧图像,检测图片中所有机动车辆,返回每辆车的类型和坐标位置,可识别小汽车、卡车、巴士、摩托车、三轮车5类车辆,并对每类车辆分别计数,同时可定位小汽车、卡车、巴士的车牌位置,支持指定矩形区域的车辆检测与数量统计。
当前主要适用于普通监控场景,如道路、停车场等,无人机高空拍摄的图片,因车辆目标较小,识别效果可能欠佳,后续会扩展支持超高空拍摄场景,如有该场景的需求,请通过QQ群或提交工单,详细沟通测试情况。
public void sample(AipImageClassify client) {
// 传入可选参数调用接口
HashMap<String, String> options = new HashMap<String, String>();
// 参数为二进制数组
byte[] file = readFile("test.jpg");
res = client.vehicleDetect(file, options);
System.out.println(res.toString(2));
// 参数图片url
String url = "http://localhost/test.jpg"
res = client.vehicleDetectUrl(url, options);
System.out.println(res.toString(2));
}
请求参数详情
参数 | 是否必选 | 类型 | 可选值范围 | 说明 |
---|---|---|---|---|
image | 和url二选一 | string | 0-255彩色图像(base64编码) | 图像数据,Base64编码字符串,不超过4M。最短边至少50px,最长边最多4096px。支持图片格式:jpg,bmp,png。 注意:图片的base64编码是不包含图片头的,如(data:image/jpg;base64,) |
url | 和image二选一 | string | 0-255彩色图像(base64编码) | 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少50px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效。 |
area | 否 | string | 小于原图像素范围 | 只统计该矩形区域内的车辆数,缺省时为全图统计。 逗号分隔,如‘x1,y1,x2,y2,x3,y3...xn,yn',按顺序依次给出每个顶点的x、y坐标(默认尾点和首点相连),形成闭合矩形区域。 服务会做范围(顶点左边需在图像范围内)及个数校验(数组长度必须为偶数,且为4个顶点);目前只支持单个矩形区域。坐标取值不能超过图像宽度和高度,比如1280的宽度,坐标值最大到1279。 |
返回参数详情
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
vehicle_num | 是 | object | 检测到的车辆数目 |
+car | 是 | int | 小汽车数量 |
+truck | 是 | int | 卡车数量 |
+bus | 是 | int | 巴士数量 |
+motorbike | 是 | int | 摩托车数量 |
+tricycle | 是 | int | 三轮车数量 |
+carplate | 是 | int | 车牌的数量,小汽车、卡车、巴士才能检测到车牌 |
vehicle_info | 是 | object[] | 每个框的具体信息 |
+location | 是 | object | 检测到的目标坐标位置 |
++left | 是 | int32 | 目标检测框左坐标 |
++top | 是 | int32 | 目标检测框顶坐标 |
++width | 是 | int32 | 目标检测框宽度 |
++height | 是 | int32 | 目标检测框高度 |
+type | 是 | int32 | 目标物体类型,car、truck、bus、motorbike、tricycle、carplate |
+probability | 是 | float | 置信度分数,取值0-1之间,越接近1说明识别准确的概率越大 |
返回示例
未检测到任何车辆:
{
"vehicle_num":
{
"car":0,
"truck":0,
...
"tricycle":0
},
"vehicle_info":[]
}
检测到3辆小汽车、1辆卡车:
{
"vehicle_num": {
"motorbike": 0,
"tricycle": 0,
"car": 3,
"carplate": 0,
"truck": 1,
"bus": 0
},
"vehicle_info": [
{
"type": "car",
"location": {
"width": 73,
"top": 655,
"left": 1193,
"height": 49
},
"probability": 0.89164280891418
},
{
"type": "car",
"location": {
"width": 40,
"top": 582,
"left": 1026,
"height": 37
},
"probability": 0.75931918621063
},
{
"type": "car",
"location": {
"width": 131,
"top": 712,
"left": 1366,
"height": 68
},
"probability": 0.74551039934158
},
{
"type": "truck",
"location": {
"width": 348,
"top": 604,
"left": 229,
"height": 311
},
"probability": 0.80106335878372
}
]
}
车辆外观损伤识别
针对常见的小汽车车型,识别车辆外观受损部件及损伤类型,支持32种车辆部件、5大类外观损伤。同时可输出损伤的数值化结果(长宽、面积、部件占比),支持单图多种损伤的识别。
- 可识别的32种汽车外观零部件:前保险杠、机盖、左前叶子板、左A柱、左前门、左后叶子板、左底大边、后保险杠、行李箱盖、右后叶子板、右底大边、右后门、右前门、右前叶子板、右A柱、车顶、钢圈、中网、左前大灯、左前雾灯、左前雾灯框、右前大灯、右前雾灯、右前雾灯框、前保下隔栅、左后视镜、右后视镜、左后外尾灯、左后内尾灯、右后外尾灯、右后内尾灯、左后门
- 可识别的5类外观损伤:刮擦、凹陷、开裂、褶皱、穿孔(一般指有破洞的情况)
示例图片如下: 1、刮擦、凹陷
2、开裂
3、褶皱
4、穿孔
public void sample(AipImageClassify client) {
// 传入可选参数调用接口
HashMap<String, String> options = new HashMap<String, String>();
// 参数为二进制数组
byte[] file = readFile("test.jpg");
res = client.vehicleDamage(file, options);
System.out.println(res.toString(2));
}
请求参数详情
参数 | 是否必选 | 类型 | 取值范围 | 说明 |
---|---|---|---|---|
image | 是 | string | 0-255彩色图像(base64编码) | 图像数据,Base64编码字符串,不超过4M。最短边至少50px,最长边最多4096px。支持图片格式:jpg,bmp,png。 注意:图片的base64编码是不包含图片头的,如(data:image/jpg;base64,) |
返回参数详情
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint32 | 请求标识码,随机数,唯一;用于排查问题 |
result | 是 | object | 识别结果 |
+description | 否 | string | 检验图片效果是否满足识别要求,包含车辆检测、图片内容过滤两部分 1、图片符合要求时,返回very good,返回示例:"Very good【车辆局部特写图】【1.000000】" 2、图片不符合要求时,显示检验不通过的描述信息: 1)没检测到车辆,返回示例:"No car detected !" 2)检测到了车辆,但图片内容未通过校验,返回描述信息【前端过滤类别】【概率值】,返回示例:"Failed【散落部件】【0.303969】" |
+damage_info | 否 | object[] | 部件损伤信息 |
++parts | 否 | string | 汽车零部件名称,共计支持32种零部件 |
++type | 否 | unit32 | 损伤类别,共计支持5类外观损伤;无损伤则返回“正常” 。注:如果全图无损伤,则整个返回结果为空;某个部件的type为“正常”仅表示该部件无损伤。 |
++probability | 否 | float | 概率打分 |
++numeric_info | 否 | object[] | 损伤的数值化输出结果,如果有多处损伤,则有多个object;损伤的部件需拍摄完整,才能输出数值化结果,否则只返回部件名称和损伤类别,不输出数值化信息 |
+++length | float | 否 | 损伤区域的长,单位厘米 |
+++width | float | 否 | 损伤区域的宽,单位厘米 |
+++area | float | 否 | 损伤区域的面积,为实际面积,不是单纯的长*宽 |
+++ratio | float | 否 | 损伤区域面积相对于部件面积的占比,= 损伤区域面积 / 部件区域面积,均为实际面积,不是单纯的长*宽 |
返回示例
图片不满足识别需求,未检测到汽车:
{
"description":"No car detected !",
"damage_info":[]
}
图片不满足识别需求,检测到汽车,但未通过图片内容校验:
{
"description":"Failed[散落部件][0.303969]",
"damage_info":[]
}
图片满足识别需求,正常返回,不包含数值化输出结果,有两处损伤:
{
"description":"Very good[车辆局部特写图][1.000000]",
"damage_info":[
{
"parts":前保险杠,
"probability":89,
"type":刮擦
},
{
"parts":左前叶子板,
"probability":74,
"type":凹陷
}
]
}
图片满足识别需求,正常返回,包含数值化输出结果,有两处损伤:
{
"description":"Very good[车辆局部特写图][1.000000]",
"damage_info":[
{
"numeric_info":[
{
"area":3.540100097656250,
"height":5.260000228881836,
"ratio":0.04069080576300621,
"width":1.139999985694885
}
],
"parts":前保险杠,
"probability":95,
"type":刮擦,
"numeric_info":[
{
"area":2.418999910354614,
"height":2.750,
"ratio":0.08458041399717331,
"width":1.460000038146973
}
],
"parts":左前叶子板,
"probability":84,
"type":刮擦
}
]
}