TensorFlow + YOLO + React Native 制作 Not Hotdog App

看過(guò)美劇《硅谷》的同學(xué)都知道人工智能識(shí)別熱狗曾是硅谷最賺錢(qián)的技術(shù)之一斟或。去年 HBO 發(fā)布了官方的 Not Hotdog 應(yīng)用瘤缩,支持 iOS 和 Android 平臺(tái),據(jù)說(shuō)是用 TensorFlow叽躯、Keras 和 React Native 打造的檩坚,但是源碼沒(méi)有公開(kāi)。

最近入門(mén)了機(jī)器學(xué)習(xí)的一些邊邊角角崇猫,仿制了一個(gè) Not Hotdog 應(yīng)用沈条。代碼主要使用 React NativeTensorFlow Mobile ,訓(xùn)練模型使用 Yolo v2 Tiny诅炉。

源代碼

https://github.com/shaqian/Not-Hotdog

效果圖

iOS

是時(shí)候表演真正的技術(shù)了 —— 畫(huà)框

Android

建模過(guò)程

1. 制作數(shù)據(jù)集

偷懶用了 COCO 2014 數(shù)據(jù)集蜡歹。COCO 一共有 80 種物體類別,其中一個(gè)就是熱狗 (hot dog)涕烧。我寫(xiě)了個(gè)腳本導(dǎo)出所有的熱狗圖片(共 1200 多張)并生成 yolo 格式的標(biāo)注:
https://github.com/shaqian/Not-Hotdog/blob/master/yolo/coco2yolo.py

2. 訓(xùn)練 Yolov2 Tiny

使用的是 darknet這個(gè) fork 月而。

darknet.exe partial yolov2-tiny.cfg yolov2-tiny.weights yolov2-tiny.conv.13 13
darknet.exe detector train data\obj.data yolov2-tiny-hotdog.cfg yolov2-tiny.conv.13

3. 將 weights 轉(zhuǎn)為 TensorFlow protobuf (.pb) 格式

我用的 darkflow 轉(zhuǎn)換:

flow --model ../yolov2-tiny-hotdog.cfg --load ../yolov2-tiny-hotdog_final.weights  --savepb

4. 量化

轉(zhuǎn)換后的 .pb 約有 44MB瞻凤。用 TensorFlow repo里面的 quantization 腳本 壓縮一下憨攒,體積可以減小到 11MB。

python3 tensorflow/tools/quantization/quantize_graph.py --input=yolov2-tiny-hotdog.pb --output_node_names=output --output=quantized_yolov2-tiny-hotdog.pb --mode=weights

制作應(yīng)用

React Native 的 Native 模塊

出于方便鲫构,調(diào)用 TensorFlow Mobile 接口是自己實(shí)現(xiàn)的 native 模塊浓恶。

  • iOS 端的實(shí)現(xiàn)代碼在 ./react-native-NotHotdog/ios/NotHotdog/TensorflowManager.mm

  • Android 端的實(shí)現(xiàn)代碼在 ./react-native-NotHotdog/android/app/src/main/java/com/nothotdog/tensorflowmanager

參考了以下 repo 特此感謝:

依賴庫(kù)一覽

準(zhǔn)備工作

./yolo 文件夾的 quantized_yolov2-tiny-hotdog.pb 復(fù)制至以下路徑:

  • react-native-NotHotdog/android/app/src/main/assets
  • react-native-NotHotdog/ios/NotHotdog/data

安裝依賴

  • iOS 的 TensorFlow Mobile 用 pod 安裝:
cd react-native-NotHotdog/ios
pod install
  • 安裝其他依賴:
cd react-native-NotHotdog/
npm install

運(yùn)行

iOS

  • 模擬器:
react-native run-ios

Android

由于 react-native-camera 的一些問(wèn)題结笨,Android 端拍照要比 iOS 慢很多包晰,有時(shí)間可以改進(jìn)一下。

  • GitHub repo 里的 hotdog.apk 可直接安裝炕吸。

  • 模擬器:

react-native run-android

感謝您的閱讀!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赫模,一起剝皮案震驚了整個(gè)濱河市树肃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瀑罗,老刑警劉巖胸嘴,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異斩祭,居然都是意外死亡劣像,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)摧玫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)耳奕,“玉大人,你說(shuō)我怎么就攤上這事∥萑海” “怎么了闸婴?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)芍躏。 經(jīng)常有香客問(wèn)我邪乍,道長(zhǎng),這世上最難降的妖魔是什么纸肉? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任溺欧,我火速辦了婚禮,結(jié)果婚禮上柏肪,老公的妹妹穿的比我還像新娘姐刁。我一直安慰自己,他們只是感情好烦味,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布聂使。 她就那樣靜靜地躺著,像睡著了一般谬俄。 火紅的嫁衣襯著肌膚如雪柏靶。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天溃论,我揣著相機(jī)與錄音屎蜓,去河邊找鬼。 笑死钥勋,一個(gè)胖子當(dāng)著我的面吹牛炬转,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播算灸,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼扼劈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了菲驴?” 一聲冷哼從身側(cè)響起荐吵,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赊瞬,沒(méi)想到半個(gè)月后先煎,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡巧涧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年榨婆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片褒侧。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出闷供,到底是詐尸還是另有隱情烟央,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布歪脏,位于F島的核電站疑俭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏婿失。R本人自食惡果不足惜钞艇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望豪硅。 院中可真熱鬧哩照,春花似錦、人聲如沸懒浮。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)砚著。三九已至次伶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間稽穆,已是汗流浹背冠王。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舌镶,地道東北人柱彻。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像乎折,于是被迫代替她去往敵國(guó)和親绒疗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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