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