会社行きたくなかったんです。

自由になりたくて会社辞めました

Azure プログラミング

VB.netでComputer Vision APIを使ってみました。

投稿日:

さわってわかるクラウドAI Microsoft Cognitive Services実践ガイド」という本を購入して、Computer Vision APIを使ってみました。
最終的にVB.netでサンプルコードを書いてみました。

スポンサーリンク

まずは、APIのキーをMicrosoft Azureで作成しました。

「新規」をクリック、「AI + Cognitive Service」をクリック

「Conputer Vision API」をクリック

項目を入力して「作成」をクリック

「リソースに移動」をクリック

「Keys」をクリック

KEYが2つあるのは、定期的に差し替えて運用することを想定しているからだと、本に書いてあります。
1つだと、差し替えているときにアクセスできなくなるとのことです。
意味がよくわからなかったのですが、よく見ると、上に「Regenerate Key1」と「Regenerate Key2」というのがあります。
Key1とKey2があり、個別にRegenerateできるから、差し替えるときにアクセス不能にならないということですね。

エンドポイントはリソースの場所によって変わるので、ここで確認します。

Computer Vision APIの使い方は、こちらのページに書いてあります。
https://docs.microsoft.com/ja-jp/azure/cognitive-services/computer-vision/home

エンドポイントに対してAPIキーと画像をつけてPOSTするだけです。

本には、テストコンソールでテストできると書いてあるのですが、テストコンソールに入る方法がわかりませんでした。(後で本を見直したら、ちゃんとわかるように書いてありました。)

もともと、VB.netで試してみる予定だったので、サンプルコードを書いてみました。

        Dim webReq As Net.HttpWebRequest
        Dim webRes As Net.HttpWebResponse
        Dim reqStream As System.IO.Stream
        Dim resStream As System.IO.Stream
        Dim resStreamReader As System.IO.StreamReader
        Dim fsFile As System.IO.FileStream
        Dim byData As Byte()
        Dim sエンドポイント As String
        Dim sキー As String
        Dim sFilePath As String
        Dim sJSON As String

        Try
            'エンドポイントはリソースの場所によって変わります。
            sエンドポイント = "https://westus.api.cognitive.microsoft.com/vision/v1.0"
            'visualFeaturesは必要な項目だけで良いです。
            'このコードでは全部取得しています。
            sエンドポイント &= "/analyze?visualFeatures=Categories,Tags,Description,Faces,ImageType,Color,Adult&subscription-key="
            sキー = "<APIキー>"
            sエンドポイント &= sキー
            '画像ファイルを読み込みます。
            sFilePath = "<画像ファイルのパス>"
            fsFile = New System.IO.FileStream(sFilePath, System.IO.FileMode.Open, System.IO.FileAccess.Read)
            ReDim byData(fsFile.Length - 1)
            fsFile.Read(byData, 0, byData.Length)
            fsFile.Close()

            webReq = DirectCast(System.Net.WebRequest.Create(sエンドポイント), System.Net.HttpWebRequest)
            webReq.Method = "POST"
            webReq.ContentType = "application/octet-stream"

            webReq.ContentLength = byData.Length
            'RequestStreamを取得
            reqStream = webReq.GetRequestStream()
            reqStream.Write(byData, 0, byData.Length)
            reqStream.Close()
            'RequestStreamを取得
            webRes = webReq.GetResponse()
            resStream = webRes.GetResponseStream()
            resStreamReader = New System.IO.StreamReader(resStream, System.Text.Encoding.UTF8)
            'レスポンスはJSON形式です。
            sJSON = resStreamReader.ReadToEnd
            'RichTextBox1に結果を表示するようにしました。
            RichTextBox1.Text = sJSON

        Catch ex As Net.WebException

            'エラーが発生した場合、こうすると内容がわかります。
            If Not ex.Response Is Nothing Then
                Dim errorResponse As Net.HttpWebResponse
                errorResponse = ex.Response
                Dim reader As New IO.StreamReader(errorResponse.GetResponseStream())
                Dim sError As String
                sError = reader.ReadToEnd()
                MessageBox.Show(sError)
            End If

        End Try

子猫がたくさんいる画像で試してみた結果です。
ちゃんと猫だと認識されています。

{"categories":[{"name":"animal_cat","score":0.99609375}],"adult":{"isAdultContent":false,"isRacyContent":false,"adultScore":0.052279949188232422,"racyScore":0.040284361690282822},"tags":[{"name":"cat","confidence":0.99999368190765381},{"name":"indoor","confidence":0.99841451644897461},{"name":"laying","confidence":0.91710740327835083},{"name":"lying","confidence":0.65908223390579224},{"name":"domestic cat","confidence":0.290563702583313}],"description":{"tags":["cat","indoor","laying","sitting","small","bed","lying","top","striped","brown","little","orange","white","blanket","sleeping","room","red","computer"],"captions":[{"text":"a cat lying on a bed","confidence":0.92417736910744741}]},"requestId":"23ba70a8-8266-4b79-8329-958f77ab8531","metadata":{"width":754,"height":567,"format":"Jpeg"},"faces":[],"color":{"dominantColorForeground":"Black","dominantColorBackground":"Black","dominantColors":["Black"],"accentColor":"92393D","isBWImg":false},"imageType":{"clipArtType":0,"lineDrawingType":0}}

 

-Azure, プログラミング

Copyright© 自由になりたくて会社辞めました , 2024 AllRights Reserved Powered by AFFINGER4.