天天看點

阿裡雲高校計劃視覺AI五天訓練營 Day04 學習筆記Day 04

Day 04

作者:第五組 鄧佳陽

打卡截圖

阿裡雲高校計劃視覺AI五天訓練營 Day04 學習筆記Day 04

學習筆記

車輛保險應用系統搭建

開通OSS

直覺解釋:雲上存儲

阿裡雲高校計劃視覺AI五天訓練營 Day04 學習筆記Day 04

蠻考驗後端寫API的,按照Restful規格寫就比較合理。

注意:無論是OSS還是API,盡量都放在一個地區

尋找需要的API

阿裡雲視覺智能開放平台閃亮登場,根據查詢往期内容,會用到三個功能:

  • 車輛部件識别
  • 車輛損傷識别
  • 車險圖檔分類
阿裡雲高校計劃視覺AI五天訓練營 Day04 學習筆記Day 04

1.車輛部件識别

檢測圖檔中車輛部件的位置以及名稱。

2.車輛損傷識别

針對常見小汽車車型,識别車輛外觀受損部件及損傷類型,可識别數十種車輛部件、五大類外觀損傷。(刮擦、凹陷、開裂、褶皺、穿孔)

3.車險圖檔分類

對輸入的車險圖檔進行分類。

實作

阿裡雲高校計劃視覺AI五天訓練營 Day04 學習筆記Day 04
圖檔來源于 "鴨梨亞"
導入MAVEN

Apache MAVEN 解決第三方依賴

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.8.0</version>
</dependency>

<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>           

uploadPic類:本地上傳至OSS;

RecognizeVehicleParts類:車輛部件識别;

ecognizeVehicleDamage類:車輛損壞識别;

ClassifyVehicleInsurance類:車險圖檔分類。

jpackage 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();
    }
}           
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());
        }
    }
}           
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());
        }
    }
}
           
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"}]}}

總結

牛人太多了,我太菜了。