改变,从一个简单的“物体识别”开始
一、百度AI開放平臺(tái)
前幾天在百度的AI平臺(tái)上看到了很多好玩的API類,像類似于語音識(shí)別、人臉識(shí)別、文字識(shí)別、自然語言處理等等。這些在當(dāng)前比較熱門的技術(shù)都有提供給使用者的API。而且~~~,大部分都是免費(fèi)的喔,前提是大家不要用作商業(yè)用途哈,隨便玩玩還是可以的,給大家看一看都有些啥,先上一下圖像技術(shù)的:
大家可以很明顯的看到有一些類別在當(dāng)前還是比較貼近于我們?nèi)粘I钚枰?#xff0c;像圖像審核、圖像處理、還有圖像識(shí)別等等,這些都是平時(shí)我們應(yīng)用的比較多的。當(dāng)然這只是其中的一個(gè)分類而已,在左邊有一個(gè)大的分類表,大家有興趣的話可以根據(jù)自己的需要去玩一玩這些API,鏈接先貼在這:(點(diǎn)擊get)。
下面做一個(gè)簡(jiǎn)單的示例看看怎么使用這些API類的,在我們選擇了心儀的API以后(我先以人臉與人體識(shí)別類的人臉檢測(cè)為例),點(diǎn)進(jìn)去以后我們可以看到有關(guān)這個(gè)技術(shù)的一些功能介紹和演示,還有一些常用的應(yīng)用場(chǎng)景和服務(wù)類型,如下圖:
?
下面都是些可提供檢測(cè)的圖片,如果你就覺得這些圖片可能事先就檢測(cè)好的,那你也可以上傳一下本地的圖片檢測(cè),像這樣:
又或者是這樣?
?
咳咳,哈哈哈,這不是筆者本人哈,打住哈。總之如果大家有興趣的話,都可以去玩玩,在這里我就不做示范了。好,如果你覺得某個(gè)API已經(jīng)符合你的胃口了,那么就可以開始著手使用它了,我們點(diǎn)擊剛開始進(jìn)來的立即使用按鈕后:
登錄一下你的百度賬號(hào),有賬號(hào)的小伙伴直接登錄就好了,沒有的自己注冊(cè)一下,再進(jìn)去以后我們可以看到下面這個(gè)界面,首先我們創(chuàng)建一下應(yīng)用。
?
? 然后將應(yīng)用列表的信息補(bǔ)充完整,注意:應(yīng)用的名稱就是指你需要做的項(xiàng)目的名稱,然后具體描述什么的就自己隨便寫點(diǎn)什么吧。在創(chuàng)建成功以后我們?cè)冱c(diǎn)擊左邊的應(yīng)用列表,可以看到我們剛剛創(chuàng)建的應(yīng)用在這里:
?
注意一下上圖百度給我們的應(yīng)用提供的AppID,API Key 還有Secret Key,這三個(gè)東西是我們待會(huì)在用這個(gè)API的時(shí)候需要向百度發(fā)送請(qǐng)求,然后百度通過了以后才可以返回給你數(shù)據(jù)結(jié)果。
當(dāng)你以上幾步都完成了以后就可以正式的使用這個(gè)API了,讓我們先打開有關(guān)這個(gè)API的技術(shù)文檔:
?
?進(jìn)去了以后我們就可以看到有關(guān)這個(gè)API的詳細(xì)介紹以及如何調(diào)度使用的情況,里面也有著不同語言在調(diào)用這個(gè)API的時(shí)候所使用的的源碼,首先我們需要獲取access_token,這是需要通過剛才我們所說的那三個(gè)東西作為參數(shù)所獲取的,如何獲取技術(shù)文檔中有詳細(xì)的解答,源碼什么的也都有提供,只需要我們copy下來就好了(以Java為例):
另外我們需要注意的是:access_token的有效期為30天,切記需要每30天進(jìn)行定期更換,或者每次請(qǐng)求都拉取新token;
我們?cè)谑褂眠@個(gè)API的時(shí)候一定要下載對(duì)應(yīng)的SDK文檔,并且在項(xiàng)目中將其導(dǎo)入,因?yàn)槲覀兪钦{(diào)用百度的第三方庫,如果不下載的話在使用時(shí)就沒辦法查找到。具體如何下載,API技術(shù)文檔中也有說明,這里就不再贅述了。
?
二?、物體和場(chǎng)景識(shí)別Deom
通過前面簡(jiǎn)單的對(duì)百度API描述和如何使用以后,相信大家都已經(jīng)對(duì)其有一定的了解了,然后我們就可以開始著手用它來制作一些好玩的東西,在這里我使用的是里面圖像技術(shù)類的通用物體和場(chǎng)景識(shí)別API,這個(gè)API的主要功能就是將你上傳的圖片通過識(shí)別然后返回識(shí)別的結(jié)果。下面我給大家運(yùn)行一下API技術(shù)文檔上的Demo,先貼一下源碼:
public class Sample {public static void main(String[] args) {Sample sa = new Sample();System.out.println(sa.DistinguishImage(filePath,appId,apiKey,secretKey));}private static String appId = "輸入你的appID";private static String apiKey = "輸入你的apiKey";private static String secretKey = "輸入你的secretKey";private static String filePath = "輸入你的圖片路徑";public String DistinguishImage(String filePath, String appId,String apiKey,String secretKey) {// 初始化一個(gè)AipImageClassify對(duì)象,傳入你的appID,apiKey,secretKey.AipImageClassify client = new AipImageClassify(appId, apiKey, secretKey);String DistinguishContent = TestImage(filePath,client);return DistinguishContent;}private String TestImage(String filePath, AipImageClassify client) {// 傳入可選參數(shù)調(diào)用接口HashMap<String, String> options = new HashMap<String, String>();options.put("top_num", "3");options.put("baike_num", "5");// 參數(shù)為本地路徑 // String filepath = "E:\\圖片測(cè)試\\myimage.jpg"; // JSONObject res = client.advancedGeneral(filepath, options); // System.out.println(res.toString(2));// 參數(shù)為二進(jìn)制數(shù)組byte[] file = readFile(filePath);JSONObject res = client.advancedGeneral(file, options);String Content = res.toString(2);return Content;}private BufferedImage img;private byte[] bytes;private byte[] readFile(String fileName) {try {InputStream inputStream = new BufferedInputStream(new FileInputStream(fileName));img = ImageIO.read(inputStream);ByteArrayOutputStream outputStream = new ByteArrayOutputStream();ImageIO.write(img,"jpg",outputStream);bytes = outputStream.toByteArray();} catch (Exception e) {e.printStackTrace();}return bytes;} }
?
?
?
下面的是返回結(jié)果,可以看到每一種可能性的結(jié)果主要返回了四個(gè)參數(shù),score(每一種結(jié)果的評(píng)分,排序的主要參照,范圍在0-1之間,數(shù)值越大,屬于這類物體的可能性越高),root(物體的主要分類:比如動(dòng)物、植物等),keyword(具體屬于哪一種,可以理解為root實(shí)例化后的對(duì)象)、baike_info(里面主要是關(guān)于這個(gè)分類的介紹,還包含了介紹的鏈接和百度百科的描述)。返回的描述結(jié)果還是比較全面的。
[main] INFO com.baidu.aip.client.BaseClient - get access_token success. current state: STATE_AIP_AUTH_OK {"result": [{"score": 0.885108,"root": "植物-菊科","keyword": "向日葵","baike_info": {"baike_url": "http://baike.baidu.com/item/%E5%90%91%E6%97%A5%E8%91%B5/6106","image_url": "http://imgsrc.baidu.com/baike/pic/item/9f2f070828381f309a091d76ab014c086f06f0d9.jpg","description": "向日葵(拉丁文:Helianthus annuus),屬向日葵族,一年生草本,高1~3.5米。莖直立,圓形多棱角,質(zhì)硬被白色粗硬毛。廣卵形的葉片通常互生,先端銳突或漸尖,有基出3脈,邊緣具粗鋸齒,兩面粗糙,被毛,有長柄。頭狀花序,直徑10~30厘米,單生于莖頂或枝端。總苞片多層,葉質(zhì),覆瓦狀排列,被長硬毛,夏季開花,花序邊緣生中性的黃色舌狀花,不結(jié)實(shí)。花序中部為兩性管狀花,棕色或紫色,能結(jié)實(shí)。矩卵形瘦果,果皮木質(zhì)化,灰色或黑色,稱葵花籽。原產(chǎn)南美洲,馴化種由西班牙人于1510年從北美帶到歐洲,最初為觀賞用。19世紀(jì)末,又被從俄國引回北美洲。中國均有栽培。向日葵種子叫葵花籽,常炒制之后做為零食食用,味美,也可以榨葵花籽油用于食用,油渣可以做飼料。"}},{"score": 0.699135,"root": "植物-其它","keyword": "太陽花","baike_info": {"baike_url": "http://baike.baidu.com/item/%E5%90%91%E6%97%A5%E8%91%B5/6106","image_url": "http://imgsrc.baidu.com/baike/pic/item/9f2f070828381f309a091d76ab014c086f06f0d9.jpg","description": "向日葵(拉丁文:Helianthus annuus),屬向日葵族,一年生草本,高1~3.5米。莖直立,圓形多棱角,質(zhì)硬被白色粗硬毛。廣卵形的葉片通常互生,先端銳突或漸尖,有基出3脈,邊緣具粗鋸齒,兩面粗糙,被毛,有長柄。頭狀花序,直徑10~30厘米,單生于莖頂或枝端。總苞片多層,葉質(zhì),覆瓦狀排列,被長硬毛,夏季開花,花序邊緣生中性的黃色舌狀花,不結(jié)實(shí)。花序中部為兩性管狀花,棕色或紫色,能結(jié)實(shí)。矩卵形瘦果,果皮木質(zhì)化,灰色或黑色,稱葵花籽。原產(chǎn)南美洲,馴化種由西班牙人于1510年從北美帶到歐洲,最初為觀賞用。19世紀(jì)末,又被從俄國引回北美洲。中國均有栽培。向日葵種子叫葵花籽,常炒制之后做為零食食用,味美,也可以榨葵花籽油用于食用,油渣可以做飼料。"}},{"score": 0.453014,"root": "植物-其它","keyword": "花海","baike_info": {"baike_url": "http://baike.baidu.com/item/%E8%8A%B1%E6%B5%B7/9009691","image_url": "http://imgsrc.baidu.com/baike/pic/item/3c6d55fbb2fb4316e955e21d26a4462309f7d30b.jpg","description": "《花海》是周杰倫演唱的一首歌曲,由周杰倫作曲,古小力和黃淩嘉填詞,收錄在周杰倫2008年發(fā)行的專輯《魔杰座》中。《花海》是一首充滿島國風(fēng)情的歌曲,周杰倫以海島唱腔演唱,有種撫慰人心的力量。"}},{"score": 0.272218,"root": "植物-其它","keyword": "葵花","baike_info": {"baike_url": "http://baike.baidu.com/item/%E8%91%B5%E8%8A%B1/5097148","image_url": "http://imgsrc.baidu.com/baike/pic/item/b03533fa828ba61ee8609a9d4b34970a314e59f1.jpg","description": "葵花,學(xué)名向日葵(Helianthus annuus)別名太陽花,是菊科向日葵屬的植物。向日葵花語為愛慕、光輝、高傲之意,仰慕、凝視著你。溫暖,耐旱,能產(chǎn)果實(shí)葵花籽。原產(chǎn)北美洲,世界各地均有栽培。向日葵也是俄羅斯,秘魯?shù)膰ā?#34;}},{"score": 0.080621,"root": "商品-農(nóng)用物資","keyword": "花卉","baike_info": {"baike_url": "http://baike.baidu.com/item/%E8%8A%B1%E5%8D%89/229536","image_url": "http://imgsrc.baidu.com/baike/pic/item/f9dcd100baa1cd1192fd9cb2b312c8fcc2ce2ddd.jpg","description": "花卉,具有觀賞價(jià)值的草本植物,是用來欣賞的植物的統(tǒng)稱,喜陽且耐寒,具有繁殖功能的短枝,有許多種類。典型的花,在一個(gè)有限生長的短軸上,著生花萼、花瓣和產(chǎn)生生殖細(xì)胞的雄蕊與雌蕊。花由花冠、花萼、花托、花蕊組成,有各種各樣顏色,有的長得很艷麗,有香味。有些學(xué)者認(rèn)為裸子植物的孢子葉球也是\u201c花\u201d,而多數(shù)人則認(rèn)為被子植物才有真正的花,所以被子植物也稱為有花植物。花的各部分不易受外界環(huán)境影響,長期以來,人們都以花的形態(tài)結(jié)構(gòu)作為被子植物分類鑒定和系統(tǒng)演化的主要依據(jù)(見被子植物門)。"}}],"log_id": 2979176988250706114,"result_num": 5 }
?
三、我的物體識(shí)別
上面給大家運(yùn)行了百度API提供的Demo,其實(shí)它提供的不僅僅是上面的,還有關(guān)于具體的分類的Demo,比如有專門的動(dòng)物分類,植物分類,以及商場(chǎng)的logo分類等等,大家如果有興趣的話可以多多嘗試,根據(jù)自己的需要運(yùn)行那些你覺得更好玩的Demo。下面給大家展示一下我做的一個(gè)比較簡(jiǎn)單的物體識(shí)別的成效,當(dāng)然不管是代碼還是布局什么的都有很大的優(yōu)化空間,我暫時(shí)還沒有進(jìn)行優(yōu)化,在這里只是給大家做個(gè)參考:
在上面的圖片中我們可以很明顯的看到,一開始我初始化的時(shí)候就已經(jīng)添加了一個(gè)貓咪的圖片,在通過識(shí)別這張圖片后將識(shí)別的內(nèi)容返回到了下面的文本框中。在這里文本框中的字體比較小,我還沒有進(jìn)行優(yōu)化。只是給大家看看大概的成果是這個(gè)亞子的。如果想換其他的圖片的話,我們也可以通過點(diǎn)擊右邊的一些圖片來看看效果:
可以看到在我點(diǎn)擊了右邊不同的圖片以后,出現(xiàn)了不同的效果以及識(shí)別信息,如果覺得這些都太局限了,那么我們就點(diǎn)擊下方的“上傳”按鈕,來識(shí)別自己想要的圖片,比如這樣:
這樣子一來就可以將我們的產(chǎn)品變得更具有靈活性,注意:我這里上傳的圖片文件暫時(shí)只是設(shè)置了可以識(shí)別jpg和png的圖片,其他類型的圖片上傳的話暫時(shí)是識(shí)別不了的喲。至于github源碼的話我先貼在這里(代碼是用Java實(shí)現(xiàn)的),如果大家有興趣的話可以看看。
如果大家具體還有些關(guān)于百度API使用的問題,又或者是對(duì)我的工程有什么更好的改進(jìn)想法,歡迎大家與我交流(貼一下聯(lián)系方式):
VX:a1027759481? ?
QQ:1027759481
今天就先到這里啦~
拜~
?
?
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/picktan9/p/11287424.html
總結(jié)
以上是生活随笔為你收集整理的改变,从一个简单的“物体识别”开始的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 集合List、Set、Map知
- 下一篇: 沉船会有什么_神秘沉船,惊人宝藏,尘封历