[Day 3] Google Vision AI - 2

今天來入門Google Vision AI的API,文件部分可以看這裡。練功嘛!語言部分我就來順便玩一下一直想入門的Golang。

跟著Quickstarts裡的Using client libraries走先。

  1. 打開或選擇專案
    select-project.jpg
    這邊要注意你的ProjectName跟ProjectID不見得會一樣,每個地方會用到不同的資訊。

  2. 連結帳單
    bill.jpg
    如果初次連結的人,會需要填一些信用卡資訊,不過也會有三百塊的免費試用。

  3. 啟用API
    enable-ai.jpg
    透過搜尋Library裡的Vision AI可以enable他。

  4. 下載認證JSON
    create-account.jpg
    這邊建立完就得到一個含有private key的JSON了。

  5. 加入環境變數
    我本身是Linux環境,所以我選擇export的方式引入。
    export.jpg

到這邊應該以後都一樣,以後要啟用我都會毅然決然地跳過!


tree.jpg

把furniture.jpg搬道專案底下以後,先複製了範例上的code來跑看看。
這是透過30天文章介紹Google Machine Learning Products的關係,原諒我無法逐行講解指令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Sample vision-quickstart uses the Google Cloud Vision API to label an image.
package main
import (
"context"
"fmt"
"log"
"os"
vision "cloud.google.com/go/vision/apiv1"
)

func main() {
ctx := context.Background()

// Creates a client.
client, err := vision.NewImageAnnotatorClient(ctx)
if err != nil {
log.Fatalf("Failed to create client: %v", err)
}
defer client.Close()

// Sets the name of the image file to annotate.
filename := "./testdata/furniture.jpg"
file, err := os.Open(filename)
if err != nil {
log.Fatalf("Failed to read file: %v", err)
}
defer file.Close()
image, err := vision.NewImageFromReader(file)
if err != nil {
log.Fatalf("Failed to create image: %v", err)
}
labels, err := client.DetectLabels(ctx, image, nil, 10) //只顯示10個
if err != nil {
log.Fatalf("Failed to detect labels: %v", err)
}
fmt.Println("Labels:")
for _, label := range labels {
fmt.Println(label.Description)
}
}

我放在docker裡面,所以會透過docker run執行
label.jpg
恩,物件的Label確實有前10個Label。改改看上面 labels, err := client.DetectLabels(ctx, image, nil, 10)的10,看看出來的Label數量會不會跟著變吧。

踩入Vision API的第一步完成,可以看看我的Github: https://github.com/josephMG/ithelp-2019 取得所有的code。

今天就到這邊,話說我其實也不太知道明天是該繼續寫Vision API裡其他的detect好,還是該進入到下一個Topic好。沒關係,明天再看看。