開發與維運

阿里雲智能視覺AI Quick Start

作者:俏巴

概述

智能視覺AI開放平臺是面向企業用戶、軟硬件服務商和開發者,提供簡單、易用、優質視覺算法的開放平臺。平臺算法能力由阿里巴巴達摩院機器智能實驗室以及集團內多個視覺團隊多年研發沉澱,並經過阿里巴巴電商、泛娛樂、物流等大規模業務驗證,通過API/SDK為用戶提供視覺類算法服務,幫助用戶快速集成,實現數字化、智能化轉型和產品創新。

目前公測階段提供萬物識別:車型識別、動物識別和植物識別,商品理解:商品標籤和商品分類 五款API接口。下面基於阿里雲Java Core SDK介紹相關接口的調用。

測試

1、服務開通

服務開通

_
2、服務調用

  • 2.1 pom.xml

        <dependency>
        <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>com.aliyun<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span></span>
        &lt;artifactId&gt;aliyun-java-sdk-core&lt;<span class="hljs-regexp">/artifactId&gt;
        &lt;version&gt;[4.4.2,5.0.0)&lt;/version&gt;
    &lt;/dependency&gt;</span></code></pre>

2.2 code sample

import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import org.apache.commons.codec.binary.Base64;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

public class Demo1 {

<span class="hljs-comment">//DefaultProfile.getProfile的參數分別是地域,access_key_id, access_key_secret https://yq.aliyun.com/articles/693979</span>
public <span class="hljs-keyword">static</span> DefaultProfile profile = DefaultProfile.getProfile(<span class="hljs-string">"cn-beijing"</span>, <span class="hljs-string">"LTAIOZZg********"</span>, <span class="hljs-string">"v7CjUJCMk7j9aKduMAQLjy********"</span>);
public <span class="hljs-keyword">static</span> DefaultAcsClient client = <span class="hljs-keyword">new</span> DefaultAcsClient(profile);

public <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> main(<span class="hljs-built_in">String</span>[] args) throws IOException {

    <span class="hljs-comment">// 萬物理解</span>
    <span class="hljs-built_in">String</span> animalPicUrl = <span class="hljs-string">"https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&amp;quality=100&amp;size=b4000_4000&amp;sec=1577683988&amp;di=940085ab7a77bbbe2f796bd2ad8e3ba2&amp;src=http://image.biaobaiju.com/uploads/20180803/20/1533300579-gnUBlQZPbt.jpg"</span>;
    <span class="hljs-built_in">String</span> vehiclePicUrl = <span class="hljs-string">"https://timgsa.baidu.com/timg?image&amp;quality=80&amp;size=b9999_10000&amp;sec=1577695567568&amp;di=0db0a43cf0579e8050a451cdb5a5bbee&amp;imgtype=0&amp;src=http%3A%2F%2Fimg.kutoo8.com%2Fupload%2Fimage%2F36015894%2F1367481408093666_960x540.jpg"</span>;
    <span class="hljs-built_in">String</span> plantPicUrl = <span class="hljs-string">"https://timgsa.baidu.com/timg?image&amp;quality=80&amp;size=b9999_10000&amp;sec=1577695588307&amp;di=0ecab47da106889bed43dfc75065b619&amp;imgtype=0&amp;src=http%3A%2F%2Fpro.user.img32.51sole.com%2FproductImages3%2F20140405%2F1292497_20140405225052.jpg"</span>;
    <span class="hljs-built_in">String</span> animalAction = <span class="hljs-string">"IdentifyAnimal"</span>;
    <span class="hljs-built_in">String</span> vehicleAction = <span class="hljs-string">"RecognizeVehicle"</span>;
    <span class="hljs-built_in">String</span> plantAction = <span class="hljs-string">"IdentifyPlant"</span>;

    Identify(animalAction, animalPicUrl); <span class="hljs-comment">//動物識別</span>
    Identify(vehicleAction,vehiclePicUrl); <span class="hljs-comment">// 車型識別</span>
    Identify(plantAction, plantPicUrl); <span class="hljs-comment">// 植物識別</span>

    <span class="hljs-comment">// 商品理解</span>
    <span class="hljs-built_in">String</span> prodmlabelPicUrl = <span class="hljs-string">"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=21055346,2142400964&amp;fm=26&amp;gp=0.jpg"</span>;
    <span class="hljs-built_in">String</span> prodcategoryPicUrl = <span class="hljs-string">"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=21055346,2142400964&amp;fm=26&amp;gp=0.jpg"</span>;
    <span class="hljs-built_in">String</span> prodcategoryAction = <span class="hljs-string">"RecognizeProdcategory"</span>;
    <span class="hljs-built_in">String</span> prodmlabelAction = <span class="hljs-string">"RecognizeProdmlabel"</span>;

    Identify(prodcategoryAction, prodcategoryPicUrl); <span class="hljs-comment">// 商品分類</span>
    Identify(prodmlabelAction, prodmlabelPicUrl); <span class="hljs-comment">// 商品標籤</span>

}

<span class="hljs-comment">/***
 * 識別統一接口
 * @param imageUrl 待檢測圖片URL
 */</span>
public <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> Identify(<span class="hljs-built_in">String</span> Action, <span class="hljs-built_in">String</span> imageUrl) throws IOException {
    CommonRequest request = <span class="hljs-keyword">new</span> CommonRequest();
    request.setMethod(MethodType.POST);
    request.setDomain(<span class="hljs-string">"visionai.cn-beijing.aliyuncs.com"</span>);
    request.setVersion(<span class="hljs-string">"2019-10-24"</span>);
    request.setAction(Action);
    request.setRegionId(<span class="hljs-string">"cn-beijing"</span>);
    Base64 base64 = <span class="hljs-keyword">new</span> Base64();
    <span class="hljs-built_in">String</span> encodePicContent = base64.encodeToString(getFileFromUrl(imageUrl));
    request.putBodyParameter(<span class="hljs-string">"ImageContent"</span>, encodePicContent);
    CommonResponse response = <span class="hljs-literal">null</span>;
    <span class="hljs-keyword">try</span> {
        response = client.getCommonResponse(request);
    } <span class="hljs-keyword">catch</span> (ClientException e) {
        e.printStackTrace();
    }
    System.out.println(response.getData());
}

<span class="hljs-comment">/**
 * 通過oss 中的URL的讀取圖片到Byte[]
 * @param url 公網可以訪問的圖片URL
 * @return byte[]
 * @throws IOException
 */</span>
private <span class="hljs-keyword">static</span> byte[] getFileFromUrl(<span class="hljs-built_in">String</span> url) throws IOException{
    URL urlConet = <span class="hljs-keyword">new</span> URL(url);
    HttpURLConnection con = (HttpURLConnection)urlConet.openConnection();
    con.setRequestMethod(<span class="hljs-string">"GET"</span>);
    con.setConnectTimeout(<span class="hljs-number">4</span> * <span class="hljs-number">1000</span>);
    InputStream inStream = con .getInputStream();<span class="hljs-comment">//通過輸入流獲取圖片數據</span>
    ByteArrayOutputStream outStream = <span class="hljs-keyword">new</span> ByteArrayOutputStream();
    byte[] buffer = <span class="hljs-keyword">new</span> byte[<span class="hljs-number">2048</span>];
    int len = <span class="hljs-number">0</span>;
    <span class="hljs-keyword">while</span>( (len=inStream.read(buffer)) != <span class="hljs-number">-1</span> ){
        outStream.write(buffer, <span class="hljs-number">0</span>, len);
    }
    inStream.close();
    byte[] data =  outStream.toByteArray();
    <span class="hljs-keyword">return</span> data;
}

}


2.3 test result

{"Data":{"Name":"狸花貓","Description":"狸花貓的原產地是中國,屬於自然貓,是在千百年中經過許多品種的自然淘汰而保留下來的品種。人們最熟悉的就要算是“狸貓換太子”(宋朝)的故事了,這也是能夠找到的最早有關於狸花貓的記錄了,所以,狸花貓就有了一個這樣的英文名字DragonLi,由CFA貓會授予。它非常受百姓們喜歡,因為它有漂亮、厚實的皮毛,健康的身體。容易餵養,並且對捕捉老鼠十分在行。","SpuId":"51","Score":0.7072075},"RequestId":"3A439130-04A7-48B5-BC23-D4FC2BFBF97E"}
{"Data":{"Name":"奔馳 CLS級","Description":"德國戴姆勒集團旗下品牌梅賽德斯-奔馳在2004年第74屆日內瓦車展上揭露一個全新的車系:CLS級。這種新的4門轎車將雙門轎跑車的經典比例,具有感染力的外表以及豪華轎車的舒適以及功能性完美的結合在一起。完美繼承奔馳車一貫的風采。","SpuId":2641,"Score":0.9904089},"RequestId":"60A794F2-2889-4946-8E07-D9BECA715132"}
{"Data":{"Name":"荷花玉蘭","Description":"荷花玉蘭(學名:Magnolia grandiflora L):常綠喬木,在原產地高達30米;樹皮淡褐色或灰色,薄鱗片狀開裂;小枝粗壯。葉厚革質,橢圓形,長圓狀橢圓形或倒卵狀橢圓形,葉面深綠色,有光澤。花白色,有芳香,直徑15-20釐米;花被片9-12,厚肉質,倒卵形,長6-10釐米,寬5-7釐米。聚合果圓柱狀長圓形或卵圓形,蓇葖背裂,背面圓,頂端外側具長喙;種子近卵圓形或卵形,長約14毫米,徑約6毫米,外種皮紅色,除去外種皮的種子,頂端延長成短頸。花期5-6月,果期9-10月。原產北美洲東南部。中國長江流域以南各城市有栽培。蘭州及北京公園也有栽培。該種廣泛栽培,超過150個栽培品系。花大,白色,狀如荷花,芳香,為美麗的庭園綠化觀賞樹種,適生於溼潤肥沃土壤,對二氧化硫、氯氣、氟化氫等有毒氣體抗性較強;也耐煙塵。木材黃白色,材質堅重,可供裝飾材用。葉、幼枝和花可提取芳香油;花制浸膏用。葉入藥治高血壓。種子榨油,含油率42.5%。(概述圖片參考資料來源: )","SpuId":129,"Score":0.9992467},"RequestId":"8FA0E710-CC9C-435E-840E-2E7575DDFAB6"}
{"Data":[{"CategoryName":"靴子","CategoryId":50011743,"Score":0.535344},{"CategoryName":"戶外休閒鞋","CategoryId":50019279,"Score":0.338715},{"CategoryName":"登山鞋/徒步鞋","CategoryId":50019272,"Score":0.027337},{"CategoryName":"高幫鞋","CategoryId":50012907,"Score":0.026892},{"CategoryName":"滑雪鞋/雪地靴","CategoryId":50019278,"Score":0.01566}],"RequestId":"97185D6B-1872-4409-BCB0-3A27BD2A13DD"}
{"Data":[{"PropertyValue":"高幫","PropertyId":122216523,"SubId":"63","PropertyName":"鞋幫高度","Score":1.0},{"PropertyValue":"男","PropertyId":122216608,"SubId":"1570","PropertyName":"適用對象","Score":0.9797},{"PropertyValue":"繫帶","PropertyId":20490,"SubId":"4371","PropertyName":"閉合方式","Score":0.9748},{"PropertyValue":"青年","PropertyId":122216608,"SubId":"1581","PropertyName":"適用對象","Score":0.9028},{"PropertyValue":"圓頭","PropertyId":122216351,"SubId":"47","PropertyName":"鞋頭款式","Score":0.8999}],"RequestId":"E821C6CD-7871-4D53-BF81-EF5A3215C1AE"}


更多參考


API

Leave a Reply

Your email address will not be published. Required fields are marked *