このトピックでは、イメージを一括で追加、および削除する方法について説明します。

このタスクについて

Image Search をAlibaba Cloud Object Storage Service (OSS) に接続すると、Image Search のバッチ操作機能を使用して OSS から Image Search に画像を一括でインポートしたり、Image Search から画像を一括で削除したりできます。 この方法は、タスクを使用して大規模な画像を管理する必要があるシナリオに適用されます。 バッチ操作機能には、高い安定性、高効率、使いやすさなどの利点があります。 多数の画像を追加または削除する必要がある場合は、バッチ操作を実行することを推奨します。

バッチ操作の実行手順

  1. OSS を有効化します。
  2. 画像を OSS にインポートします。
  3. increment.meta ファイルを作成します。
  4. Image Search ユーザーに OSS へのアクセス権限を付与します。
  5. Image Search コンソールでバッチタスクを作成します。

OSS の有効化

OSS が有効化されていない場合は、OSS を有効化します。 OSS を有効化する方法については、「OSS の有効化」をご参照ください。 OSS を有効化した後、バケットを作成する必要があります。 詳細については、「バケットの作成」をご参照ください。
  • OSS の料金は別途課金されます。 課金方法についての詳細は、「概要」をご参照ください。
  • OSS 検索インスタンスと Image Search インスタンスが同じリージョンにあることを確認する必要があります。 同じでない場合、バッチ操作機能は使用できません。

画像の OSS へのインポート

画像を OSS にインポートします。

画像のインポート方法の詳細については、「オブジェクトのアップロード」をご参照ください。
OSS にインポートされた画像を保存するためのパスを指定できます。 バッチタスクを作成するときは、このパスを入力する必要があります。

increment.meta ファイルの作成

画像が OSS に保存されているパスに increment.meta ファイルを作成します。 このファイルには、バッチタスクに関する情報を格納します。
increment.meta ファイルとincrement.meta ファイルに含まれる画像は同じパスに保存する必要があります。 同じでない場合、バッチ操作は失敗します。
参考までに、increment.meta ファイルの例を以下に示します。
{"OperationType": "ADD","ProductId": "1000","PicName": "girl_cloth1.jpg","CategoryId": 0,"IntAttr": 0,"StrAttr": "value1","CustomContent": "k1:v1,k2:v2,k3:v3","Region": "20,40,60,80"}
{"OperationType": "ADD","ProductId": "1000","PicName": "girl_cloth2.jpg","CategoryId": 0,"IntAttr": 0,"StrAttr": "value2","CustomContent": "k1:v1,k2:v2,k3:v3","Region": "20,40,60,80"}
{"OperationType": "ADD","ProductId": "1001","PicName": "girl_cloth3.jpg","CategoryId": 1,"CustomContent": "k1:v1,k2:v2,k3:v3"}
{"OperationType": "ADD","ProductId": "1002","PicName": "girl_cloth4.jpg","CategoryId": 0,"CustomContent": "k1:v1,k2:v2,k3:v3","Crop": false}
{"OperationType": "ADD","ProductId": "1003","PicName": "girl_cloth7.jpg","CustomContent": "https://www.aliyun.com/imagesearch/girl_cloth7.jpg"}
{"OperationType": "ADD","ProductId": "1003","PicName": "girl_cloth6.jpg","CustomContent": "k1:v1,k2:v2,k3:v3"}
{"OperationType": "DELETE","ProductId": "1004","PicName": "fengyi.jpg"}
{"OperationType": "DELETE","ProductId": "1005"}
このファイルでは、各画像に関する情報が JSON 形式でエンコードされています。 下表に、ファイルのパラメーターの説明を示します。
パラメーター タイプ 必須/任意 説明
OperationType String 必須 操作のタイプ。 有効値:
  • ADD:画像を追加します。
  • DELETE:画像を削除します。
ProductId String 必須 イメージの固有 ID。
PicName String 必須 画像の名前。 OSS バケットに保存されている画像の名前。
各行には、最大で 1 つの画像名が含まれます。 1 つの画像 ID が複数の画像名に対応する場合は、複数の行を書き込む必要があります。
CategoryId Integer 任意 画像のカテゴリ。 詳細については、「カテゴリリファレンス」をご参照ください。
  • プロダクト画像検索の場合、画像のカテゴリを指定すると、指定したカテゴリが優先されます。 指定するカテゴリは、カテゴリ参照範囲内にある必要があります。 範囲以外の場合、Image Search で画像ギャラリーに画像をインポートできません。 画像のカテゴリを指定しない場合、システムはカテゴリを予測し、カテゴリ予測の結果を応答で返します。
  • 一般的な画像検索の場合、画像のカテゴリを指定するかどうかに関係なく、システムはカテゴリ ID を88888888 に設定します。
CustomContent String 必須 ユーザー定義の内容。 値の長さは最大 4,096 文字です。
IntAttr Integer 任意 整数属性。 この属性を使用して、画像検索時に画像をフィルタリングできます。
StrAttr String 任意 文字列属性。 値の長さは、最大 128 文字です。 この属性を使用して、画像検索時に画像をフィルタリングできます。
Crop Boolean 任意 画像内の被写体を検出し、検出した被写体に基づいて画像を検索するかどうかを指定します。 有効な値: true と false。 デフォルト値: true。
  • true:画像内の被写体を検出し、検出した被写体に基づいて画像を検索します。
  • false:画像内の被写体を検出せず、画像全体に基づいて画像を検索します。
リージョン String 任意 画像の被写体エリア。 被写体エリアは x1,x2,y1,y2の形式です。x1 と y1 は左上隅のピクセルを表し、x2 と y2 は右下のピクセルを表します。
このパラメーターを指定すると、Crop パラメーターは有効になりません。

Image Search アカウントに OSS へのアクセス権限を付与する

Image Search は、OSS に基づくバッチ操作機能を提供しています。 OSS にアクセスするための権限を Image Search アカウントに付与するには、 Security Token Service (STS) を使用する必要があります。

  1. RAM ロールを作成します。
    1. RAM コンソールにログインします。
    2. 左側のナビゲーションウィンドウで、[RAM ロール] > [RAM ロールの作成] を選択します。
      バッチ操作 ー RAM ロールの作成
    3. [RAM ロールの作成] ウィンドウで、[信頼済みエンティティタイプ] パラメーターに [Alibaba Cloud サービス] を選択し、[次へ] をクリックします。
      バッチ操作 ー Alibaba Cloud サービス
    4. ロール情報を設定します。
      • [ロールタイプ][通常のサービスロール] を選択します。
      • [RAM ロール名]:RAM ロール名を入力します。 この例では、ロール名は imagesearch-test です。
      • [信頼できるサービスの選択]:ドロップダウンリストから、[Image Search] を選択します。
      バッチ操作 ー RAM ロールの作成
  2. ポリシーを作成します。
    1. 左側のナビゲーションウィンドウから、[権限] > [ポリシー] を選択します。
    2. [ポリシー] ページで [ポリシーの作成] をクリックします。
      バッチ操作 ー ポリシーの作成
    3. ポリシーの内容を編集します。
      • ポリシー名を入力します。
      • [設定モード] パラメーターを [スクリプト] に設定します。 次の例では、ポリシーの内容が提供されています。
        {
          "Version": "1",
          "Statement": [
            {
              "Effect": "Allow",
              "Action": [
                "oss:GetObject"
              ],
              "Resource": [
                "acs:oss:*:*:${bucket}/${path}/*"
              ]
            }
          ]
        }
        • ${bucket}:画像を保存するために OSS で作成するバケット (例:imagesearch-increment)
        • ${path}:increment.meta ファイルが保存されているパス (例:/increment)
      バッチ操作 ー ポリシーの作成
  3. 権限を付与します。
    1. RAM コンソールの左側のナビゲーションウィンドウで、 [RAM ロール] をクリックします。
    2. 作成する RAM ロールの名前をクリックします。
      権限の付与
    3. [権限] タブで、[権限の追加]をクリックします。
      権限の追加
    4. [権限の追加] ウィンドウで、[カスタムポリシー] をクリックし、作成したポリシーを選択します。
      バッチ操作 ー 権限の付与
    5. [権限] タブに戻ります。 RAM ロールにアタッチされるカスタムポリシーを表示できます。
      カスタムポリシーの表示

バッチタスクを作成する

  1. Image Search コンソールにログインします。
  2. サービスタイプを選択し、インスタンスの名前をクリックします。
  3. [バッチ操作] タブをクリックします。
    バッチ操作
  4. [バッチタスクの作成] をクリックします。
    バッチタスクの作成
  5. バッチタスクに次のパラメーターを指定します。
    • ARN
      次の図は、ARN パラメーターの値を表示できる場所を示しています。バッチ操作 ー ARN
    • バケット名
      このパラメーターは、OSS で作成するバケットの名前を指定します。
      OSS インスタンスのリージョンと、Image Search インスタンスのリージョンが同じであることを確認してください。
    • パス
      このパラメーターは、アップロードする画像と increment.meta ファイルが保存されるパスを指定します。
      パスは、スラッシュ (/) で始まる必要があります (例えば /imagesearch)。
      バッチ操作 ー パス

次のタスク

選択したインスタンスの [インスタンスの詳細] ページで、[バッチ操作] タブのすべてのバッチタスクに関する情報を表示できます。 バッチタスクが [成功] ステータスの場合、[エラーメッセージ] 列に次のプロンプトが表示されます。バッチタスクの結果を表示する
  • 「一部の画像をインポートできません。 [ダウンロード] をクリックしてください。」というメッセージは、一部の画像がインポートに失敗したことを示しています。 ファイルをダウンロードして、失敗の原因を確認できます。
  • 「成功」というメッセージは、すべての画像がインポートされたことを示しています。