TensorFlow 影象識別功能在樹莓派上的應用
上週 TensorFlow 1.0 的釋出使之成為最有前景的深度學習框架,也在中國 AI 社群中掀起了學習 TensorFlow 的熱潮,不過光跑例子怎能脫穎而出?本文是資料科學公司(Silicon Valley Data Science)的資料工程師 Matt Rubashkin 的一篇實戰派文章,介紹了他如何創造性的將深度學習與物聯網結合起來解決一個實際問題的思路和過程,非常具有啟發性。
SVDS(Silicon Valley Data Science)曾使用過實時、公開的資料來優化對加州火車到達時間的預測。但是,加州火車的到站時間資料不可靠,因此難以準確預測。我們使用 Raspberry Pi 攝像頭和 USB 麥克風,能夠偵測到火車的經過及其速度和方向。當在 Mountain View 辦公室裡裝配了一臺新的 Raspberry Pi 時,我們遇到了一個棘手的問題:Pi 不單單偵測到了加州火車(true positive),也偵測到了太平洋聯合貨運的火車和 VTA 輕軌(false positive)。為了確保偵測到的是加州火車的延遲,我們不得不對不同的火車做個靠譜的分類。
傳統的背景影象分類技術是遠遠不夠的,因為我們在整個加州火車系統的鐵軌上——包括不同的距離,不同的方向,不同的高度——放滿了 Raspberry Pi。而且我們的操作時間也很有限,沒有足夠的時間來為系統裡每一個 RaspberryPi 手動選擇模式和特徵。
用 TensorFlow 解圍
幸好是在2016年遇到這個影象分類問題,因為在這一年裡很多深度學習相關的影象識別技術的程式碼被公開了。我們選擇使用 Google 的 TensorFlow 卷積神經網路,因為它有簡單易用的 Python 庫和豐富的線上文件。我拜讀過 Pete Warden 關於 TensorFlow 的部落格——TensorFlow for Poets(
我是從 TensorFlow 教程頁面中花的識別教程開始的。我使用命令列介面來分類資料集中的圖片,也包括 Van Gough 的向日葵這樣的定製圖片。
現在我有了用 TensorFlow 來建立影象分類器的經驗,便希望建立一個穩健無偏的影象識別模型用來識別火車。雖然之前 Raspberry Pi 拍攝到的圖片可以用於訓練模型,但我還是選擇了更大更多樣的資料集。我也將小汽車和卡車包括進模型中,因為他們也可能在某些位置上經過 Raspberry Pi 的偵測點。為了得到這個汽車分類器的訓練資料集,我用 Google 找了1000張圖片,含:
- 加州火車
- 貨運火車
- 輕軌
- 卡車
- 小汽車
測試及配置模型
對模型訓練了一個通宵,第二天一早,我回到辦公桌來檢視模型執行得怎麼樣。首先我測試了不包含在訓練集裡圖片,並驚奇的發現,分類器似乎一直可以挑出正確的分類。這裡麵包括從 Google 上找到的訓練集的圖片,也包括從 Raspberry Pi 採集到的圖片。
我在 Raspberry Pi 上執行圖片分類器,來保證這套裝置使用者是可以支付得起的。此外,由於不能保證網路連線的速度,我必須直接在裝置上執行分類器以避免把圖片傳送到中心伺服器所造成的延遲。
Raspberry Pi3 馬力(功率)充足,可以直接在裝置上進行流處理,因此我們只需要用網路傳送小容量的,處理過的資料流,並且這套裝置也便宜。這個感測器整體的硬體成本是130美金,所有的程式碼都是用的開源庫。我用 JupyterHub 對其進行了測試,以便控制多個位置上的 Raspberry Pi 裝置。有了一個正常執行的車輛分類集,接下來我把模型載入到 Raspberry Pi 上,並在視聽流架構下實現了它。
為了能夠在 Raspberry Pi 32Bit ARM晶片上編譯,我使用的是來自SamAbraham 的 Pi-TensorFlow enthusiasts 小社群的指引(https://github.com/samjabrahams/tensorflow-on-raspberry-pi),同時也與 Pete Warden,Google 的 TensorFlow 團隊進行了溝通。
解決 TensorFlow 在 Raspberry Pi 上出現的問題
雖然有好的文件記錄如何在 Android 和其他小型計算裝置上安裝 TensorFlow,但大多數的例子都是單張圖片識別或批處理,而非流媒體圖片識別。在Pi上單張圖片可以簡單穩健地給出分數,如下面這個成功的分類所示:
但是,把85MB的模型載入到記憶體裡需要太長的時間了,因此需要把分類器圖表載入到記憶體裡。分類器圖表載入到記憶體之後,Raspberry Pi 擁有總計1G的記憶體,在我們定製的火車偵測 Python 應用中,有足夠的計算資源來處理連續執行的攝像頭和麥克風。
即便如此,用 TensorFlow 分析 PiCamera 拍攝到的每一張圖片也是不可行的,因為這樣 CPU 的使用率最終將達到100%,導致 Raspberry Pi 系統過熱,因此只有運動物體的圖片傳送給了 Pi 上的圖片分類器,並用 TensorFlow 識別不同型別車輛。
結論
如果你對使用物聯網裝置做實時影象分類感興趣,請從這裡開始:
原文: TensorFlow Image Recognition on a Raspberry Pi
作者: Matthew Rubashkin,目前是資料科學公司 Silicon Valley Data Science 的資料工程師,並且是UC Berkeley 博士,擁有光學物理和生物醫學研究的背景,並且在軟體開發,資料庫工程和資料分析方面擁有廣泛的經驗。
本文來源AI100公眾號(rgznai100),授權CSDN釋出。
歡迎人工智慧領域技術投稿、約稿、給文章糾錯,請傳送郵件至[email protected]
SDCC 2017·上海站將於2017年3月17-19日登陸申城,三大技術峰會24位嘉賓,匯聚國內一線的網際網路公司大牛,暢談運維、資料庫和架構的熱門話題和技術熱點,精益運維發起人&優維科技CEO王津銀、MongoDB 大中華區首席架構師唐建法和華為軟體API開放平臺架構師李林鋒等親臨現場。3月5日前門票八折優惠中,5人以上團購立減400元,詳情點選註冊參會
相關推薦
TensorFlow 影象識別功能在樹莓派上的應用
上週 TensorFlow 1.0 的釋出使之成為最有前景的深度學習框架,也在中國 AI 社群中掀起了學習 TensorFlow 的熱潮,不過光跑例子怎能脫穎而出?本文是資料科學公司(Silicon Valley Data Science)的資料工程師 M
樹莓派上的tensorflow視訊識別+遠端視訊流傳輸
1.下載models: 第一步:git clone https://github.com/tensorflow/models.git models-master 這篇文章配置一定要注意一定不要把models-master資料夾cp至/usr/local/lib中去,直接在~/
樹莓派上利用Tensorflow實現小車的自動駕駛
先丟擲大家最關心的——程式碼地址: github傳送門:https://github.com/Timthony/self_drive 碼雲傳送門:https://gitee.com/tiantianhang/self_drive 基於樹莓派的人工智慧自動駕駛小車 # 整體流程 電機控
人臉識別之face_recognition:(三)face_recognition在樹莓派上的提速
在前面說過,樹莓派上使用face_recognition是十分慢的,這裡講解一下作者自己的提速方法: face_recognition在不同機器上識別時間對比 可能是因為我在樹莓派上使用了多執行緒,opencv等原因樹莓派上識別時間比較久,後來關閉了多執行緒識別
在樹莓派上建立一個最簡單手寫體識別系統(二)
首先得先把opencv安裝上。 在PC上我使用的是anaconda,直接輸入: conda install --channel https://conda.anaconda.org/menpo opencv3 測試程式碼: import cv2
樹莓派上利用 Tensorflow 實現小車的自動駕駛
先丟擲大家最關心的——程式碼地址: github傳送門:https://github.com/Timthony/self_drive 碼雲傳送門:https://gitee.com/tiantianhang/self_drive 基於樹莓派的人工智慧自動駕駛小車
從0開始,在樹莓派上部署TensorFlow Object Detection API
如果你只想用樹莓派來識別,請移步https://blog.csdn.net/weixin_43599336/article/details/83713790 視訊演示地址: P1: https://www.bilibili.com/video/AV31697636 # 系統安裝
使用科大訊飛最新版SDK在樹莓派上搭建語音識別服務
本人的SDK是2017年1月30號左右下載的,可以在http://www.xfyun.cn/科大訊飛官網註冊,選擇相應的Linux SDK下載。 1、因為最新版SDK不支援樹莓派了,所以要下載個RaspberryPi檔案來支援在樹莓派上使用: 2、解壓好SDK後,如圖。
PC ubuntu 上編譯qt 並開發樹莓派上的桌面應用
PC ubuntu 上使用qt 開發樹莓派上的桌面應用,從編譯qt原始碼到配置kit,到編譯,到除錯執行測試,再到到寫入樹莓派sdcard 真正的一站式教程,個人覺得這樣的文章對於初學qt和樹莓派的菜鳥們來說,簡直就是福音啊!因為我就是 file:///C:\Users\D\AppData\Local\T
在樹莓派上通過usb_cam將影象傳輸到膝上型電腦
本文為博主原創,轉載請標明原作者。 --一方風景 博主的樹莓派安裝的是Ubuntu16.04 mate ROS kinetic版本 筆記本為Ubuntu14.04 ROS indigo版本 首先我們要在樹莓派上下載usb_cam的包 cd ~/catkin
在樹莓派上實現face++人臉識別
概述 目前市場上的人臉識別技術已經相對成熟,並且已經廣泛的應用於門禁,考勤,美顏軟體等方面。但是對於開發者來說自己開發高效準確的演算法並不是一件容易的事情,因此很多公司提供了良好的API介面來讓開發者能夠將精力集中在軟體的拓展功能實現上。Face++是北京曠視科技有限公
在樹莓派上設置無線靜態IP
替換 nano 靜態 設置 sta 網絡 tar fault 退出 修改文件: /etc/network/interfaces,命令如下 sudo nano /etc/network/interfaces 將最後一句iface default inet dhcp,替換成:
在樹莓派上使用Pi-FM-RDS工具打造FM調頻電臺
目錄 可執行 install github clone space gpio 註意 產生 安裝Pi-FM-RDS 安裝依賴。sudo apt-get install libsndfile1-dev 克隆Pi-FM-RDS到本地。git clone https://gith
樹莓派上配置electron記錄
pos 樹莓派 命令 sta src 默認 art log sudo 首先是最新版本的樹莓派鏡像默認不開啟ssh,所以燒寫好系統之後沒法ssh登錄 解決方法就是在燒寫的內存卡分區內建立一個ssh文件(無後綴名),這樣啟動的時候就有ssh服務了 在~/.bashrc裏面添
關於樹莓派上安裝teamviewer方法
GC 安裝文件 形式 teamview ubun none sta gin tps 在ubuntu中,sudo apt-get install -f是幹什麽用的?1、sudo命令:sudo命令用來以其他身份來執行命令,預設的身份為root,簡單來說就是提升權限,因為apt-
樹莓派上傳數據錯誤一例
incr mdi .get format bin xtra python3.5 use per 首先是源碼: 1 # -*- utf-8 -*- 2 #env !/usr/bin/python 3 4 import RPi.GPIO as GPIO
在樹莓派上安裝AdGuardHome當DNS伺服器,來遮蔽廣告和追蹤的DNS請求
AdGuardHome專案地址:AdGuardHome 樹莓派先安裝好,連上網。 1. wget https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.9-hotfix1/AdGuardHome_v0.9-hotf
樹莓派的應用--人體感應器HC-SR501
人體感應器HC-SR501的應用 材料: 樹莓派B型 人體感應器HC-SR501 發光二極體、330歐姆電阻 麵包板 人體感應器HC-SR501: 人體感應器說明書 以下說明參照:https://blog.csdn.net/sin
樹莓派上實現python程式自動殺死程序
首先,殺死程序的主要命令為ps,grep,kill這三個指令。 1、第一步是獲取要監控程序的pid號: def get_process_pid(name): child = os.popen("ps -ef | grep "+name).readline() &n
在樹莓派上安裝mosquitto實現MQTT通訊
本篇文章我們介紹一下如何在樹莓派上安裝mosquitto實現訊息接收 訊息推送協議 MQTT 提供輕量級的,支援可釋出/可訂閱的的訊息推送模式,使裝置對裝置之間的短訊息通訊變得簡單,比如現在應用廣泛的低功耗感測器,手機、嵌入式計算機、微型控制器等移動裝置。 輸入以下命令: sudo ap