4 顔特徴と画像

Mercury Cloudにおいて、顔を含む画像の処理方法について記載しています。

4.1 顔特徴

Mercury Cloudでは顔の比較や特徴データベースへ顔の追加、データベースから顔を検索などを行う際、アルゴリズムはアップロードされた生の画像を直接使用することはありません。代わりに画像から顔特徴が抽出され、それを元に処理を行います。

顔特徴とは画像内の顔から抽出された多次元ベクトルで、それぞれの画像の顔から一意の顔特徴が生成されます。類似スコアが示すのは、2つの顔特徴ベクトル間の距離です。したがって、すべてのMercury Cloud OpenAPIドキュメントでは、顔比較または顔検索について言及するときは「顔特徴の比較または顔特徴の検索」を指します。またMercury Cloud OpenAPIは、画像ファイルや画像バイナリを保存することは一切行いません

4.2 画像エンコーディング

Mercury Cloud APIはHTTPリクエストで、base64でエンコードされたバイナリを使用して画像データを送信します。Linuxを使用している場合はbashコマンドを使用して、画像をbase64文字列に簡単に変換することができます。

def base64_encode_file(file_path):
    handle = open(file_path, "rb")
    raw_bytes = handle.read()
    handle.close()
    return base64.b64encode(raw_bytes).decode("utf-8")

4.3 画像の基準

Mercury CloudにはBase64でエンコードされた画像データを入力として必要とする、以下の5つの重要なAPIがあります。

  • 顔検知API(/{app_id}/detect

  • 顔比較API(/{app_id}/compare

  • 品質チェックAPI(/{app_id}/quality

  • 顔特徴追加API(/{app_id}/databases/{db_id}/features

  • 顔検索API(/{app_id}/databases/search

入力画像の要件はこれらのAPI間で共通であり、次の通りです。

  • 画像のフォーマットは、JPG、PNG、BMP、TIFF、またはGIF(最初のフレームのみが受け入れられます)であること。

  • 画像のファイルサイズは、8MB未満であること。

  • 有効な顔サイズは、32✕32ピクセル以上であること

  • バッチアップロードがサポートされている顔検知API(/{app_id}/detect)と顔特徴追加API(/{app_id}/databases/{db_id}/features)では、1回のAPI呼び出しでの画像の数量は16以下であること。

画像の画質が高いほど精度が高くなりますが、画像ファイルのサイズが大きいほどAPIの呼び出し時間が長くなります。 ベストプラクティスとして、APIを呼び出す前に、高品質・正面・鮮明な画像を、有効な顔サイズが200x200ピクセル以上を確保しながら、画像をトリミングして200KB未満に圧縮することを強くお勧めします。

Last updated