阿裡AI訓練營【車輛保險應用】
@
TOC前言
轉載于:
【阿裡雲高校計劃】車輛保險應用 day4 【撥雲見日】實施前準備工作
一、本地圖檔上傳為OSS
1.開通oss

2.建立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類
阿裡maven私有倉庫服務
<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());
}
}
}
傳回值為:
{"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]}}
三.車輛損傷識别
見本文二-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]}]}}
四.車險圖檔分類
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());
}
}
}
{"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"}]}}