本文介紹如何將圖像上傳到圖像搜索服務。
如需了解更多產品詳情和獲取技術支持,請單擊在線咨詢或通過釘釘群(35035130)聯系我們。
背景信息
圖像搜索提供兩種方式上傳圖片,一種是通過圖像搜索產品API或者SDK,另一種方式是通過借助阿里云OSS通過批量操作進行上傳。
OSSImport介紹
OSSImport是阿里云OSS提供的一款將數據遷移至OSS存儲空間(Bucket)的工具。您可以將OSSImport部署在本地服務器或云上ECS實例內,輕松將您本地或其它云存儲的數據遷移到OSS。
使用OSSImport上傳圖片具有以下優勢:
保持圖片快速更新到圖像搜索引擎。
同一個OSS存儲空間可供不同環境使用,像開發項目,線上項目等。
根據業務需要,更好地組織和管理多種圖片的來源。
更好地管理復雜環境的項目,例如開發項目,UAT項目等。
優化使用網絡帶寬:一次上傳,多次使用。
使用這個工具,您可以將圖像搜索管理產業化。
圖片限制
單張圖片大小不超過4 MB。
圖片的長和寬分辨率要求大于100px小于等于4096px。
操作流程
步驟一:下載OSSImport工具
OSSImport有單機模式和分布式模式兩種部署方式。
單機模式:當您需要遷移的數據小于30TB時,推薦部署單機模式。您可以將OSSImport部署在任意一臺可以訪問待遷移數據,且可以訪問OSS的機器上。單擊OSSImport下載。
分布式模式:當您需要遷移的數據大于30TB時,推薦使用分布式模式。您可以將OSSImport部署在任意多臺可以訪問您待遷移數據,且可以訪問OSS的機器上。單擊OSSImport下載。
當您遷移的數據過大時,為了節約時間,您可以將OSSImport部署到與您OSS相同地域的ECS實例上,并通過專線將源數據存放的服務器掛載到阿里云VPC網絡中。多臺ECS實例將數據通過內網遷移至OSS,會極大的提升數據遷移效率。
步驟二:開通對象存儲OSS
具體操作步驟請參見開通OSS服務進行開通。
步驟三:創建存儲空間(bucket)
具體操作步驟請參見控制臺創建存儲空間。
請確保開通的OSS服務以及創建的Bucket與已購買的圖像搜索服務在同一個地域。
步驟四:導入increment.meta 數據
在OSS服務中存放圖片的路徑下,新建increment.meta文件,該文件用來存儲批量操作任務相關內容。
increment.meta文件中涉及的圖片必須和increment.meta文件在同一Bucket下,否則批量操作會失敗。
increment.meta文件名稱是固定的,圖像搜索將根據此文件名稱讀取批量操作相關內容,不要擅自修改文件名稱,否則會操作失敗。
圖像搜索批量操作支持同一Bucket,不同路徑(path)圖片的批量操作,例如:Bucket為imagesearch,increment.meta文件在此Bucket的根目錄下,path為girlCloth,圖片在此path目錄下,圖片名稱為girl_cloth8.jpg,則meta文件中PicName應寫為
“PicName":"girlCloth/girl_cloth8.jpg"
,注意:必須寫成"girlCloth/girl_cloth8.jpg",在girlCloth前面和girl_cloth8.jpg后面都不能加正斜線(/)。如果有多級目錄按照此邏輯依次類推。在OSS中的圖片名稱后綴必須填寫,例如圖片名稱為girl_cloth10.jpg,不能寫為"PicName":"girl_cloth10",必須寫為"PicName":"girl_cloth10.jpg",否則會處理失敗。
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 | String | 是 | 操作類型。
|
ProductId | String | 是 | 圖片唯一標識符,最多支持512個字符。 |
PicName | String | 是 | 圖片名稱。OSS的Bucket中圖片名稱。最多支持512個字符。 重要
|
CategoryId | Integer | 否 | 更多說明,請參見類目參考。
|
CustomContent | String | 是 | 用戶自定義內容。最多支持4096個字符。 說明 圖片的CustomContent會在搜索結果中自動關聯出來。通過CustomContent字段,您可以填寫圖片的URL地址,圖片額外附加信息等,以便與您的業務關聯。 |
IntAttr | Integer | 否 | 整數類型屬性。用于查詢時設置過濾。 說明 整型類型屬性與圖片查詢時的過濾條件組合使用,以起到過濾查詢的功能。請參考條件過濾。 |
StrAttr | String | 否 | 字符串類型屬性。最多支持128字符。用于查詢時設置過濾。 說明 字符串類型屬性與圖片查詢時的過濾條件組合使用,以起到過濾查詢的功能。請參考條件過濾。 |
Crop | Boolean | 否 | 是否進行主體識別。默認為true。
說明 服務類型為布料圖片搜索、版權圖片搜索時,此參數不生效,默認以整張圖進行搜索。 |
Region | String | 否 | 圖片的主體區域。格式為 說明
|
步驟五:授予圖像搜索服務訪問OSS的權限
圖像搜索服務通過OSS來實現數據批量操作,首次使用需完成賬號一鍵授權。如已完成授權,可跳過此步驟。
步驟六:上傳圖片
登錄圖像搜索控制臺。
選擇目標服務類型和目標實例。
單擊批量操作頁簽。
單擊新建批量任務。
設置批量任務參數。
所屬區域
實例所在區域。
Bucket名稱
OSS上創建的相應的Bucket名稱。
重要請確保開通的OSS服務以及創建的Bucket與已購買的圖像搜索服務在同一個地域。
數據路徑
需要上傳的圖片和increment.meta文件的存儲路徑。
meta文件
需要處理圖片的列表文件,支持檢測是否存在,文件名為increment.meta。
完成后信息回調
輸入回調地址,僅支持HTTP或者HTTPS開頭。
{ "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
圖像搜索實例名稱。
instanceId
圖像搜索實例ID。
status
任務執行結果,NORMAL為正常,FAIL為執行失敗。
taskId
任務ID。
message
信息描述;success為成功。
processResultUrl
錯誤結果下載。
執行結果
任務運行完之后,您可以單擊實例ID查看任務運行的狀態。
如果運行失敗,單擊查看增量歷史獲得詳細信息。更多信息請參見增量任務提交失敗的原因都有哪些?
圖片上傳成功之后,您可以單擊實例ID,然后單擊圖片搜索進行測試。