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