このトピックでは、Image Search に画像をアップロードする方法について説明します。
背景情報
Image Search には、API または SDK を使用する方法と、Object Storage Service (OSS) の画像を使用してバッチ操作を実行する方法の 2 つの画像アップロード方法があります。
-
少数の画像のみをアップロードする必要がある場合は、API または SDK を使用することを推奨します。詳細については、「AddImage」をご参照ください。
-
エンタープライズユーザーである場合、または Object Storage Service (OSS) にない多数の画像をアップロードする必要がある場合は、ossimport ツールを使用してそれらを OSS バケットに移行し、バッチアップロードを実行します。詳細については、「操作手順」をご参照ください。
-
エンタープライズユーザーである場合、またはすでに Object Storage Service (OSS) バケットに保存されている多数の画像をアップロードする必要がある場合は、「バッチ操作の実行」をご参照ください。
重要Image Search のバッチ操作機能を使用するには、ご利用の Image Search インスタンスと OSS バケットが同じリージョンにあることを確認する必要があります。
ossimport
ossimport は、データを OSS バケットに移行するための Object Storage Service (OSS) ツールです。ローカルサーバーまたは Elastic Compute Service (ECS) インスタンスにデプロイして、オンプレミスストレージや他のクラウドサービスから OSS にデータを移行できます。
ossimport を使用して画像をアップロードすると、次の利点があります:
-
検索エンジン内の画像インデックスを最新の状態に保ちます。
-
単一の OSS バケットで、開発プロジェクトや本番プロジェクトなど、複数の環境に対応できます。
-
ビジネスニーズに基づいて、さまざまなソースからの画像をより適切に整理および管理するのに役立ちます。
-
開発プロジェクトやユーザー受け入れテスト (UAT) プロジェクトなど、複雑な環境でのプロジェクト管理を簡素化します。
-
画像を一度アップロードするだけで複数のアプリケーションで使用できるため、ネットワーク帯域幅の使用を最適化します。
-
画像管理ワークフローを標準化し、拡張することができます。
制限事項
-
画像のサイズは最大 4 MB です。
-
画像の幅と高さは 101~4,096 ピクセルの範囲である必要があります。
操作手順
ステップ 1:ossimport のダウンロード
ossimport は、スタンドアロンデプロイモードと分散デプロイモードをサポートしています。
-
スタンドアロンデプロイモード:30 TB 未満のデータを移行する場合に推奨されるモードです。ソースデータと OSS にアクセスできる任意のマシンに ossimport をデプロイできます。ダウンロードするには ossimport をクリックしてください。
-
分散デプロイモード:30 TB を超えるデータを移行する場合に推奨されるモードです。ソースデータと OSS にアクセスできる複数のマシンに ossimport をデプロイできます。ダウンロードするには ossimport をクリックしてください。
大量のデータを移行する時間を節約するために、ご利用の OSS バケットと同じリージョンにある ECS インスタンスに ossimport をデプロイしてください。その後、Express Connect を使用してソースデータサーバーをご利用の Virtual Private Cloud (VPC) に接続できます。複数の ECS インスタンスから内部ネットワーク経由で OSS にデータを移行すると、効率が大幅に向上します。
ステップ 2:OSS のアクティベーション
詳細については、「OSS のアクティベーション」をご参照ください。
ステップ 3:バケットの作成
詳細については、「コンソールでのバケットの作成」をご参照ください。
ご利用の OSS バケットが Image Search インスタンスと同じリージョンにあることを確認してください。
ステップ 4:increment.meta ファイルの作成
画像が保存されている OSS パスに increment.meta という名前のファイルを作成します。このファイルはバッチタスクの詳細を定義します。
-
increment.meta で指定された画像は、ファイル自体と同じ バケット 内にある必要があります。
-
ファイル名 increment.meta は固定です。名前を変更しないでください。
-
画像は同じバケット内の異なるパスに配置できます。
PicNameにはバケットのルートディレクトリからの相対パスを使用します。たとえば、バケット名がimagesearchで、increment.metaがルートディレクトリにある場合、girlCloth/内の画像は"PicName":"girlCloth/girl_cloth8.jpg"のように指定します。先頭または末尾にスラッシュ (/) を追加しないでください。 -
画像名にはファイル拡張子を含めてください。たとえば、
"PicName":"girl_cloth10"ではなく"PicName":"girl_cloth10.jpg"を使用します。 -
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": "ADD","ProductId": "1006","PicName": "girlCloth/girl_cloth10.jpg","CustomContent": "k1:v1,k2:v2,k3:v3"}
{"OperationType": "DELETE","ProductId": "1004","PicName": "fengyi.jpg"}
{"OperationType": "DELETE","ProductId": "1005"}
各操作は JSON 形式で定義されます。次の表にフィールドの説明を示します。
|
パラメーター |
タイプ |
必須 |
説明 |
|
OperationType |
文字列 |
はい |
操作のタイプ。
|
|
ProductId |
文字列 |
はい |
画像のユニークな識別子。最大 256 文字です。 |
|
PicName |
文字列 |
はい |
OSS バケット内の画像の名前。最大 256 文字です。 重要
|
|
CategoryId |
整数 |
いいえ |
画像のカテゴリ。有効なカテゴリは「カテゴリリファレンス」に記載されています。
|
|
CustomContent |
文字列 |
はい |
ユーザー定義のコンテンツ。最大 4,096 文字です。 説明
検索結果にはこの値が含まれます。このフィールドを使用して、画像の URL やその他の追加情報を保存し、画像をビジネスデータにリンクさせることができます。 |
|
IntAttr |
整数 |
いいえ |
検索結果をフィルタリングするための整数属性。 説明
整数属性をフィルター条件で使用して、検索結果をフィルタリングします。詳細については、「フィルター条件」をご参照ください。 |
|
StrAttr |
文字列 |
いいえ |
文字列属性。最大 128 文字です。検索クエリでのフィルタリングに使用されます。 説明
|
|
Crop |
ブール値 |
いいえ |
主体識別を実行するかどうかを指定します。デフォルト:
|
|
Region |
文字列 |
いいえ |
画像の主題領域を 説明
このパラメーターが設定されている場合、 |
ステップ 5:OSS へのアクセス権の付与
バッチ操作では、Image Search がご利用の OSS リソースにアクセスする必要があります。この機能を初めて使用する際に、この権限付与を行ってください。すでに権限が付与されている場合は、このセクションをスキップしてください。
ステップ 6:画像のアップロード
-
Image Search コンソールにログインします。
-
対象のサービスタイプとインスタンスを選択します。
-
[バッチ操作] タブをクリックします。
-
[バッチタスクの作成] をクリックします。
[バッチタスクの作成] ダイアログボックスで、必須の [バケット名] と [パス] を設定し、[Meta ファイル] を確認し、オプションで [完了時のコールバック] URL を指定して、[OK] をクリックします。
-
-
リージョン
インスタンスが存在するリージョン。
-
バケット名
OSS で作成したバケットの名前。
重要OSS バケットは、ご利用の Image Search インスタンスと同じリージョンにある必要があります。
-
パス
画像と increment.meta ファイルのストレージパス。
たとえば、中国 (上海) のバケット imagesearch1 に画像と
increment.metaが imagesearch/ フォルダにある場合、そのパスを入力します。 -
Meta ファイル
処理対象の画像をリストしたファイル。システムは、
increment.metaという名前のファイルが存在するかどうかを確認します。 -
完了時のコールバック
コールバック URL を入力します。HTTP および HTTPS の URL のみがサポートされています。
{ "finishTime": "2021-05-19 17:50:00", "instanceId": "imagesearch-cn-xxxx", "instanceName": "instanceName", "message": "success", "processResultUrl": "https://image-search-task-info.oss-cn-shanghai.aliyuncs.com/yyyyyyyyyy", "status": "NORMAL", "taskId": 111 }フィールド
説明
finishTime
タスク完了時間 (秒単位の精度)。
instanceName
Image Search インスタンスの名前。
instanceId
Image Search インスタンスの ID。
status
タスク結果:
NORMAL(成功) またはFAIL(失敗)。taskId
タスク ID。
message
結果の説明。
successは操作が成功したことを示します。processResultUrl
エラーレポートをダウンロードするための URL。
-
結果の確認
タスクが完了した後、そのステータスを表示できます。
-
[バッチ操作] タブのタスクリストには、各タスクのステータスが表示されます。タスクが成功した場合、メッセージは [Success] となります。一部のイメージの処理に失敗した場合は、部分的な失敗を示すメッセージが表示されます。[結果のダウンロード] をクリックして詳細を確認してください。失敗したタスクの詳細については、「増分履歴の表示」をクリックしてください。タスクを再実行するには、「操作」列の [再送信] をクリックしてください。タスクの失敗に関する詳細については、増分タスクの送信が失敗する原因をご参照ください。
-
画像をアップロードした後、検索機能をテストします。インスタンスの [画像で検索] タブに移動します。左側のペインで、検索タイプを [SearchByPic] に設定し、検索画像をアップロードし、[オブジェクト検出] を有効にして [自動] を選択し、[結果の数] と [開始位置] を設定してから、[OK] をクリックします。右側のペインには、生の JSON 応答が表示されます。返された
auctions配列の各レコードには、score(類似度スコア)、picName(画像名)、productId(商品 ID) などのフィールドが含まれます。scoreが高いほど、検索画像との類似性が高いことを示します。