資料介紹
描述
系統(tǒng)總覽
如下圖所示,Raspberry Pi 將圖片從我的喂鳥器發(fā)送到 AWS 的 S3 存儲(chǔ)桶。當(dāng)新圖像到達(dá) S3 時(shí),這會(huì)調(diào)用 Python Lambda 函數(shù),將照片發(fā)送到 AWS Rekognition,后者使用其基于 ML 的圖像識(shí)別功能來確定照片中的內(nèi)容。如果檢測(cè)到一只鳥,這會(huì)觸發(fā)一條發(fā)送至 SNS 主題的消息,您可以使用該消息來獲取文本或電子郵件。如果檢測(cè)到松鼠,則會(huì)向不同的 SNS 主題發(fā)送一條消息。因此,您可以使用文本通知自己發(fā)現(xiàn)了松鼠,這樣您就可以將其趕走,并使用電子郵件通知自己有趣的鳥類。或者你甚至可以連接 Raspberry Pi 以向任何入侵喂鳥器的松鼠射水(這可能是明年夏天的一個(gè)項(xiàng)目)。最后,我添加了一個(gè)使用AWS S3 靜態(tài)網(wǎng)站方式,讓您輕松查看最佳圖片。
要完成這個(gè)項(xiàng)目,您需要一些 Python 技能(我已經(jīng)提供了我的代碼,但您需要根據(jù)自己的情況進(jìn)行一些修改)和對(duì) AWS 的中等程度的了解。
硬件
在封面照片中,您可以看到我的 Raspberry Pi 4 和高質(zhì)量 (HQ) 相機(jī)。我開始使用適合 HQ 相機(jī)的 50 美元長(zhǎng)焦鏡頭,但我已經(jīng)改用從佳能 EOS 相機(jī)借來的佳能鏡頭。您需要購買一個(gè)適配器(來自 Arducam)才能將佳能鏡頭連接到相機(jī)(30 美元),但這非常值得。使用這樣的優(yōu)質(zhì)鏡頭,圖像非常好,而且與我原來的鏡頭不同,您可以盡可能近地放大。
樹莓派運(yùn)動(dòng)檢測(cè)
Raspberry Pi 只是一個(gè)帶有 ARM 處理器的非常小的 Linux 機(jī)器。有一個(gè)名為PI-TIMOLO的軟件包,我發(fā)現(xiàn)它非常有用。您可以在 Raspberry Pi 上運(yùn)行它來檢測(cè)運(yùn)動(dòng),并自動(dòng)拍攝照片。您不需要將紅外運(yùn)動(dòng)檢測(cè)器連接到 Raspberry Pi(盡管這可能不是一個(gè)壞主意)。PI-TIMOLO 掃描來自您的相機(jī)的低分辨率流,如果它檢測(cè)到從一幀到下一幀的顯著差異,它會(huì)斷定某些東西已經(jīng)移動(dòng),并暫時(shí)停止流,拍攝一張高分辨率照片并將其放入文件夾。
我將帶有長(zhǎng)焦鏡頭的 Raspberry Pi 高質(zhì)量 (HQ) 相機(jī)對(duì)準(zhǔn)我的喂鳥器并設(shè)置了 PI-TIMOLO。您需要調(diào)整幾個(gè) PI-TIMOLO 設(shè)置才能在特定情況下獲得良好的效果,但您可以忽略很多設(shè)置,例如與視頻和全景照片相關(guān)的設(shè)置。只需專注于圖像和運(yùn)動(dòng)設(shè)置。我將放一個(gè)我在 Github 存儲(chǔ)庫中使用的 PI-TIMOLO 設(shè)置的示例。
我在 Raspberry Pi 上運(yùn)行了一個(gè)小型 Python 程序,它控制 PI-TIMOLO 放置照片的目錄。如果我的代碼在該文件夾中檢測(cè)到一張新照片,它會(huì)裁剪照片(稍后我將解釋)并進(jìn)行 API 調(diào)用以將其發(fā)送到 AWS 中的 S3 存儲(chǔ)桶。這是代碼:
https://github.com/mesadowski/RaspberryPi-Bird-Image-Recognition/blob/main/s3_send_bird_pic_crop.py
要使此代碼正常工作,您需要在 Raspberry Pi 上安裝 boto(AWS Python 開發(fā)工具包),并在 AWS 中創(chuàng)建一個(gè)有權(quán)寫入 S3 的 IAM 用戶。您需要將該 IAM 用戶的 AWS 用戶憑證復(fù)制并粘貼到 Raspberry Pi 上 .aws 或 .boto 文件夾中的憑證文件中,以便您的 Python 代碼具有將文件放入 S3 存儲(chǔ)桶所需的憑證。
AWS S3、Lambda、Rekognition 和 SNS
一旦開始工作,您就可以在 AWS 中創(chuàng)建一個(gè) lamdba 函數(shù)。Lambda 是 AWS 的旗艦無服務(wù)器計(jì)算服務(wù)。Lambda 是一段代碼,一旦被某個(gè)觸發(fā)器調(diào)用就會(huì)運(yùn)行,觸發(fā)器可能是傳入的 API 調(diào)用或計(jì)時(shí)器,或者在我的情況下,是到達(dá) S3 存儲(chǔ)桶的東西。一旦完成它的工作,Lambda 就會(huì)終止。這對(duì)我的基于 ML 的鳥和松鼠檢測(cè)器來說很好,因?yàn)樗屛覠o需運(yùn)行單個(gè)服務(wù)器即可運(yùn)行應(yīng)用程序,因此非常經(jīng)濟(jì)。在 AWS S3、Lambda、Rekognition 和 SNS 以及 S3 靜態(tài)網(wǎng)站之間,我擁有所有這些強(qiáng)大的功能,包括最先進(jìn)的圖像識(shí)別、云存儲(chǔ)以及電子郵件和文本通知,而且它實(shí)際上是如果我可以接受標(biāo)準(zhǔn)的 Rekognition 服務(wù)(即,不是自定義標(biāo)簽——稍后會(huì)詳細(xì)介紹),則免費(fèi)。只需確保您的 Raspberry Pi 不會(huì)瘋狂地向 S3 發(fā)送太多照片,例如,如果您的運(yùn)動(dòng)檢測(cè)設(shè)置過于寬松,因?yàn)樽罱K可能會(huì)增加太多的 API 調(diào)用。但是,如果相機(jī)每天拍攝大約 200 張照片,則運(yùn)行成本很低,因?yàn)?AWS 免費(fèi)套餐每月為您提供 5,000 次 Rekognition 調(diào)用。
要?jiǎng)?chuàng)建 Lambda,首先,您需要?jiǎng)?chuàng)建 Lambda 將代入的角色,該角色擁有 S3、Lambda、Rekognition 和 SNS 的權(quán)限。轉(zhuǎn)到 AWS 控制臺(tái)中的 IAM,并創(chuàng)建一個(gè)新角色并為其提供以下策略:
然后轉(zhuǎn)到 AWS 控制臺(tái)中的 Lambda。單擊創(chuàng)建函數(shù),然后選擇從頭開始作者。命名您的 Lambda,并選擇 Python 3.8 作為您的語言,并確保為其提供您之前創(chuàng)建的角色,以便它可以訪問 S3、Rekognition 和 SNS。
創(chuàng)建 Lambda 后,您希望將其設(shè)置為基于在 S3 中創(chuàng)建的新對(duì)象(即從 Raspberry Pi 發(fā)送的新照片)觸發(fā)。因此,您單擊 Trigger 按鈕并選擇 S3 存儲(chǔ)桶和文件夾(AWS 也稱為前綴),您的圖片將從 Raspberry Pi 發(fā)送到其中。然后,是時(shí)候輸入你的 Python 代碼了。這是我的,但您需要輸入自己的 SNS 主題標(biāo)識(shí)符:
https://github.com/mesadowski/RaspberryPi-Bird-Image-Recognition/blob/main/BirdLambda.py
醒來后(新圖片到達(dá) S3 時(shí)),Lambda 調(diào)用 Rekognition API 以查看照片中的內(nèi)容。Rekognition 是一項(xiàng) AWS 圖像識(shí)別服務(wù)。我在我博客上的一篇博文中描述了 Rekognition 。簡(jiǎn)而言之,如果您向 Rekognition 提供圖像,它會(huì)告訴您它認(rèn)為其中的內(nèi)容。我發(fā)現(xiàn) Rekognition 的開箱即用訓(xùn)練使其能夠識(shí)別鳥類,并且有時(shí)可以識(shí)別正確的鳥類種類。它還可以識(shí)別松鼠,松鼠是飼養(yǎng)者周圍常見的害蟲。在上面的代碼中,我使用了標(biāo)準(zhǔn)的 Rekognition 服務(wù),該服務(wù)經(jīng)過預(yù)先訓(xùn)練,可以識(shí)別常見的物體、動(dòng)物和名人(以防名人出現(xiàn)在我的喂鳥器周圍)。
所以無論如何,我的 Lambda 代碼調(diào)用 Rekognition API 并查看響應(yīng)以查看 Rekognition 看到的是鳥還是松鼠。我使用 AWS 控制臺(tái)創(chuàng)建了兩個(gè) AWS 簡(jiǎn)單通知服務(wù) (SNS) 主題:一個(gè)用于鳥類觀察,一個(gè)用于松鼠觀察。因此,根據(jù) Rekognition 在圖像中看到的內(nèi)容,我的 Lambda 使用 SNS API 將消息發(fā)布到適當(dāng)?shù)?SNS 主題。您可以通過電子郵件或 SMS 文本訂閱 SNS 主題,并獲得 Rekognition 看到的鳥類類型的通知,以及松鼠目擊事件的通知。
挑戰(zhàn)
將 Raspberry Pi 配置為具有正確的 PI-TIMOLO 和攝像頭設(shè)置需要一些時(shí)間。您希望 PI-TIMOLO 足夠靈敏以在檢測(cè)到鳥時(shí)觸發(fā)照片,但又不至于敏感到風(fēng)中飄動(dòng)的幾片葉子會(huì)觸發(fā)照片。
這是我第一次開發(fā) Lambda 函數(shù)。我已經(jīng)在我的 Mac 上對(duì)大部分代碼進(jìn)行了原型設(shè)計(jì)和測(cè)試,但是當(dāng)我在 AWS 控制臺(tái)中創(chuàng)建 Lambda 代碼時(shí)調(diào)試起來有點(diǎn)困難,因?yàn)槲沂峭ㄟ^查看 AWS Cloudwatch 來調(diào)試它以查看發(fā)生了什么。通常,在您檢查 Cloudwatch 以查看是否有任何錯(cuò)誤之前,最多有 5 分鐘的延遲。AWS 有一個(gè)用于在本地調(diào)試 Lambda 的工具(稱為 SAM),因此如果您要?jiǎng)?chuàng)建復(fù)雜的 Lambda,這可能值得學(xué)習(xí),但這次我設(shè)法克服了它。
結(jié)果
使用開箱即用的 Rekognition 服務(wù),我很快收到許多通知,告訴我圖片中有喂鳥器(不是開玩笑)或草坪家具。所以很容易過濾掉那些。然后它開始告訴我每張照片中都有草或“自然”,所以我不得不將其過濾掉。最終,我發(fā)現(xiàn) Rekognition 正在識(shí)別圖片中有一只鳥的事實(shí),但它無法識(shí)別物種。問題是我的圖像質(zhì)量。以前,當(dāng)我向 Rekognition 提供專業(yè)品質(zhì)的鳥類照片時(shí),它通常可以識(shí)別物種。但是我的照片沒有那么好。我發(fā)現(xiàn)通過裁剪照片以使鳥占據(jù)圖像的更高部分,Rekognition 傾向于更多地關(guān)注鳥并且有時(shí)可以識(shí)別鳥類。因此,我使用 Python Pillow 庫在我的 Raspberry Pi 代碼中添加了一些裁剪邏輯。從我的 Raspberry Pi 相機(jī)裁剪啄木鳥圖像(下圖)并將其發(fā)送到 Rekognition 后,我從 SNS 收到了以下通知:
Detected labels for photo at time 2020-11-22-18:34:11
Bird (Confidence 99.25276184082031)
Flicker Bird (Confidence 78.45641326904297)
Woodpecker (Confidence 78.45641326904297)
Finch (Confidence 54.26727294921875)
in photo new-bird-images/2020-11-22-13-34-09.jpg
這是一只紅腹啄木鳥,因此 Rekognition 確實(shí)確定它是一只啄木鳥(有一定的信心),雖然不是紅腹啄木鳥。它還認(rèn)為它可能是一只閃爍的鳥(和一只雀,信心不足)。那是錯(cuò)誤的,雖然當(dāng)我在康奈爾鳥類學(xué)網(wǎng)站上查找閃爍時(shí),事實(shí)證明它們是啄木鳥的一種,所以這個(gè)答案并不完全離譜。然而,Rekognition 有時(shí)會(huì)給出一些奇怪的結(jié)果。例如,下面的照片被 Rekognition 標(biāo)記為“家禽”。也許它看起來有點(diǎn)像一只小雞?還有一次,Rekognition 認(rèn)為我后院的一張照片中有一只企鵝。我查了一下,確實(shí)是一張黑白鳥的照片。當(dāng)然,ML 圖像識(shí)別模型只知道它們之前提供的訓(xùn)練圖像(由訓(xùn)練模型的人提供)。他們不了解圖像的上下文,這會(huì)讓他們知道報(bào)告我的后院有一只企鵝是荒謬的。
Rekognition 自定義標(biāo)簽
要獲得真正準(zhǔn)確的結(jié)果,您可以考慮訓(xùn)練 Rekognition 自定義標(biāo)簽(或其他一些涉及自定義訓(xùn)練的基于 ML 的方法)。按照我之前博客文章中的方法,我使用來自加州理工學(xué)院-UCSD 鳥類圖像數(shù)據(jù)集的圖像來訓(xùn)練 Rekognition 在我所在地區(qū)的常見鳥類上。我放入了一些松鼠的照片,以便 Rekognition 也可以識(shí)別它們。訓(xùn)練模型花了大約 1.4 小時(shí),但結(jié)果令人印象深刻(盡管我發(fā)現(xiàn)我能夠接近我用幾行 Python 編寫的 fast.ai 模型。你可以在我的博客上閱讀). 在下面,您可以看到 Rekognition 自定義標(biāo)簽在測(cè)試圖像上對(duì)東北部各種鳥類(和松鼠)的表現(xiàn) - 幾乎永遠(yuǎn)不會(huì)出錯(cuò)(至少在使用專業(yè)質(zhì)量圖片時(shí))!
但是,雖然這項(xiàng) ML 服務(wù)做得非常出色,但對(duì)于個(gè)人愛好者來說,整天運(yùn)行的成本太高了。作為 AWS 免費(fèi)套餐的一部分,您可以獲得幾個(gè)小時(shí),但之后每小時(shí)收費(fèi) 4.00 美元。幸運(yùn)的是,我能夠在我的賬戶中獲得 100 美元的免費(fèi) AWS 積分,因此我可以免費(fèi)試用。為了節(jié)省成本,AWS 建議您啟動(dòng)服務(wù)、使用它,并在完成后將其關(guān)閉。所以你不能真正運(yùn)行它幾個(gè)小時(shí),這是我最初的設(shè)計(jì)。但是,對(duì)于企業(yè)而言,這項(xiàng)服務(wù)非常物有所值,而且與其他選項(xiàng)相比,它確實(shí)沒有那么貴。
要使用 Rekognition 自定義標(biāo)簽,您需要稍微更改 Lambda 函數(shù)以使用detect_custom_labels API 調(diào)用而不是detect_labels調(diào)用(這里是 Github 中代碼的鏈接)。然后,啟動(dòng)模型(您可以為此使用 AWS CLI)。如果您在訓(xùn)練完成后單擊 AWS 控制臺(tái)中的模型并滾動(dòng)到底部,AWS 會(huì)為您提供 AWS 命令??行命令,您可以將其剪切并粘貼到終端窗口中。等待幾分鐘,AWS 控制臺(tái)最終會(huì)告訴您它正在運(yùn)行。只需確保在完成后停止模型,這樣您就不會(huì)繼續(xù)收取費(fèi)用 - 這些可以加起來!
當(dāng)我嘗試使用 Raspberry Pi 相機(jī)拍攝的照片使用 Rekognition 自定義標(biāo)簽時(shí),最初我發(fā)現(xiàn) Rekognition 自定義標(biāo)簽無法識(shí)別任何內(nèi)容。但是當(dāng)我裁剪圖像時(shí),Rekognition 正確地確定我的啄木鳥圖片(上圖)不僅僅是一只啄木鳥,而是一只紅腹啄木鳥。這非常酷,盡管當(dāng)我向 Rekognition Custom Labels 發(fā)送大約 1200 張圖片時(shí),我學(xué)到了一些關(guān)于訓(xùn)練模型的艱難課程。鳥類 ID 通常是錯(cuò)誤的,因?yàn)樵撃P鸵呀?jīng)在我的喂食器上不太可能看到的圖像上進(jìn)行了訓(xùn)練(例如,每年這個(gè)時(shí)候藍(lán)鳥在這里并不常見,但它認(rèn)為它看到了很多藍(lán)鳥)。此外,我的圖像有時(shí)會(huì)因?yàn)轼B在移動(dòng)而失焦。所以如果我要一直運(yùn)行這個(gè)模型,我
考慮到 Rekognition 自定義標(biāo)簽的成本,我可能會(huì)在一段時(shí)間內(nèi)使用更便宜的現(xiàn)成 Rekognition 運(yùn)行它,并考慮在未來轉(zhuǎn)向更便宜的自定義模型(例如fast.我的博客上描述的ai模型)。
PS Raspberry Pi 的人們?yōu)?Magpi(Raspberry Pi 官方雜志)寫了一篇關(guān)于這個(gè)項(xiàng)目的文章。你可以在這里找到它。
- 使用Tensorflow的Raspberry Pi Covid口罩檢測(cè)器
- 使用Raspberry Pi的Motioneyeos網(wǎng)絡(luò)攝像頭運(yùn)動(dòng)檢測(cè)
- 使用Google Coral和Raspberry Pi進(jìn)行ML鳥類識(shí)別
- 基于諾基亞5110的Raspberry Pi帽子 0次下載
- 使用步進(jìn)電機(jī)拉下無花果樹枝以嚇跑鳥類和松鼠
- 可以檢測(cè)鴿子并在Raspberry Pi上運(yùn)行的系統(tǒng)
- 基于Microsoft Azure和Raspberry Pi的鳥類探測(cè)器
- 使用Raspberry Pi的溫度跟蹤器
- 可視頻直播的Raspberry Pi網(wǎng)絡(luò)控制機(jī)器人 14次下載
- NDIR氣體檢測(cè)器解決方案和PID氣體檢測(cè)器解決方案
- 《愛上Raspberry Pi》中譯版-電子書籍.pdf 0次下載
- Instant Raspberry Pi Gaming 6次下載
- Raspberry_Pi詳解 15次下載
- raspberry_pi各版本差別 0次下載
- Getting Started with Raspberry Pi 0次下載
- 電路檢測(cè)器和電流檢測(cè)器的區(qū)別 319次閱讀
- 5分鐘內(nèi)將Raspberry Pi Pico變成簡(jiǎn)單的示波器+波形發(fā)生器 1518次閱讀
- 使用Raspberry Pi Pico W和MicroPython開發(fā)物聯(lián)網(wǎng)應(yīng)用 1671次閱讀
- 什么是過零檢測(cè)器 過零檢測(cè)器的原理 2755次閱讀
- 用于測(cè)試項(xiàng)目的4個(gè)最佳樹莓派Raspberry Pi模擬器 5985次閱讀
- 如何通過Raspberry Pi設(shè)置CE電流監(jiān)視器 2120次閱讀
- 基于樹莓派產(chǎn)品 Raspberry Pi微控制器板的優(yōu)缺點(diǎn) 2710次閱讀
- 微雪電子ZeroW| Raspberry Pi ZeroW主板簡(jiǎn)介 2429次閱讀
- 微雪電子Raspberry Pi 3 Model主板簡(jiǎn)介 2873次閱讀
- 微雪電子Raspberry Pi 3 Model擴(kuò)展板簡(jiǎn)介 1512次閱讀
- 利用Raspberry Pi構(gòu)建存儲(chǔ)和虛擬化時(shí)間序列數(shù)據(jù) 884次閱讀
- 一文了解Raspberry Pi 4各項(xiàng)性能跑分 2.9w次閱讀
- 如何用賽靈思FPGA實(shí)現(xiàn)4G無線球形檢測(cè)器 1081次閱讀
- 視覺享受!用Raspberry Pi實(shí)現(xiàn)圣誕樹燈光秀 8127次閱讀
- 酸雨檢測(cè)器 1.6w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多