資料介紹
描述
背景
視力障礙是全球約 2.5 億人面臨的一個問題。對于視障人士來說,計算機視覺為日常問題提供了一個優雅的解決方案——讓計算機為他們看清。到目前為止,計算機視覺僅限于大多數固定應用,需要大型處理器和大型電源。嵌入式 CV 系統存在,但它們擁有陡峭的學習曲線和低于標準的功耗。
但是借助 Edge Impulse,黑客現在可以輕松地在嵌入式系統上啟動低功耗 ML/CV 模型,從而將 TinyML 推向大眾。
該項目旨在利用 Edge Impulse 的技術和一些簡單的組件來解決盲人每天遇到的一個問題——過馬路。由于無法看到人行橫道燈 (PCL),盲人面臨步行旅行的問題,這通常是獨自旅行時唯一可用的交通工具。傳統上,盲人利用聲音提示或犬類輔助設備來了解他們何時可以安全通過。但是隨著汽車變得更安靜(看著你,Elon)和 CV 技術的進步,需要一個更優雅的解決方案。
輸入 CaneCam。
CaneCam 僅使用 Raspberry Pi 4、網絡攝像頭和一些電路,即可檢測到行人過路燈何時變綠,并通過小型電機的手柄振動提醒用戶。由于其優化的占空比,CaneCam 一次充電可運行 4 小時以上,足以滿足城市一日游的需要。
最好的部分是 - 您也可以使用這些簡單的部件和 Edge Impulse 制作 CaneCam!這是如何做到的:
第 1 步:組裝手杖
?
制作任何智能手杖的第一步當然是手杖本身。對于這個項目,我知道我想將電子設備完全包含在手杖內,因為沒有人喜歡背著背包、腰帶或帽子,而這些花哨的電線會妨礙我。所以 - 我選擇使用 Arduino 套件中的一個透明小盒子來獨立完成所有接線,使 CaneCam 成為你可以拿起就走的東西。(正如它應該。)
?
?
首先,使用鉆頭在手杖軸上方 3/4 處鉆兩個孔,從前到后穿過直徑。然后將這些孔與塑料盒中的兩個相同的孔匹配。這些孔用于容納固定在盒子背面的兩個肘節螺栓和墊圈。
?
?
完成后,您的盒子應固定在手杖上,晃動幾乎為零。
注意:孔的大小僅取決于您使用的螺栓和螺母。
第 2 步:構建電子設備
?
?
CaneCam 的核心是無處不在的 Raspberry Pi 4B,我之所以選擇它是因為它具有運行我們的模型所需的處理能力和 RAM。它連接到用于視頻輸入的 USB 網絡攝像頭,以及用于控制振動電機的 5V 繼電器。繼電器用于將電源從單獨的 9V 電池路由到電機,因為從 Pi 的移動電源為電機供電會導致 Pi 的操作出現問題(低電壓)。接線非常簡單,僅使用 2 個 GPIO 引腳、一些跳線、繼電器、迷你面包板和電機。如果你選擇一個足夠大的盒子,你應該可以把所有東西都裝進去,包括網絡攝像頭的 USB 數據線。
?
?
要連接 Pi、繼電器、電池和電機,請按照所示示意圖進行操作。您可以為內部電子設備選擇小型跨接電纜,因為它們非常緊密。
注意:連接到電機的跨接電纜會比其他的要長得多,原因請參見下一節。您可能需要將兩根電線焊接在一起以獲得所需的長度。
連接電子設備后,只需將網絡攝像頭插入 pi 上的任何 USB 端口,然后連接移動電源為 Pi 供電。你的接線完成了!
?
?
第 3 步:安裝電子設備
?
現在我們有了膽量和外殼,是時候將兩者結合起來了。首先放置移動電源,然后將 Pi、電池、繼電器和面包板放在頂部 - 確保所有引腳都連接并固定。
您可以以任何您選擇的方式分配包裝盒中的組件,只需確保為網絡攝像頭電纜留出足夠的空間。
?
?
然后,拿起您的網絡攝像頭并將其連接到盒子的前面/頂部。我使用了一些膠帶,因為我的網絡攝像頭的形狀很適合它,但根據您的盒子和網絡攝像頭,您的需求可能會有所不同。重要的部分是網絡攝像頭安裝后移動最小。
?
?
從盒子中取出電機和長電纜(不要撕開它的連接),然后將網絡攝像頭連接到 Pi,然后將其余的網絡攝像頭電纜鋪設(填充)在盒子內。您可能會發現需要在盒蓋上鉆一個孔才能將 USB 電纜穿過。
?
?
最后,將長跨接電纜沿拐杖的軸向上連接到電機的頂部,電機用一些管道膠帶固定在那里。確保將電機齊平放置,以便將振動傳遞到手杖 - 越靠近手柄越好。大量使用膠帶進行電纜管理,您就完成了構建!
?
?
注意:我建議未來的設計進一步采用極簡主義,并將電機和電纜隱藏在通常是空心的手杖體內。然而,對于這個概念驗證,我選擇將電機和電纜留在手杖的外部。
第 4 步:構建模型
收集數據
這是 Edge Impulse 出現的部分。但在我們打開工作室之前,讓我們談談數據。具體來說,您將使用哪些圖片來構建模型?過去的研究已經成功地制作了可以檢測 PCL 的模型,但是,正如您可能認識到的那樣,并非所有的燈都是相同的。世界上到處都是 PCL,但你幾乎找不到一座城市的燈光與 30 英里外的城市一樣——更不用說不同的國家了。
因此,很難為這些看起來如此不同的燈制作一個通用模型。因此,我為我的概念驗證選擇了一種更具體的方法:我滑板到我家附近的一個 4 路交叉口,并在那里為 8 個 PCL 拍攝了 100 張照片,它們具有不同的方向、模式和放大倍率。(同時避免人們奇怪我為什么對人行橫道燈如此感興趣)
當然,這意味著我的模型只能在使用這種特定類型 PCL 的人行橫道上工作,并且在我收集數據的確切交叉口處效果最好。但是對于概念證明,這就是我所需要的。
邊緣脈沖
Edge Impulse是一個相對較新的平臺,允許黑客輕松地在嵌入式設備上部署 ML 模型,無論技能水平如何。這就是為什么它非常適合這個專為新手設計的項目。
我們將使用 Edge Impulse 的工作室創建一個可以檢測 PCL 的圖像分類模型。通常,只有 100 張圖片的數據集不足以訓練整個模型進行分類。但是多虧了 Edge Impulse,我們可以利用遷移學習來用少量數據獲得一個相當好的模型。
首先,創建你的項目
出現提示后,選擇圖像->對單個對象進行分類,因為每張圖片我們只使用一個對象(人行橫道燈)。
創建后,您的項目儀表板將在頂部為您提供一個清單,這就是我們將要關注的內容。首先,我們將收集我們的數據 - 實現此目的的兩種主要方式是連接手機和從您的計算機上傳圖片 - 您可以選擇其中任何一種。
注意:我使用的 3 個類是“Go”、“Stop”和“Unknown”。未來的項目可以在這些基礎上進行擴展,并包括諸如“倒計時”之類的類以獲得更多功能
在這個例子中,我將上傳我之前拍攝的照片,這些照片保存在我的電腦上。只需選擇所有顯示“Go”的燈光圖片,并為其分配正確的標簽,如圖所示。
對“停止”和“未知”類再次執行此操作。一旦您上傳了所有圖片(嘗試至少獲得 50 張),我們的其余工作將完全包含在 Edge Impulse Studio 中!
創造沖動
我們的下一個任務是制作真正的神經網絡。在 Edge Impulse 中,模型被稱為脈沖,制作它們是輕而易舉的事。單擊脈沖設計菜單。這是我們告訴 Edge Impulse 我們正在嘗試制作什么樣的模型以及使用什么設置的地方。
我們將在脈沖設計中使用推薦的圖像分類設置——即 96x96 圖像和擬合最短軸。我們還想點擊添加處理塊和添加學習塊來添加推薦的圖像塊和遷移學習塊。
最后,點擊保存沖動。導航新的圖像菜單項,選擇 RGB 顏色深度并保存。這告訴我們的模型我們想要使用彩色圖像,當“Go”和“Stop”之間的很大一部分差異是光的顏色時,我們當然需要它。(白對紅)
保存會將您帶到“生成功能”頁面,您應該在該頁面單擊,您猜對了,生成功能。
這為我們提供了圖像的特征圖,我們可以使用它來觀察數據中的模式。
我們還獲得了我們設備上速度和內存使用情況的性能估計。
接下來,單擊遷移學習。這是我們實際創建/訓練網絡以響應我們的數據的地方(在這種情況下,是人行橫道燈圖片)。將訓練周期數更改為 100,然后選中數據增強框。
接下來,單擊選擇不同的模型并選擇MobileNetV2 96x96 0.35模型。
幾乎完成(與模型)!單擊模型框上的編輯按鈕,將神經元的數量更改為 20。所有這些更改將使模型更適合您的數據,并使 CaneCam 能夠更有效地檢測您的交叉燈。
最后,單擊開始訓練按鈕。訓練可能需要一分鐘,因為我們增加了 epoch 的數量,所以花點時間喝點水。
評估沖動
訓練后,我的模型返回了 63.6% 的一般準確率。單擊“模型測試”菜單項會顯示測試數據集,您可以在其中對分離的數據運行模型。單擊“全部分類”以測試數據。
該評估顯示了 10 個 Stop and Go 樣本的(盡管是無私的)準確度為 100%。對于 <100 幅圖像來說不算太破舊。
第 4 步:編碼
連接到邊緣脈沖
?
我們中間的工程師們玩得很開心,現在是編碼人員開始他們的現場日的時候了。畢竟,沒有背后代碼的電子產品是什么?
?
雖然您可以通過 SSH 連接到您的 Pi 進行許多項目,但在這個項目中,我們希望看到視頻反饋 - 所以我們將連接 USB 鍵盤和鼠標進行控制,以及通過 Pi 的 Mini-HDMI 端口連接的監視器. 這個設置將是我們編碼部分的基礎,但別擔心,它不是最終的。
注意:以下部分遵循Edge Impulse 的 Raspberry Pi 4 指南,如果您想在沒有屏幕或 PiCam 的情況下進行設置,您可以在此處找到說明。
啟動你的 Pi(我的使用 Raspbian Buster for CaneCam)并打開終端。要使用 Edge Impulse 設置設備,請運行以下命令:
curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
sudo apt install -y gcc g++ make build-essential nodejs sox gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-base gstreamer1.0-plugins-base-apps
npm config set user root && sudo npm install edge-impulse-linux -g --unsafe-perm
處理好軟件后,將 USB 網絡攝像頭連接到 Pi 并運行
edge-impulse-linux
這將啟動一個向導,要求您登錄并選擇一個 Edge Impulse 項目。如果要切換項目,請使用--clean
.
而已!導航回 Edge Impulse 以驗證您的 Pi 是否已連接。您的屏幕應如下所示:
?
要在沒有腳本的情況下運行您的沖動,只需調用
edge-impulse-linux-runner
這將自動下載并運行您的模型,打開終端作為分類的文本輸出。很酷!
?
下載 Python SDK
但是我們希望模型背后有一些力量,并且不僅僅是一個窗口和終端作為我們的輸出。為此,我們需要安裝 Edge Impulse 的Linux Python SDK ,我們將使用它來構建一個 Python 腳本,該腳本使用我們構建的脈沖/模型來控制 CaneCam。
為此,請安裝最新版本的Python 3 ,或通過發出命令檢查您是否已經擁有 >=3.7 的 Python3 版本
python3 --version
我已經安裝了 Python 3.7.3,所以我可以繼續下一步。問題:
sudo apt-get install libatlas-base-dev libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-dev
pip3 install edge_impulse_linux -i https://pypi.python.org/simple
然后,通過以下方式下載模型文件:
edge-impulse-linux-runner --download modelfile.eim
模型最終在您的 Pi 上,在與您剛剛下載的 modelfile.eim 相同的目錄中創建一個 Python 文件。通過導航到 Pi 的簡單 Python 腳本編輯器 Thonny 來執行此操作。創建一個新文件并從 CaneCam.py 復制代碼(在本指南的附件部分),或者在您的 Pi 上找到本指南并在那里下載。將文件命名為 CaneCam.py 該文件是 Edge Impulse 網絡攝像頭檢測腳本的修改版本,增加了標簽檢測、占空比和電機控制。
簡而言之,腳本每 5 秒拍攝一張照片,并等待直到它檢測到行人燈(打開或關閉),然后喚醒其視頻源并以每秒約 5 幀的速度運行(每 2 秒拍攝一次)。進入視頻模式后,腳本會不斷尋找“Go”行人燈。它找到一個,腳本打開馬達,直到下一幀腳本再次決定要做什么。重復此過程,直到看不到 PCL,之后系統又回到“睡眠”狀態,也就是。每 5 秒拍攝一張照片。該系統允許 Pi 在不主動處理視頻饋送時節省電量,并將電池組的正常運行時間從 2 小時延長到 4 小時以上!
注意:請參閱代碼中的注釋以更深入地了解每一行的功能。
cd
將兩個文件(CaneCam.py、modelfile.eim)保存在同一目錄中后,使用終端中的命令移至該目錄。最后,問題:
python3 CaneCam.py modelfile.eim
您的終端將開始輸出置信度值和建議的操作。您可以通過更改min_conf_threshold
CaneCam.py 來調整建議的閾值。將彈出一個 96x96 視頻源,讓您查看模型所看到的內容,您可以將其指向自己并制作您最好的人行橫道燈臉,這很有趣。
?
?
上傳代碼后,將電源切換到電池組,啟動代碼,然后將 Pi 與所有其他電子設備一起放入手杖盒中。蓋上蓋子 - 瞧!您自己的 CaneCam。將它帶入世界,享受無需看到十字路口燈即可過馬路的安心。
視頻
需要改進的方面
如視頻所示,CaneCam 在我收集數據的十字路口運行良好,只需幾秒鐘即可識別“Go”燈。然而,這主要是由于我的模型過度擬合這些 PCL 示例。從本質上講,它與廣義相反。如果其他人要復制這個項目,我建議在該地區收集更大的 PCL 數據集,看看該模型是否可以推廣到不同的環境。
未來的應用
CV 和 TinyML 行業正在蓬勃發展,像 Edge Impulse 這樣的公司因為處于其中而做得很好。CaneCam 的偉大之處在于它不是非常專門用于一項任務 - 相機可用于檢測幾乎任何帶有 CV 的東西。這意味著通過更多的工作,好奇的黑客可以添加文本閱讀、位置跟蹤和避障等功能——所有這些問題都可以極大地改善盲人的生活。如果一家企業要采用 CaneCam,那么實施是明確的——為現有的拐杖制作附件或開發一個完整的智能拐杖系統——功能從過馬路開始,并隨著時間的推移放棄增加功能的軟件更新。
結論
我創建這個項目是為了證明一個我認為是未來技術的概念——輔助機器學習。具體來說,計算機視覺為視力受損、行動不便或其他殘疾的人帶來了許多可能性。通過發現盲人日常遇到的問題,我能夠使用一些簡單的工具來證明一個具有巨大影響的小想法。
在接下來的幾十年里,我想象著一個世界,像失明這樣的殘疾不再是阻礙人們生活的疾病。用于閱讀的 CV 眼鏡等輔助技術、CaneCam 等交通技術等將能夠改變全球 2.5 億視力障礙者的生活和出行方式。人是世界的產業,如果我們現在不投資他們,誰知道我們會留下什么。
感謝您的閱讀和愉快的黑客攻擊!
- TinyML變得簡單:圖像分類
- TinyML課程#7變得更小
- 使用Esp32和TinyML進行手勢分類
- 使用TinyML開發私人教練
- TinyML空中森林火災探測
- 盲人智能手杖開源設計
- 通過Edge Impulse開始使用TinyML
- 使用TinyML來預測與氣壓系統(APS)故障
- 帶有tinyML的肩部恢復設備
- 靜態RAM——CY7C1041CV33文件解析 31次下載
- 一個基于語音識別的盲人上網輔助系統的設計
- SHARP_CV2121S1_CV2121G1彩電電路圖
- 夏普CV2121S1 CV2121G1彩電電路圖
- 紅外線盲人手杖電路及制作
- 基于CV1任意波形發生器的整體設計
- 溫度繼電器如何提供過流、過壓保護功能 931次閱讀
- OpenCV圖像處理庫的跨平臺:Emgu CV 3048次閱讀
- 【tinyML】使用EdgeImpulse讓您的Arduino可以辨識手勢! 4081次閱讀
- 如何使用TinyML在內存受限的設備上部署ML模型呢 958次閱讀
- 驗證功率半導體設計的CV測量挑戰 2988次閱讀
- 如何用圖神經網絡(GNN)做CV的研究 1347次閱讀
- 如何在 MCU 上快速部署 TinyML 1689次閱讀
- 如何利用TinyML實現語音識別機器人車的設計 2110次閱讀
- 友堅科技UT5260CV01核心處理器簡介 3834次閱讀
- 過擬合的概念和用幾種用于解決過擬合問題的正則化方法 1.4w次閱讀
- VizWiz數據集:用計算機視覺回答盲人的問題 7079次閱讀
- l7812cv輸出電流是多少 2.2w次閱讀
- l7812cv好壞的判斷方法介紹 3.8w次閱讀
- l7805cv中的5指的什么_l7805cv全稱是什么 1.9w次閱讀
- 過流保護電路的經典應用,過流保護電路在電動機上的應用,開關電源的幾種過流保護電路 1.4w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多