2019-04-22百度ai相似圖檢索接口體驗(yàn)

快速入門(mén)

安裝ImageSearch Java SDK

ImageSearch Java SDK目錄結(jié)構(gòu)

com.baidu.aip
├── auth //簽名相關(guān)類
├── http //Http通信相關(guān)類
├── client //公用類
├── exception //exception類
├── imagesearch
│ └── AipImageSearch //AipImageSearch類
└── util //工具類

支持 JAVA版本:1.7+

查看源碼

Java SDK代碼現(xiàn)已公開(kāi)格带,您可以查看代碼、或者在License范圍內(nèi)修改和編譯SDK以適配您的環(huán)境。 github鏈接:https://github.com/Baidu-AIP/java-sdk

使用maven依賴

添加以下依賴即可亮蛔。其中版本號(hào)可在maven官網(wǎng)查詢

<dependency>
    <groupId>com.baidu.aip</groupId>
    <artifactId>java-sdk</artifactId>
    <version>${version}</version>
</dependency>

直接使用JAR包步驟如下

1.在官方網(wǎng)站下載Java SDK壓縮工具包。

2.將下載的aip-java-sdk-version.zip解壓后冯键,復(fù)制到工程文件夾中瓷叫。

3.在Eclipse右鍵“工程 -> Properties -> Java Build Path -> Add JARs”。

4.添加SDK工具包aip-java-sdk-version.jar和第三方依賴工具包json-20160810.jar log4j-1.2.17.jar逢倍。

其中,version為版本號(hào)景图,添加完成后较雕,用戶就可以在工程中使用ImageSearch Java SDK。
新建AipImageSearch
AipImageSearch是圖像搜索的Java客戶端挚币,為使用圖像搜索的開(kāi)發(fā)人員提供了一系列的交互方法亮蒋。

用戶可以參考如下代碼新建一個(gè)AipImageSearch,初始化完成后建議單例使用,避免重復(fù)獲取access_token:

public class Sample {
//設(shè)置APPID/AK/SK
public static final String APP_ID = "你的 App ID";
public static final String API_KEY = "你的 Api Key";
public static final String SECRET_KEY = "你的 Secret Key";

public static void main(String[] args) {
    // 初始化一個(gè)AipImageSearch
    AipImageSearch client = new AipImageSearch(APP_ID, API_KEY, SECRET_KEY);

    // 可選:設(shè)置網(wǎng)絡(luò)連接參數(shù)
    client.setConnectionTimeoutInMillis(2000);
    client.setSocketTimeoutInMillis(60000);

    // 可選:設(shè)置代理服務(wù)器地址, http和socket二選一,或者均不設(shè)置
    client.setHttpProxy("proxy_host", proxy_port);  // 設(shè)置http代理
    client.setSocketProxy("proxy_host", proxy_port);  // 設(shè)置socket代理

    // 可選:設(shè)置log4j日志輸出格式妆毕,若不設(shè)置慎玖,則使用默認(rèn)配置
    // 也可以直接通過(guò)jvm啟動(dòng)參數(shù)設(shè)置此環(huán)境變量
    System.setProperty("aip.log4j.conf", "path/to/your/log4j.properties");

    // 調(diào)用接口
    String path = "test.jpg";
    JSONObject res = client.sameHqSearch(path, new HashMap<String, String>());
    System.out.println(res.toString(2));
    
}

}
其中示例的log4j.properties文件內(nèi)容如下:

#可以設(shè)置級(jí)別:debug>info>error
#debug:顯示debug、info笛粘、error
#info:顯示info趁怔、error
#error:只error
log4j.rootLogger=debug,appender1
#log4j.rootLogger=info,appender1
#log4j.rootLogger=error,appender1

#輸出到控制臺(tái)
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
#樣式為T(mén)TCCLayout
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout

#自定義樣式
# %r 時(shí)間 0
# %t 方法名 main
# %p 優(yōu)先級(jí) DEBUG/INFO/ERROR
# %c 所屬類的全名(包括包名)
# %l 發(fā)生的位置湿硝,在某個(gè)類的某行
# %m 輸出代碼中指定的訊息,如log(message)中的message
# %n 輸出一個(gè)換行

log4j.appender.appender1.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss:SSS}][%t][%p] -%l %m%n

在上面代碼中润努,常量APP_ID在百度云控制臺(tái)中創(chuàng)建关斜,常量API_KEY與SECRET_KEY是在創(chuàng)建完畢應(yīng)用后,系統(tǒng)分配給用戶的任连,均為字符串蚤吹,用于標(biāo)識(shí)用戶,為訪問(wèn)做簽名驗(yàn)證随抠,可在AI服務(wù)控制臺(tái)中的應(yīng)用列表中查看裁着。

注意:如您以前是百度云的老用戶,其中API_KEY對(duì)應(yīng)百度云的“Access Key ID”拱她,SECRET_KEY對(duì)應(yīng)百度云的“Access Key Secret”二驰。

配置AipImageSearch

如果用戶需要配置AipImageSearch的一些細(xì)節(jié)參數(shù),可以在構(gòu)造AipImageSearch之后調(diào)用接口設(shè)置參數(shù)秉沼,目前只支持以下參數(shù):

接口 說(shuō)明

setConnectionTimeoutInMillis 建立連接的超時(shí)時(shí)間(單位:毫秒)
setSocketTimeoutInMillis 通過(guò)打開(kāi)的連接傳輸數(shù)據(jù)的超時(shí)時(shí)間(單位:毫秒)
setHttpProxy 設(shè)置http代理服務(wù)器
setSocketProxy 設(shè)置socket代理服務(wù)器 (http和socket類型代理服務(wù)器只能二選一)

----------------------------------------------------分割線----------------------------------------------
以上都來(lái)源于百度sdk文檔https://ai.baidu.com/docs#/ImageSearch-Java-SDK/top
桶雀,細(xì)節(jié)可以自己慢慢研究,我這里就類似圖試別定義一些返回參數(shù)的規(guī)則唬复。

相似圖檢索—入庫(kù)

該接口實(shí)現(xiàn)單張圖片入庫(kù)矗积,入庫(kù)時(shí)需要同步提交圖片及可關(guān)聯(lián)至本地圖庫(kù)的摘要信息(具體變量為brief,具體可傳入圖片在本地標(biāo)記id敞咧、圖片url棘捣、圖片名稱等);同時(shí)可提交分類維度信息(具體變量為tags休建,最多可傳入2個(gè)tag)乍恐,方便對(duì)圖庫(kù)中的圖片進(jìn)行管理、分類檢索测砂。**注:重復(fù)添加完全相同的圖片會(huì)返回錯(cuò)誤茵烈。

 HashMap<String, String> options = new HashMap<String, String>();
    options.put("brief", "{\"name\":\"周杰倫\", \"id\":\"666\"}");
    options.put("tags", "100,11");

 // 參數(shù)為本地路徑(圖片不能大于4M,要寫(xiě)個(gè)方法判斷一下)
    String image = "test.jpg";
    JSONObject res = client.similarAdd(image, options);
    System.out.println(res.toString(2));

值得注意的就hashmap的參數(shù)設(shè)置,是查找的返回json砌些,別的都沒(méi)啥難度呜投。
這里相關(guān)參數(shù)暫時(shí)定個(gè)規(guī)則表,

類別 tag brief(最長(zhǎng)256B,處理成json對(duì)象)
失物:動(dòng)物 2存璃,7 {"name:物品名稱宙彪,限定10個(gè)字,
"describe:詳細(xì)描述有巧,限定40字","fileName:圖片資源名稱"}
失物:證件 2,14 {"name:校園卡悲没,
"describe:xx學(xué)院xx班小明同學(xué)丟失的校園卡篮迎,拾取于xxx"男图,"fileName:201909011234_fanka.jpg"}
失物:日用品 2,21 {"name:水杯甜橱,
"describe:藍(lán)色不銹鋼水杯逊笆,拾取于階梯教室"}
失物:急用 2,28 etc.
失物:貴重物品 2岂傲,35 etc.
失物:文件 2难裆,42 etc.
其他 2,47 etc.

相似圖檢索—入庫(kù) 返回?cái)?shù)據(jù)參數(shù)詳情

字段 是否必選 類型 說(shuō)明
log_id uint64 唯一的log id镊掖,用于問(wèn)題定位
cont_sign string 輸入圖片簽名乃戈,可用于刪除

相似圖檢索—入庫(kù) 返回示例

{
    "log_id": 2263663554,
    "cont_sign": "4261577168,501945506"
}

相似圖檢索—檢索

// 傳入可選參數(shù)調(diào)用接口
    HashMap<String, String> options = new HashMap<String, String>();
    options.put("tags", "100,11");
    options.put("tag_logic", "0");
    options.put("pn", "100");
    options.put("rn", "250");
    
相似圖檢索—檢索 請(qǐng)求參數(shù)詳情
參數(shù)名稱 是否必選 類型 說(shuō)明
tags String 1 - 65535范圍內(nèi)的整數(shù),tag間以逗號(hào)分隔亩进,最多2個(gè)tag症虑。樣例:"100,11" ;檢索時(shí)可圈定分類維度進(jìn)行檢索
tag_logic String 檢索時(shí)tag之間的邏輯归薛, 0:邏輯and谍憔,1:邏輯or
pn String 分頁(yè)功能,起始位置主籍,例:0习贫。未指定分頁(yè)時(shí),默認(rèn)返回前300個(gè)結(jié)果千元;接口返回?cái)?shù)量最大限制1000條苫昌,例如:起始位置為900,截取條數(shù)500條诅炉,接口也只返回第900 - 1000條的結(jié)果蜡歹,共計(jì)100條
rn String 分頁(yè)功能,截取條數(shù)涕烧,例:250

分頁(yè)一般獲得個(gè)前十條就夠了月而,數(shù)據(jù)太多,傳輸也慢议纯。

相似圖檢索—檢索 返回?cái)?shù)據(jù)參數(shù)詳情
字段 是否必選 類型 說(shuō)明
log_id uint64 唯一的log id父款,用于問(wèn)題定位
result_num uint32 檢索結(jié)果數(shù)
result object[] 結(jié)果數(shù)組
+cont_sign string 圖片簽名,可以用來(lái)刪除圖片或定位問(wèn)題
+score float 圖片相關(guān)性瞻凤,0-1
+brief string add是添加的brief信息
has_more bool 是否還有下一頁(yè)憨攒,返回值:true、false阀参;
如果不分頁(yè)肝集,不用關(guān)注該字段
{
    "result_num": 1,
    "result": [
        {
            "score": 0.97976700290421,
            "brief": "./data/jay1.jpg",//這里可以傳文件信息,方便資源定位和查找蛛壳,不論是在數(shù)據(jù)庫(kù)還是本地
            "cont_sign": "475124309,1080176642"
        }
    ],
    "log_id": 1968648150
}
相似圖檢索—更新杏瞻,刪除(大部分代碼類似所刀,羅列核心代碼)
 // 更新
    String image = "test.jpg";
    JSONObject res = client.similarUpdate(image, options);
// 刪除
    String image = "test.jpg";
    JSONObject res = client.similarDeleteByImage(image, options);

還有個(gè)商品查找的功能,大致思想也是找同類的產(chǎn)品捞挥,在商鋪類app里可以試著接入使用浮创。


image.png

還有個(gè)商品查找的功能

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市砌函,隨后出現(xiàn)的幾起案子斩披,更是在濱河造成了極大的恐慌,老刑警劉巖讹俊,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件垦沉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡劣像,警方通過(guò)查閱死者的電腦和手機(jī)乡话,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)耳奕,“玉大人绑青,你說(shuō)我怎么就攤上這事∥萑海” “怎么了闸婴?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)芍躏。 經(jīng)常有香客問(wèn)我邪乍,道長(zhǎng),這世上最難降的妖魔是什么对竣? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任庇楞,我火速辦了婚禮,結(jié)果婚禮上否纬,老公的妹妹穿的比我還像新娘吕晌。我一直安慰自己,他們只是感情好临燃,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布睛驳。 她就那樣靜靜地躺著,像睡著了一般膜廊。 火紅的嫁衣襯著肌膚如雪乏沸。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,274評(píng)論 1 300
  • 那天爪瓜,我揣著相機(jī)與錄音蹬跃,去河邊找鬼。 笑死铆铆,一個(gè)胖子當(dāng)著我的面吹牛蝶缀,可吹牛的內(nèi)容都是我干的辆苔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼扼劈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了菲驴?” 一聲冷哼從身側(cè)響起荐吵,我...
    開(kāi)封第一講書(shū)人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赊瞬,沒(méi)想到半個(gè)月后先煎,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡巧涧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年薯蝎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谤绳。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡占锯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缩筛,到底是詐尸還是另有隱情消略,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布瞎抛,位于F島的核電站艺演,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏桐臊。R本人自食惡果不足惜胎撤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望断凶。 院中可真熱鬧伤提,春花似錦、人聲如沸懒浮。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)砚著。三九已至次伶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間稽穆,已是汗流浹背冠王。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舌镶,地道東北人柱彻。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓豪娜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親哟楷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瘤载,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容