【阿里云高校计划】车辆保险应用 day4 【拨云见日】

  • 【阿里云高校计划】车辆保险应用 day4 【拨云见日】
    • 实施前准备工作
      • 一、本地图片上传为OSS
        • 1.开通oss
        • 2.创建Bucket
      • 二、开通目标检测服务
      • 三、查看所需API
        • 1.车辆部件识别
        • 2.车辆损伤识别
        • 3.车险图片分类
    • 具体实施
      • 一、本地图片上传至OSS的uploadPic类
        • 1.在maven中导入所需依赖
        • 2.编写UploadPic类
        • 3.运行结果
      • 二、车辆部件识别RecognizeVehicleParts类
        • 1.在maven中导入所需依赖
        • 2.编写RecognizeVehicleParts类
        • 2.运行结果
    • Type说明
      • 三、车辆损坏识别类
        • 1.在maven中导入所需依赖
        • 2.编写RecognizeVehicleDamage类
        • 3.识别结果
      • 四、车险图片分类
        • 1.在maven中导入所需依赖
        • 2.编写ClassifyVehicleInsurance类
        • 3.识别结果
    • 实施完成
    • 加入高校计划

【阿里云高校计划】车辆保险应用 day4 【拨云见日】

有一说一,在五天阿里云视觉训练营中,身为菜鸟的我只学会了调用外部API和使用maven,我很开心,感谢阿里。

这次只在后端实现,前后端实在不会关联。希望以后学成之后可以实现。

实施前准备工作

一、本地图片上传为OSS

1.开通oss

其实在上周就开通了,但是本人较笨,搞了半天没搞好,这周末终于有空重新搞起了!

2.创建Bucket

Bucket的配置我只改了名称和区域,区域是因为

二、开通目标检测服务

三、查看所需API

这里我们用到阿里云视觉智能开放平台提供的三个功能:

  • 车辆部件识别
  • 车辆损伤识别
  • 车险图片分类

1.车辆部件识别

检测图片中车辆部件的位置以及名称。

2.车辆损伤识别

针对常见小汽车车型,识别车辆外观受损部件及损伤类型,可识别数十种车辆部件、五大类外观损伤。(刮擦、凹陷、开裂、褶皱、穿孔)

3.车险图片分类

对输入的车险图片进行分类。

具体实施

一、本地图片上传至OSS的uploadPic类

1.在maven中导入所需依赖
<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.8.0</version>
</dependency>
2.编写UploadPic类
package com.example.demo;import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;import java.io.File;
import java.net.URL;
import java.security.SecureRandom;
import java.util.Date;
import java.lang.*;
import java.util.Scanner;public class UploadPic {public static String UploadPic(){// Endpoint以杭州为例,其它Region请按实际情况填写。String endpoint = "oss-cn-shanghai.aliyuncs.com";// 阿里云主账号AccessKey。String accessKeyId = "*************";String accessKeySecret = "*************";//本地文件名System.out.println("请输入本地图片path:");Scanner scanner = new Scanner(System.in);String fileName = scanner.nextLine();String bucketName = "auto-insurance-pic";// 获取文件的后缀名String suffixName = fileName.substring(fileName.lastIndexOf("."));// 生成上传文件名String objectName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + suffixName;// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);// 如果需要上传时设置存储类型与访问权限,请参考以下示例代码。// ObjectMetadata metadata = new ObjectMetadata();// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());// metadata.setObjectAcl(CannedAccessControlList.Private);// putObjectRequest.setMetadata(metadata);// 上传文件。ossClient.putObject(bucketName, objectName, new File(fileName));// 设置URL过期时间为1小时。Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000);// 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);// 关闭OSSClient。ossClient.shutdown();return url.toString();}
}
3.运行结果

运行成功!

二、车辆部件识别RecognizeVehicleParts类

1.在maven中导入所需依赖

因为属于目标检测,而根据文档中的导入指令有错,所以我来到了阿里的maven仓库下查找并选择了最新的版本进行导入。

阿里maven私有仓库服务:https://maven.aliyun.com/mvn/search

<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.4.8</version>
</dependency>
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.52</version>
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-objectdet</artifactId><version>1.0.7</version>
</dependency>
2.编写RecognizeVehicleParts类
package com.example.demo;import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.example.demo.UploadPic;
import com.google.gson.Gson;
import java.util.*;
import com.aliyuncs.objectdet.model.v20191230.*;public class RecognizeVehicleParts {public static void main(String[] args) {DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "accessKeyId", "accessKeySecret");IAcsClient client = new DefaultAcsClient(profile);RecognizeVehiclePartsRequest request = new RecognizeVehiclePartsRequest();request.setRegionId("cn-shanghai");request.setImageURL(UploadPic.UploadPic());try {RecognizeVehiclePartsResponse response = client.getAcsResponse(request);System.out.println(new Gson().toJson(response));} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {System.out.println("ErrCode:" + e.getErrCode());System.out.println("ErrMsg:" + e.getErrMsg());System.out.println("RequestId:" + e.getRequestId());}}
}
2.运行结果

返回值为:

{"requestId":"BBFB102D-5EAC-483F-9A94-9DA79A06E1F6","data":{"elements":[{"score":0.98788995,"type":"left_tail_light","boxes":[132,274,862,607]},{"score":0.952229,"type":"left_rear_wing","boxes":[4,162,365,750]},{"score":0.74785864,"type":"rear_bumper","boxes":[60,456,987,760]}],"originShapes":[768,1024]}}

返回部件类型为:left_tail_light 左后灯,left_rear_wing 左后翼,rear_bumper尾部保险杠

识别成功!(其实我是想识别左后灯,结果连其他两个也识别出来了!)

再来一张!!

返回值为:

{"requestId":"61E13B25-82AD-4E4C-A133-ADA281C1A4EE","data":{"elements":[{"score":0.9911305,"type":"right_front_door","boxes":[1,0,350,559]},{"score":0.9898079,"type":"right_front_tire","boxes":[335,191,727,656]},{"score":0.98655057,"type":"right_front_wing","boxes":[296,2,749,490]},{"score":0.97444427,"type":"right_doorsill","boxes":[1,497,359,651]},{"score":0.9604019,"type":"front_bumper","boxes":[671,168,779,465]}],"originShapes":[768,1024]}}

返回部件类型为:right_front_door 右前门,right_front_tire 右前轮,right_front_wing右前翼,right_doorsill右底大边,front_bumper前保险杠

识别正确!超乎预期

附文档的type说明

Type说明

名字 英文名字 部件编码 标注编码 是否是34部件 是否计划支持
前保险杠 front_bumper PR01 11
后保险杠 rear_bumper PR02 13
左前大灯 left_light PR03 71
右前大灯 right_light PR04 72
中网 grille PR05 b11
中网 grille PR05 B11
前机盖 hood PR06 21
左前门 left_front_door PR07 51
右前门 right_front_door PR08 52
左后门 left_rear_door PR09 53
右后门 right_rear_door PR010 54
左前翼子板 left_front_wing PR11 41
右前翼子板 right_front_wing PR12 42
左后翼子板 left_rear_wing PR13 43
右后翼子板 right_rear_wing PR14 44
后机盖 decklid PR015 23
前挡风玻璃 front_windshield PR16 61
后挡风玻璃 rear_windshield PR17 63
左后视镜 left_mirror PR18 93
右后视镜 right_mirror PR19 94
左尾灯 left_tail_light PR20 73
右尾灯 right_tail_light PR21 74
左雾灯 left_foglight PR22 b13
左雾灯 left_foglight PR22 B13
右雾灯 right_foglight PR23 b14
右雾灯 right_foglight PR23 B14
格栅 grates PR24 b12
格栅 grates PR24 B12
右前车窗 right_front_window PR25 82
左前车窗 left_front_window PR26 81
右后车窗 right_rear_window PR27 84
左后车窗 right_tail_light PR28 83
右底大边 right_doorsill PR29 92
左底大边 left_doorsill PR30 91
右前门把手 right_front_doorknob PR31 502
左前门把手 left_front_doorknob PR32 501
左后门把手 left_rear_doorknob PR34 503
右后门把手 right_tail_light PR33 504
左前轮胎 left_front_tire PR3601 31
左后轮胎 left_rear_tire PR3602 33
右前轮胎 right_front_tire PR3603 32
右后轮胎 right_tail_light PR3604 34
轮胎 right_tail_light PR36 3
右前轮眉 right_front_WheelBrow PR1203 352
左前轮眉 left_front_WheelBrow PR1103 351
右后轮眉 right_rear_WheelBrow PR1403 354
左后轮眉 left_rear_WheelBrow PR1303 353
左前钢圈 left_front_ring PR3501 316
左后钢圈 left_rear_ring PR3502 336
右前钢圈 right_tail_light PR3503 326
右后钢圈 right_rear_ring PR3504 346
钢圈 ring PR35 306
左前门饰条 left_front_door_Panel PR0701 6511
右前门饰条 right_front_door_Panel PR0801 6512
左后门饰条 left_rear_door_Panel PR0901 6513
右后门饰条 right_rear_door_Panel PR1001 6514
左前门亮条 left_front_door_Wisp PR0701 6521
右前门亮条 right_front_door_Wisp PR0801 6522
左后门亮条 left_rear_door_Wisp PR0901 6523
右后门亮条 right_rear_door_Wisp PR1001 6524
左前门饰板 left_front_door_Plaque PR0703 166
右前门饰板 right_front_door_Plaque PR0803 266
左后门饰板 left_rear_door_Plaque PR0903 366
右后门饰板 right_rear_door_Plaque PR1003 466
前保险杠饰条 front_bumper_Panel PR0101 1651
后保险杠饰条 rear_bumper_Panel PR0201 3651
前保险杠亮条 front_bumper_Wisp PR0102 1652
后保险杠亮条 rear_bumper_Wisp PR0202 3652
前保险杠护板 front_bumper_Backplate PR0103 6621
后保险杠护板 rear_bumper_Backplate PR0203 6623
前保险杠导流板 front_bumper_Deflector PR0104 6611
后保险杠导流板 rear_bumper_Deflector PR0204 6613
后保反光板 BumperLight PR0205 761
车顶 Roof 待定 25
A柱 Apillar 待定 26
挡泥板 Fender 待定 36
反光镜灯 MirrorLight 待定 762
翼子板灯 WingLight 待定 763
牌照灯 PlateLight 待定 764
车窗三角玻璃 TriangleWindow 待定 85
天窗 RoofWindow 待定 86
字标 WordMark 待定 67
牵引钩盖板 DragCover 待定 681
喷水嘴盖板 LightWaterCover 待定 682
电眼 ElectricEye 待定 683
油箱盖 TankCover 待定 684
导流板(无方向) Deflector 待定 661
门把手(无方向) Deflector 待定 50
车标 logo 待定 b16,B16
饰板(无方向) Plaque 待定 66
保险杠(无方向) Roof 待定 1
车牌 plate 待定 b17,B17
雾灯(无方向) foglight 待定 b15,B15
亮条(无方向) Wisp 待定 652
翼子板(无方向) wing 待定 4
饰条(无方向) Panel 待定 651
底大边(无方向) doorsill 待定 9
门(无方向) door 待定 5
挡风玻璃 windshield 待定 6
大灯(无方向) light 待定 70
挡泥板 Fender 待定 36
轮眉(无方向) WheelBrow 待定 35
看不出什么部件 待定 00

三、车辆损坏识别类

1.在maven中导入所需依赖

见本文二-1

2.编写RecognizeVehicleDamage类
package com.example.demo;import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import java.util.*;
import com.aliyuncs.objectdet.model.v20191230.*;public class RecognizeVehicleDamage {public static void main(String[] args) {DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "accessKeyId", "accessKeySecret");IAcsClient client = new DefaultAcsClient(profile);RecognizeVehicleDamageRequest request = new RecognizeVehicleDamageRequest();request.setRegionId("cn-shanghai");request.setImageURL(UploadPic.UploadPic());try {RecognizeVehicleDamageResponse response = client.getAcsResponse(request);System.out.println(new Gson().toJson(response));} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {System.out.println("ErrCode:" + e.getErrCode());System.out.println("ErrMsg:" + e.getErrMsg());System.out.println("RequestId:" + e.getRequestId());}}
}
3.识别结果

返回值为:

{"requestId":"7FFBD390-7019-4B85-9FFA-779C912A9CEB","data":{"elements":[{"score":0.414995,"type":"1","scores":[0.414995,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"boxes":[343,390,473,542]},{"score":0.408405,"type":"1","scores":[0.408405,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"boxes":[541,442,659,545]},{"score":0.348472,"type":"1","scores":[0.348472,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"boxes":[273,293,423,400]},{"score":0.378637,"type":"2","scores":[0.0,0.378637,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"boxes":[261,26,496,142]},{"score":0.873101,"type":"5","scores":[0.0,0.0,0.0,0.0,0.873101,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"boxes":[91,4,555,267]},{"score":0.815785,"type":"6","scores":[0.0,0.0,0.0,0.0,0.0,0.815785,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"boxes":[564,270,869,441]},{"score":0.845525,"type":"8","scores":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.845525,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"boxes":[230,234,529,313]},{"score":0.411336,"type":"11","scores":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.411336,0.0,0.0,0.0,0.0],"boxes":[632,425,922,563]},{"score":0.334054,"type":"11","scores":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.334054,0.0,0.0,0.0,0.0],"boxes":[538,91,733,194]},{"score":0.333818,"type":"11","scores":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.333818,0.0,0.0,0.0,0.0],"boxes":[694,157,899,286]},{"score":0.32519,"type":"11","scores":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.32519,0.0,0.0,0.0,0.0],"boxes":[523,87,902,278]}]}}
Boxes List 173,178,277,259 部件位置框信息,形式为【左上角点x坐标,右下角点y坐标,右上角点x坐标,左下角点y坐标】。
Score Float 0.683465 损伤类型对应的概率值。
Scores List 0.683465 对应所有15种损伤类型的损伤概率。
Type String 1 损伤类型id。具体Type类型如下所示。1:轻微刮擦2:重度刮擦3:轻度变形4:中度变形5:重度变形6:crack破损孔洞7:翼子板和大灯缝隙8:翼子板保险杠缝隙9:大灯轻微刮擦10:大灯重度刮擦11:大灯破损12:后视镜轻微刮擦13:后视镜玻璃破损14:后视镜脱落15:挡风玻璃破损

识别成功!

四、车险图片分类

1.在maven中导入所需依赖

见本文二-1

2.编写ClassifyVehicleInsurance类
package com.example.demo;import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import java.util.*;
import com.aliyuncs.objectdet.model.v20191230.*;public class ClassifyVehicleInsurance {public static void main(String[] args) {DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "accessKeyId", "accessKeySecret");IAcsClient client = new DefaultAcsClient(profile);ClassifyVehicleInsuranceRequest request = new ClassifyVehicleInsuranceRequest();request.setRegionId("cn-shanghai");request.setImageURL(UploadPic.UploadPic());try {ClassifyVehicleInsuranceResponse response = client.getAcsResponse(request);System.out.println(new Gson().toJson(response));} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {System.out.println("ErrCode:" + e.getErrCode());System.out.println("ErrMsg:" + e.getErrMsg());System.out.println("RequestId:" + e.getRequestId());}}
}
3.识别结果

返回值为:

{"requestId":"87BEADED-F581-4C38-9F5F-E6F8DF0A1BA5","data":{"threshold":0.0,"labels":[{"score":0.0046,"name":"others"},{"score":0.0164,"name":"detail"},{"score":0.1934,"name":"component"},{"score":0.0,"name":"vin"},{"score":8.0E-4,"name":"people"},{"score":2.0E-4,"name":"motor"},{"score":0.1439,"name":"semi-car"},{"score":0.0027,"name":"panoramic"},{"score":3.0E-4,"name":"license"},{"score":0.0169,"name":"CT-scan"},{"score":5.0E-4,"name":"truck"},{"score":0.0144,"name":"disassembly"},{"score":0.6059,"name":"scene"}]}}
Labels Array 输出分类结果。
Name String others label名称。枚举类型。枚举值包括:
others:其他
detail:细节图
component:汽车部件图
vin:汽车vin码
people:人物
motor:发动机
semi-car:半车图
panoramic:全车图
license:行驶证
CT-scan:CT-扫描
truck:卡车
disassembly:拆解件
scene:现场图
Score Float 0.0023 分类结果对应的概率值。

实施完成

完成之后我会上传源码

加入高校计划

本人是参加的达摩院特别版-视觉AI训练营第二期
训练营里面的小哥哥小姐姐说话超级好听,也有超多大佬,我超喜欢这里!

【阿里云高校计划】车辆保险应用 day4 【拨云见日】相关推荐

  1. [阿里云高校计划]Day4-车辆保险应用

    [阿里云高校计划]Day4-车辆保险应用 首先使用JAVA SDK 引入资源. 可以通过在pom.xml文件中添加Maven依赖安装java SDK. <dependency><gr ...

  2. 【阿里云高校计划】Day4 汽车保险数据查询

    [阿里云高校计划]Day4 汽车保险数据查询 代码结构 api.php为主程序,负责接收请求与逻辑关系处理 upload.class.php为PHP上传类 index.html为前端页面,时间仓促没有 ...

  3. 【阿里云高校计划】未完成(车牌识别)停车场车辆管理系统 day5 【以小见大】

    [阿里云高校计划]未完成(车牌识别)停车场车辆管理系统 day5 [以小见大] [阿里云高校计划]未完成(车牌识别)停车场车辆管理系统 day5 [以小见大] 实施前--项目实现思路 1.简要描述 2 ...

  4. 【阿里云高校计划】阿里云AI训练营_Day04_车辆检测系统

    项目介绍 参加阿里云AI训练营的第4天,完成一个车辆检测系统 主要思路:用户上传身份证和受损车辆图片,识别结果返回前端,同时将数据存入数据库. 项目用到文档地址 阿里云达摩院视觉开放平台:https: ...

  5. 【阿里云高校计划】视觉Al训练营五天训练第一天笔记

    导论-视觉生产 定义和分类 定义 分类 通用基础框架 五个关键维度 2精细理解--寻微入里 分割抠图 难点 解题思路 模型框架 效果展示 视觉生成 鹿班 框架流程 视频生成--AlibabaWood ...

  6. 2021第一场 | 阿里云高校计划训练营全面升级!0成本体验云计算入门到进阶

    简介:2021,走进云计算的美妙世界(参加训练营免费获取ACA考试资格) 近年来云计算越来越受到重用,它不再仅仅是开源发烧友们的选择,已经在多方面得到了价值体现. 甚至网上流传一句话:云计算适合零基础 ...

  7. 【阿里云高校计划】在线Linux学习

    Day3–Class4-云端搭建linux学习环境 开通云服务器 这里我使用的是阿里云高校计划送的ecs服务器,就不写了 远程管理linux云服务器 教程里所用的是Putty,而我这里用的是Windo ...

  8. 阿里云高校计划免费领取半年服务器流程

    阿里云高校计划:因为新冠病毒影响,学校延期开学.在家时间不浪费,提高技能好机会.阿里云弹性计算联合开发者社区,推出高校"在家实践"计划.全国高校学生,每人可免费领取一台云服务器EC ...

  9. 【阿里云高校计划】视觉AI-身份证识别系统搭建

    [阿里云高校计划]视觉AI-身份证识别系统搭建 由大佬书写的项目源码:https://github.com/aliyun/alibabacloud-viapi-demo/tree/master 阿里云 ...

最新文章

  1. Ctrl+C提示是否终止shell脚本
  2. Linux 0.12内核与现代内核在内存管理上的区别
  3. 云计算里AWS和Azure的探究(2)
  4. 1.5 Python基础知识 - while循环
  5. 【PP MRP】MRP参数详解
  6. python调用sdk的文章_如何使用 python 接入虹软 ArcFace SDK
  7. (王道408考研数据结构)第二章线性表-第二节2:顺序表的操作
  8. 【并查集】noi2001食物链
  9. linux 路由跟踪命令_云计算网络知识学习-linux网络基础
  10. 08、ADS使用记录之低通滤波器设计与优化
  11. 计算机内存128毫升,内存128.1M的微信怎么可能只能聊天!
  12. 红米html查看器,小米 红米【AC2100】一键刷BREED【30秒刷完】小白脑残专用 无需工具TELNET + 检查坏块...
  13. Matlab神经网络(一)
  14. git目录下object文件过大清理
  15. Azure NSG Flow Log 引发的自嗨 -- 日志查询分析
  16. PAT_乙级_1011_筱筱
  17. Domino蓝色多瑙河版本
  18. LifeSmart云起局域网直接控制向往背景音乐
  19. 基于FPGA的双通道DDS信号发生器
  20. 常见UNIXLINUX系统

热门文章

  1. timespan 和 datetime
  2. cmd命令 pip安装模块
  3. 支付宝支付超时取消订单 微信支付超时取消订单 已解决
  4. input禁止输入的方法
  5. Pandas 读取MySql 数据(完整版)
  6. 微信小游戏开发实战教程12-广告的开通和接入
  7. 华为app测试软件,测评:华为最新移动应用/APP测试工具MobileTest
  8. WiFi市场之我见(4)
  9. 澳大利亚新规导致含纽扣电池产品被下架的原因解析
  10. Qt实用技巧:北斗GPS通讯代码模式下混合中英文数字发信内容的字符编码转换方法