LoginSignup
2
1

More than 1 year has passed since last update.

Azure Cognitive Containerははやいぞ

Last updated at Posted at 2022-12-01

本記事は「TRUST SMITH & COMPANY Advent Calendar 2022」の2日目です。
予想以上に誰もやってくれなかったのでとりあえず埋め合わせの記事を書いています。(悲しい)

動機

AzureのOCRサービスであるCognitive Servicesは、web api ocrの中でも高い認識精度で知られており、競合のGoogle Vision APIと比べると認識精度の点で一歩先に行っている印象があります。
しかし、Azure Cognitive Services APIは推論処理の不安定さに問題があり、例えば弊社COOの安藤のTwitterをスクリーンショットした589*310 pxの画像をOCRしてみると
ando.jpg

Azure

image.png

GCP

image.png
とかなりGCP APIに水をあけられている状況になっています。(これは結構調子がいいほうで、混雑状況に応じて10秒程度待たされることがあります。)
よって、これをAzure Cognitive Containerを用いて高速化していきます。

導入

書き始めてから気が付いたのですが、導入方法を書いた記事はほかに存在していました。
APIの導入についてはこちらの記事を参照いただくとして、この記事ではAPIがlocalhost:5000で起動していることを前提に話を進めます。

API速度比較

環境

Core i9-10980XEのうち8コアを使ったlocalhostAPIを起動しています。(多分そこまでCPUリソースは必要なさそうです。)

コード

以下のようにしてAPIを10回叩きます。

import requests
import time

headers = {
    'accept': '*/*',
    'Content-Type': 'application/octet-stream',
}

path = 'ando.jpg'

with open(path, 'rb') as f:
    data = f.read()


for i in range(10):
    # local API request

    start = time.time()

    response = requests.post('http://localhost:5000/vision/v3.2/read/syncAnalyze', headers=headers, data=data)

    end = time.time()

    #print(response.text)
    print("offline time:", end - start)

結果

上記の画像をOCRしてみたところ、GCP APIと遜色のない速度が得られました。
image.png
外部ネットワークを通じていないため、やはり当たり前ですがかなり速いです。

ちなみに、4K画像を入力した場合はGCP APIがかなり有利になり、

GCP

image.png

Azure Offline

image.png

Azure Online

image.png

といった具合になります。
Azure Offlineの処理が遅くなった分だけOnlineの処理も遅くなっているので、たぶんリソースとしては同じ程度でネットワークを挟むか挟まないかの違いなんだと思います。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1