電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>使用ML制作Pi垃圾分類器

使用ML制作Pi垃圾分類器

2022-11-07 | zip | 0.50 MB | 次下載 | 免費

資料介紹

描述

垃圾分類器項目,被親切地稱為“它去哪兒了?!”,旨在讓扔東西更快、更可靠。

該項目使用在Lobe中訓練的機器學習 (ML) 模型, 這是一個對初學者友好的(無代碼?。㎝L 模型構(gòu)建器,用于識別對象是否進入垃圾、回收、堆肥或危險廢物。然后將該模型加載到 Raspberry Pi 4 計算機上,使其可以在任何可能找到垃圾箱的地方使用!

教程將指導您如何使用 Python3 中的 Lobe TensorFlow 模型在 Raspberry Pi 上創(chuàng)建自己的垃圾分類器項目。

難度:初學者++(一些關(guān)于電路和編碼的知識很有幫助)

閱讀時間:5分鐘

構(gòu)建時間:60 - 90 分鐘

成本:~70 美元(包括 Pi 4)

在我們開始之前

此項目假設您從無頭配置中完全設置的 Raspberry Pi 開始。???這是一個初學者友好的指南,介紹如何做到這一點。

它還有助于了解以下內(nèi)容:

1.熟悉樹莓派

2.閱讀和編輯Python代碼(你不需要從頭開始編寫程序,只需編輯)

3.閱讀Fritzing接線圖

4.使用面包板

找出你的垃圾去哪里

?

美國的每個城市(我假設是全球)都有自己的垃圾/回收/堆肥/等。采集系統(tǒng)。這意味著要制作準確的垃圾分類器,我們需要 1) 構(gòu)建自定義 ML 模型(我們將在下一步中介紹這一點——無需代碼?。┖?2) 知道每塊垃圾的去向。

由于我并不總是知道我用來訓練模型的每個項目的正確垃圾箱,我使用了上面顯示的西雅圖公用事業(yè)傳單,還有這個方便的“它去哪里了?” 西雅圖市的查找工具!通過查找您所在城市的垃圾收集實用程序并仔細閱讀其網(wǎng)站,查看您所在城市的可用資源。

在 Lobe 中創(chuàng)建自定義 ML 模型

pYYBAGNkdsKAbl5eAACvNMRtjYA983.png
?

什么是洛貝?

Lobe是一款易于使用的工具,擁有將機器學習理念變?yōu)楝F(xiàn)實所需的一切。向它展示您希望它做什么的示例,它會自動訓練一個自定義機器學習模型,該模型可以為邊緣設備和應用程序?qū)С觥?/font>它不需要任何經(jīng)驗即可開始。您可以免費在自己的計算機上進行訓練!

以下是有關(guān)如何使用 Lobe 的快速概述:

1. 打開 Lobe 程序并創(chuàng)建一個新項目。

pYYBAGNkdsWAIDlJAADUfVRdIAg391.png
?
poYBAGNkdsiAMYcSAABY7cUfwsE614.png
?

2. 拍攝或?qū)胝掌⑺鼈儤擞洖檫m當?shù)念悇e。稍后我們將在項目的軟件部分需要這些標簽。

導入照片有兩種方式:

  • 直接從您的計算機網(wǎng)絡攝像頭拍攝物品照片,或

從您的計算機導入現(xiàn)有照片(通過單張照片或文件夾/數(shù)據(jù)集上傳)。

  • 請記住,照片文件夾名稱將用作類別標簽名稱,因此請確保它與任何現(xiàn)有標簽匹配!
  • 從您的計算機導入現(xiàn)有照片(通過單張照片或文件夾/數(shù)據(jù)集上傳)。請記住,照片文件夾名稱將用作類別標簽名稱,因此請確保它與任何現(xiàn)有標簽匹配。

另外:我最終使用了這兩種方法,因為您擁有的照片越多,您的模型就越準確。

poYBAGNkdsuAfWU2AAHuyNki8O0556.png
正確分類瓶蓋的模型示例。
?
pYYBAGNkds6AVJokAAHiMZ65KBI527.png
誤報示例。這告訴我我需要更多不同距離的瓶蓋圖像。
?

3.使用“播放”功能測試模型的準確性。更改距離、照明、手的位置等,以識別模型的準確位置和不準確位置。根據(jù)需要添加更多照片。

pYYBAGNkdtCAUO2gAAA6ci_t4r4055.png
?

4. 準備就緒后,以TensorFlow (TF) Lite 格式導出 Lobe ML 模型。

pYYBAGNkdtOAFY9OAAED7v0lLWI397.png
提示:為“非垃圾”創(chuàng)建一個類別,其中包含您空手和背景的照片。
?

提示:

在導入照片之前,列出您需要的所有類別以及如何標記它們(例如“垃圾”、“回收”、“堆肥”等)

  • 注意:使用與上面“Lobe Model Labels”照片中所示相同的標簽,以減少您需要更改的代碼量。
  • 在導入照片之前,列出您需要的所有類別以及如何標記它們(例如“垃圾”、“回收”、“堆肥”等)注意:使用與“Lobe”中所示相同的標簽模型標簽”照片,以減少您需要更改的代碼量。
  • 包括一個“非垃圾”類別,其中包含照片中可能包含的任何其他內(nèi)容(例如您的手和手臂、背景等)
  • 如果可能,從 Pi 相機拍照并導入 Lobe 。這將大大提高模型的準確性!
  • 需要更多照片嗎?查看Kaggle上的開源數(shù)據(jù)集,包括這個垃圾分類圖像集!
  • 需要更多幫助?在 Reddit 上與Lobe 社區(qū)聯(lián)系!

建造它:硬件!

pYYBAGNkdteAKUTWAAYO9TZ8IsU775.jpg
?

1. 小心地將 Pi 相機連接到 Pi(訪問Pi Foundation 入門指南了解更多信息)。

poYBAGNkdtqAbL2YAAJJPoQrUA8174.jpg
?

2. 按照接線圖將按鈕和 LED 連接到 Pi GPIO 引腳。

  • 按鈕:將按鈕的一個引腳連接到 GPIO 引腳 2。通過電阻器將另一個引腳連接到 GPIO GND 引腳。
  • 黃色 LED :將正極(較長)腿連接到 GPIO 引腳 17。通過電阻器將另一腿連接到 GPIO GND 引腳。
  • 藍色 LED :將正極連接到 GPIO 引腳 27。通過電阻器將另一條連接到 GPIO GND 引腳。
  • 綠色 LED :將正極連接到 GPIO 引腳 22。通過電阻器將另一條連接到 GPIO GND 引腳。
  • 紅色 LED:將正極連接到 GPIO 引腳 23。通過電阻器將另一條連接到 GPIO GND 引腳。
  • 白色 LED :將正極連接到 GPIO 引腳 24。通過電阻器將另一條連接到 GPIO GND 引腳。

3. 建議在焊接或永久連接之前在面包板上測試您的電路并運行程序。為此,我們需要編寫并上傳我們的軟件程序,所以讓我們進行下一步吧!

編碼:軟件!

1. 在您的 PC 上,打開WinSCP 并連接到您的 Pi。在 Pi 的主目錄中創(chuàng)建一個 Lobe 文件夾,并在該目錄中創(chuàng)建一個模型文件夾。

2. 將生成的 Lobe TF 文件夾內(nèi)容拖到 Pi 上。記下文件路徑:/home/pi/Lobe/model

3. 在 Pi 上,打開終端并通過運行以下 bash 命令下載適用于 Python3 的 lobe-python 庫:

pip3 install https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp37-cp37m-linux_armv7l.whl
pip3 install lobe
pYYBAGNkdt6AYPZBAAGZwAoZkOM056.png
?

4. 從此repo下載垃圾分類器代碼 (rpi_trash_classifier.py)到 Pi 上(單擊“代碼”按鈕,如圖 1 所示)。

  • 喜歡復制/粘貼?在此處獲取原始代碼。
  • 喜歡下載到您的計算機上?將存儲庫/代碼下載到您的計算機上,然后通過 WinSCP(或您首選的遠程文件傳輸程序)將 Python 代碼傳輸?shù)?Pi。

5. 將硬件連接到 Pi 的 GPIO 引腳后,通讀示例代碼并根據(jù)需要更新任何文件路徑:

  • 第 29 行:Lobe TF 模型的文件路徑
  • 第 47 和 83 行:通過 Pi 相機捕獲的圖像的文件路徑

6. 如有必要,更新代碼中的模型標簽以與您的 Lobe 模型中的標簽完全匹配(包括大小寫、標點符號等):

  • 第 57 行:“垃圾”
  • 第 60 行:“回收”
  • 第 63 行:“堆肥”
  • 第 66 行:“危險廢物設施”
  • 第 69 行:“不是垃圾!”

7. 在終端窗口中使用 Python3 運行程序:

python3 rpi_trash_classifier.py

測試它:運行程序!

poYBAGNkduCAMCj-AABCnNvXb-g902.png
?

計劃概述

首次運行程序時,加載 TensorFlow 庫和 Lobe ML 模型需要一些時間。當程序準備好捕捉圖像時,狀態(tài)燈(白色 LED)將閃爍。

拍攝圖像后,程序會將圖像與 Lobe ML 模型進行比較并輸出結(jié)果預測(第 83 行)。輸出決定打開哪個燈:黃色(垃圾)、藍色(回收)、綠色(堆肥)或紅色(危險廢物)。

如果沒有任何指示燈亮,狀態(tài)指示燈返回脈沖模式,則表示拍攝的圖像“不是垃圾”,即重新拍照!

捕獲圖像

按下按鈕捕獲圖像。請注意,您可能需要按住按鈕至少 1 秒,程序才能注冊按下。建議拍攝一些測試圖像,然后在桌面上打開它們以更好地了解相機視圖和框架。

為了讓用戶有時間定位物體并調(diào)整相機的光線水平,大約需要 5 秒才能完全捕捉到圖像。您可以在代碼中更改這些設置(第 35 和 41 行),但請記住,Pi Foundation 建議至少 2 秒來調(diào)整光照水平。

故障排除

最大的挑戰(zhàn)是確保捕獲的圖像符合我們的預期,因此請花一些時間查看圖像并將預期結(jié)果與指示 LED 輸出進行比較。如有必要,您可以將圖像傳遞給 Lobe ML 模型,以進行直接推理和更快的比較。

需要注意的幾點:

  • TensorFlow 庫可能會拋出一些警告消息——這是示例代碼中使用的版本的典型情況。
  • 預測標簽必須與 led_select() 函數(shù)中所寫的完全一致,包括大小寫、標點符號和間距。如果您有不同的 Lobe 型號,請務必更改這些設置。
  • Pi 需要穩(wěn)定的電源。Pi 的電源燈應該是明亮的、穩(wěn)定的紅色。
  • 如果一個或多個 LED 未按預期亮起,請使用以下命令強制它們亮起進行檢查:
red_led.on()

(可選)構(gòu)建它:完成您的電路!

pYYBAGNkduWAOFvOAAeaK2o-6FM166.jpg
?

現(xiàn)在我們已經(jīng)測試并在必要時調(diào)試了我們的項目,使其按預期工作,我們準備焊接我們的電路!

注意:如果您沒有烙鐵,您可以跳過此步驟。一種替代方法是在電線連接處涂上熱膠(此選項將允許您稍后修復/添加/使用東西,但更容易損壞),或使用環(huán)氧樹脂或類似的永久性膠水(此選項將更耐用但這樣做后您將無法使用電路或可能的 Pi)

快速評論我的設計選擇(照片 1):

  • 我為 LED 和 Pi GPIO 選擇了母跳線,因為它們允許我移除 LED 并交換顏色或在需要時移動它們。如果您想使連接永久化,您可以跳過這些。
  • 同樣,我為按鈕選擇了 JST 連接器。

繼續(xù)建設!

1. 將每根母跳線切成兩半(是的,全部剪掉?。?/font>使用剝線鉗,去除大約 1/4 英寸(1/2 厘米)的電線絕緣層。

poYBAGNkdumAS84oAAWnCWBDUVs004.jpg
?

2. 對于每個 LED,將 220Ω 電阻器焊接到負(較短)腿。

pYYBAGNkdu-AXDVXAAZcU0GzNbc785.jpg
?

3. 剪下一小塊約 1" (2cm) 的熱縮管,然后將 LED 和電阻連接處推過。確保另一個電阻支腳可以接觸到,然后加熱熱縮管直到它固定接頭。

poYBAGNkdveASTmmAAhGqbW8sQ4703.jpg
?

4. 將每個 LED 插入一對母跳線。

poYBAGNkdv2AMFGOAAmfG687QBk696.jpg
?

5.標記跳線(例如用膠帶),然后將跳線焊接到印刷電路板 (PCB) 上。使用 perma Proto 板,您可以使用在面包板設置中使用的相同位置。

6. 接下來,使用(切割)母跳線將每個 LED 連接到其各自的 Pi GPIO 引腳。焊接并標記跳線,以便裸金屬通過 PCB 連接到正極 LED 腿。

注意:焊接此線的位置取決于您的 PCB 布局。您也可以將此線直接焊接到正極 LED 跳線上。

poYBAGNkdwSAbpX5AAffEzYwE9Q593.jpg
?

7. 將 220Ω 電阻器焊接到 JST 連接器的負極(黑色)端。

8. 將 JST 連接器和電阻器焊接到按鈕上。

9. 連接按鈕連接器和 GPIO 引腳之間的 M-to-F 跳線(提醒:黑色為 GND)。

10. 將連接 PCB 涂上熱膠或環(huán)氧樹脂,以獲得更安全的連接。

注意:如果您選擇使用環(huán)氧樹脂,將來您可能無法將 Pi 的 GPIO 引腳用于其他項目。如果您對此感到擔憂,請?zhí)砑?GPIO 帶狀電纜并將跨接線連接到該電纜。

(可選)構(gòu)建它:案例!

為您的樹莓派創(chuàng)建一個外殼,將相機、按鈕和 LED 固定到位,同時保護樹莓派。

設計您自己的外殼或按照下面的構(gòu)建說明快速制作紙板外殼的原型!

poYBAGNkdwqAHz1_ABBIk6iKNbo244.jpg
?

在小紙板箱的頂部,追蹤按鈕、狀態(tài)燈、識別燈和 pi 攝像頭窗口的位置。

  • 注意:Pi 相機窗口應約為 3/4" x 1/2"。

2.用你的精密刀,切掉痕跡。

  • 注意:您可能需要隨時測試尺寸
poYBAGNkdxOAR3IJAAusVySa_I0312.jpg
?

3. 可選:給外殼涂漆!我選擇了噴漆:)

poYBAGNkdxuAThjUABSvpnJGxLs933.jpg
?

4.為Pi相機剪出一個矩形“窗口”蓋并粘在盒子內(nèi)側(cè)

pYYBAGNkdyCAALWqAAangf3C6D8056.jpg
?

5. 最后,切出 Pi 電源線的插槽。

  • 建議首先安裝所有電子設備,以找到 pi 電源線插槽的最佳位置。

安裝和部署!

poYBAGNkdyOAECL4AAEYhexTMjI531.jpg
?

而已!您已準備好安裝和部署您的項目!將外殼放在垃圾桶上方,插入 Pi,然后運行程序以獲得更快、更可靠的減少浪費的方法。耶!

往前走

  • 通過Lobe Reddit 社區(qū)與其他人分享您的項目和想法!
  • 查看Lobe Python GitHub 存儲庫,了解有關(guān)如何使用 Python 部署更廣泛的 Lobe 項目的一般概述
  • 問題或項目請求?對此項目發(fā)表評論或直接與我們聯(lián)系:AskAMaker@microsoft.com

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費