摘要:最重要的是,我的代碼全部以實現(xiàn),是時候讓前端工程師們在人工智能機器學(xué)習(xí)領(lǐng)域大展身手了。千萬不要被表象所困擾,更不要被人工智能機器學(xué)習(xí)的標簽所迷惑?;谕瑯佑捎嬎銠C視覺科學(xué)家開發(fā)的成熟且高度可擴展的深度學(xué)習(xí)技術(shù),每天能夠分析數(shù)十億張圖像。
最近HBO電視網(wǎng)推出的美劇《硅谷Silicon Valley》席卷全球,里面有一個橋段介紹了超級有趣的iOS app-?Not Hotdog。你甚至可以在APP Store上下載到它。
受啟發(fā)于此,我打算開發(fā)一個實現(xiàn)同樣功能的“機器人”:用戶只需要上傳任何一張圖片,馬上就可以得到反饋,告訴你這張圖片的內(nèi)容是不是一個熱狗。最重要的是,我的代碼全部以JS實現(xiàn),是時候讓前端工程師們在人工智能/機器學(xué)習(xí)領(lǐng)域大展身手了。
實現(xiàn)細節(jié)這個APP以Twitter為宿主,基于Twitter Bot機器人:任何Twitter用戶都可以發(fā)布一張圖片,并且在上傳描述文字中加入“@IsItAHotdog”,就能立即得到回復(fù)。就像大陸常用的微博加入"#"描述符一樣簡單。
千萬不要被表象所困擾,更不要被“人工智能/機器學(xué)習(xí)”的標簽所迷惑。其實實現(xiàn)方式和原理非常簡單。
首先,我forked?@BryanEBraun’s 的開源作品Twitter bot,它基于NodeJS,Twitter Bot譯為機器人:會定時發(fā)推,或隨機回復(fù)。
官方介紹內(nèi)容也非常簡潔明了:
This is a simple twitter bot, designed to retweet the contents of a twitter list.
借助這個工具,接下來我的工作就是對提到"IsItAHotdog"的推文(即含有IsItAHotdog標簽),作出回應(yīng)。
在安裝?tuiter?NPM包之后,代碼中引入依賴,并加入:
var tu = require("tuiter")(config.keys); function listen() { tu.filter({ track: "isitahotdog" }, function(stream) { console.log("listening to stream"); stream.on("tweet", onTweet); }) }
當然,我們只對含有圖片的推文進行處理:
if(tweet.entities.hasOwnProperty("media") && tweet.entities.media.length > 0)
最后,我們把結(jié)果寫進推文回復(fù)中:
tu.update({ status: "@" + tweet.user.screen_name + message, in_reply_to_status_id: tweet.id_str }, onReTweet);訓(xùn)練模型
以上只是介紹了劫持推文,發(fā)布回復(fù)的內(nèi)容。那么回復(fù)的結(jié)果應(yīng)該怎么獲得呢?我們怎么知道圖片是不是熱狗呢?這就到了最重要的一步。
熟悉深度學(xué)習(xí)的朋友可能會了解,接下來我們可能需要收集圖片,并用Keras搭建CNN常用神經(jīng)網(wǎng)絡(luò)。其中Keras是一個兼容Theano和Tensorflow的神經(jīng)網(wǎng)絡(luò)高級包, 高度模塊化,用他來組建一個神經(jīng)網(wǎng)絡(luò)非常快速便捷。
這些內(nèi)容可能中文資料并不多,僅有的一些如果大家感興趣的話,我推薦:
對比學(xué)習(xí)用 Keras 搭建 CNN RNN 等常用神經(jīng)網(wǎng)絡(luò)
Basic Machine Learning and Deep Learning
但是這些深度學(xué)習(xí)的內(nèi)容,可能很多前端工程師并不是太了解,那么我們就得重新修煉才能玩轉(zhuǎn)這一切嗎?
別急,現(xiàn)在就可以開始!這里我給大家安利一下AWS Rekognition,我們的APP也是基于AWS Rekognition來完成。
Amazon Rekognition 是一種讓您能夠輕松為應(yīng)用程序添加圖像分析功能的服務(wù)。利用 Rekognition,您可以檢測對象、場景和面孔,可以搜索和比較面孔,還可以識別圖像中的不當內(nèi)容。借助 Rekognition 的 API,您可以快速為應(yīng)用程序添加基于深度學(xué)習(xí)的復(fù)雜視覺搜索和圖像分類功能。
換句話說,“不了解機器學(xué)習(xí),簡單的調(diào)用幾個API都應(yīng)該會吧。”
Amazon Rekognition基于同樣由Amazon計算機視覺科學(xué)家開發(fā)的成熟且高度可擴展的深度學(xué)習(xí)技術(shù),每天能夠分析數(shù)十億張 Prime Photos 圖像。
說到這里可能有些繞,其實來看下代碼,非常的簡單:
var params = { Image: { Bytes: body }, MaxLabels: 20, MinConfidence: 70 }; rekognition.detectLabels(params, function(err, data) { if (err) console.log(err, err.stack); // an error occurred else { console.log(data); // successful response var isItAHotdog = false; for (var label_index in data.Labels) { var label = data.Labels[label_index]; if(label["Name"] == "Hot Dog") { if(label["Confidence"] > 85) { isItAHotdog = true; tweetBasedOnCategorization(tweet, true); } } } if(isItAHotdog == false) { tweetBasedOnCategorization(tweet, false); } } });
我把推文附帶的圖片下載到自己的服務(wù)器機器上,然后通過AWS Node SDK傳遞給Rekognition,并設(shè)置相應(yīng)的參數(shù),包括置信區(qū)間等。
最后,在回調(diào)中獲得最終結(jié)果。
讓我們來看一組測試結(jié)果吧:
這一切的開發(fā)過程都是非常的簡單,如果你想看到源碼,我fork了一份,并加入了中文注解。請點擊這里查看源碼。
本文翻譯自Building Silicon Valley’s Hot Dog App in One Night,對于原文進行了部分擴展。
Happy Coding!
最后,可恥地做一波廣告:
受到gitChat的邀請,我要開分享了。形式類似知乎Live,但是這個平臺我感覺少了浮躁而更加專業(yè)。
主題內(nèi)容為:面對前端六年歷史代碼,如何接入并應(yīng)用ES6解放開發(fā)效率。
我邀請了資深前端專家,社區(qū)網(wǎng)紅@顏海鏡同我一起,詳情介紹點擊這里。
微信掃描下方二維碼,即可參加:
PS: 作者Github倉庫,歡迎通過代碼各種形式交流。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/19618.html
摘要:最重要的是,我的代碼全部以實現(xiàn),是時候讓前端工程師們在人工智能機器學(xué)習(xí)領(lǐng)域大展身手了。千萬不要被表象所困擾,更不要被人工智能機器學(xué)習(xí)的標簽所迷惑。基于同樣由計算機視覺科學(xué)家開發(fā)的成熟且高度可擴展的深度學(xué)習(xí)技術(shù),每天能夠分析數(shù)十億張圖像。 最近HBO電視網(wǎng)推出的美劇《硅谷Silicon Valley》席卷全球,里面有一個橋段介紹了超級有趣的iOS app-?Not Hotdog。你甚至可...
摘要:譯年你不能錯過的類庫后端掘金各位讀者好,這篇文章是在我看過的一篇介紹文后,整理出來的。上線后平穩(wěn)運行我的后端書架后端掘金我的后端書架月前本書架主要針對后端開發(fā)與架構(gòu)。 【譯】2017 年你不能錯過的 Java 類庫 - 后端 - 掘金各位讀者好, 這篇文章是在我看過 Andres Almiray 的一篇介紹文后,整理出來的。 因為內(nèi)容非常好,我便將它整理成參考列表分享給大家, 同時附上...
閱讀 3747·2021-10-11 10:59
閱讀 1336·2019-08-30 15:44
閱讀 3506·2019-08-29 16:39
閱讀 2913·2019-08-29 16:29
閱讀 1835·2019-08-29 15:24
閱讀 846·2019-08-29 15:05
閱讀 1284·2019-08-29 12:34
閱讀 2384·2019-08-29 12:19