選單

我為了不讓松鼠搶鳥食,造了個AI驅趕系統

機器之心報道

編輯:澤南

碩鼠碩鼠,無食我粟。

這是一個典型的美國故事,主人公過上了紅酒牛排大 house 的生活,但又遇到了新的煩惱:後院裡為鳥兒準備的食盤總是被松鼠光顧。

卑鄙的松鼠正在偷鳥食,讓精心佈置的喂鳥器成了擺設。

這不是什麼新鮮事了:傳統的解決方案是將辣椒粉混入鳥食中,然而這並沒有奏效。超市裡也沒有帶松鼠擋板的喂鳥器。大多數人可能會在網店購買一個合適形狀的擋板——但 Jeremy Merrill 這個人比較頭鐵,畢竟他是搞機器學習的。

於是一個名叫 Squirrel Soaker 9000 的裝置出爐了。

這人使用大約 50 美元成本的零件建造了一個機器,藉助人工智慧來檢視餵食器上面是否有松鼠——當識別到松鼠時,就用花園噴水軟管驅趕它。

當然,此處需要一段驚慌失措的松鼠逃跑的影片:

window。DATA。videoArr。push({“title”:“我為了不讓松鼠搶鳥食,造了個AI驅趕系統”,“vid”:“a3321h49st4”,“img”:“http://puui。qpic。cn/vpic/0/a3321h49st4。png/0”,“desc”:“”})

看看這效果,自從 Jeremy 的 Squirrel Soaker 9000 上線以來,餵食器上的松鼠數量下降了——所有這些都沒有傷害到松鼠。Jeremy 表示,這比他的曾祖父——來自加拿大薩斯喀徹溫省、俄羅斯的北佛羅里達紅脖 60 年前建造的解決方案要安全得多:當年他是直接用 120V 電線串在他的果樹上。

那麼它是如何工作的呢?

其實很簡單,每隔 30 秒鐘,攝像頭拍攝的圖片就會交由 Python 寫的軟體進行處理。它將圖片傳送到 AWS Lambda 端點,該端點根據 Jeremy 訓練的 fast。ai 模型對照片進行分類,以檢測餵食器上是否有松鼠。

如果 AI 模型報告說有松鼠,則攝像頭開始錄影片,將訊號傳送到稱為 MOSFET 的電子控制開關,它會依次開啟電磁閥的 12V 電源幾秒鐘,這是一個電控水龍頭,它連線到一個用拉鍊系在番茄籠上的花園噴霧器。

松鼠跑了嗎?

松鼠驅趕器看起來不錯。如果簡單統計的話,這個簡單的裝置平均每三天驅趕一次松鼠,效果看起來還有提升的空間。

我為了不讓松鼠搶鳥食,造了個AI驅趕系統

在 10 月的某幾天,松鼠完全放棄了前來偷吃食物。它們是被松鼠驅趕器擊退了,還是被其他什麼秋季美食吸引走了?我們不得而知。

到了冬天怎麼辦?在水會結冰以後,Jeremy Merrill 就把整套系統關閉了,畢竟水管爆裂不是鬧著玩的。

它能驅趕鳥嗎?

眾所周知,AI 模型的影象識別是看機率的,它在松鼠上的準確率是 86。6%,這意味著當 Squirrel Soaker 9000 啟動噴灑時,86。6% 的時間裡真的有一隻松鼠。13。4% 的時間裡這是另一回事,通常是一隻鳥,有時什麼都沒有…… 或者有時候是發明家本人。

這個數字是在 15 天內 321 次啟動樣本中計算得出的,其中 43 起是錯誤的。人工智慧很容易把哀鴿(mourning dove)誤認為是松鼠,原因估計是它們和北美齧齒類動物一樣又大又灰。不過這也是因為哀鴿是在 Jeremy 收集完訓練資料之後才出現的,所以本質上我們是在問一個從未見過哀鴿的愚蠢 AI,哀鴿是麻雀還是松鼠——偶爾人工智慧會說它是松鼠。

所以這個 AI 模型還缺點線上更新演算法的能力。

我為了不讓松鼠搶鳥食,造了個AI驅趕系統

松鼠還是鴿子,對於 AI 來說,這是個問題。

事實證明,一株番茄植物在攝像頭旁長了個樹枝,擋住了松鼠經常出沒的餵食器底部。如果你問一個只知道松鼠和喂鳥器的模型,番茄植物是否是松鼠…… 好吧,它認為是的。於是第二天,這株植物長大了,不礙事了。(召回率是 99%,這意味著如果餵食器上有松鼠,它會被弄溼。)

如何讓 AI 模型命令水槍噴水?

首先,按照說明書組裝電源和 MOSFET 板,確保你的樹莓派(Raspberry Pi)已啟動並執行並連線到 wifi。

電源聯結器輸出 12V、5V 和接地線。12V 線和地線連線到 MOSFET「系統」側的 + 和 - 輸入端。或者你也可以透過將 5V 輸出連線到 Pi 相機的 5V 引腳並將接地連線到 Pi 的接地引腳,從同一電源為樹莓派供電。

然後,將 GPIO 引腳從樹莓派連線到 MOSFET 的 C(用於「控制」)輸入。當這條線傳送 HIGH 電壓時,MOSFET 開啟,向輸出端(「裝置」端)傳送 12V 電壓;當傳送 LOW 電壓時,MOSFET 關閉,裝置沒有供電。

此外,你需要使用非常長的電線將裝置側連線到電磁閥,這樣才能讓電子裝置保持在屋內,而軟管在花園裡。極性無關緊要,因此將正極線連線到任一側,但請務必並聯一個續流二極體以避免突波電壓。

現在,你已經完成了電子裝置,上管道!

將你的花園軟管連線到母對母軟管介面卡,然後連線到螺線管。螺線管有一個箭頭指示水流方向,因此箭頭應指向遠離供水的方向。你可能需要將管道工膠帶貼上到螺線管的輸入螺紋上。螺線管的螺紋是英國標準管,平行螺紋(又名 BSPP,或 G),與美國的花園軟管螺紋形成對比。它們大多能用,但並不完美——水管工膠帶將有助於阻止漏稅。

噴射噴嘴也是一樣,記得用膠帶。

不要一直讓軟管保持開啟狀態。這可能會施加太大的壓力,導致洩漏——甚至導致接頭爆炸(這裡有血的教訓)。

現在我們完成了管道。

上軟體。你可以透過任何方式向 MOSFET 的控制輸入端傳送 HIGH 電壓。除了用軟體控制它之外,作者還設定了一個按鈕來手動操作。

模型訓練完成後,我們可以按照以下兩個 AWS 教程將模型部署到 AWS Lambda:

裝置上的軟體是一個簡單的 Python 指令碼,帶有一個 while 迴圈,在白天每 30 秒拍攝一張照片,然後將其傳送給機器學習模型,如果它認為是松鼠的置信度超過 70%,則拍攝一張照片( 所以我們可以後期驗證是否真的存在松鼠),錄製影片(用於 lulz),將時間點記錄到資料庫中,然後開啟水管。

作者還使用了一個很小的 Flask 應用程式,它顯示最近的照片和一個 HTML 按鈕,用於網路遠端手動控制水管。

如何訓練 AI 模型

Fastai 透過給 AI 模型提供正負兩種圖片樣本,讓 AI 模型學習影象識別的過程變得非常簡單——真只用 13 行程式碼。在識別松鼠的問題上,作者透過在幾天內每分鐘從窗外拍一張照片來生成訓練資料(示例)。隨後下載這些圖片,並使用 Mac Finder 的幻燈片檢視將它們分類到「squirrel」和「not squirrel 資料夾中。

然後,只需要在 Google Colab 上訓練這個模型(免費,13 行程式碼,大約 45 分鐘)。

物料列表

12V 電磁閥,7。95 美元

ATX 電源聯結器分線套件 - 12V/5V(4 針),15。95 美元

MOSFET 電源控制套件,5。25 美元

Melnor Hi-Visibility 可調噴嘴,4。98 美元

Melnor 金屬雙母介面卡,2。49 美元

Arducam 自動對焦 Pi 相機,14。99

一個二極體

水管工膠帶

藍色膠帶

兩股十英尺左右的編織線

一個樹莓派,帶一張 SD 卡

根據需要分類其他電子零件(焊料、LED、按鈕、電阻器、二極體等)

工具列表:

烙鐵、焊錫

萬用表

Google Colab,免費

Fast。ai / Python

AWS Lambda

參考教程:

https://bc-robotics。com/tutorials/controlling-a-solenoid-valve-with-arduino/

https://bildr。org/2012/03/rfp30n06le-arduino/

https://www。raspberrypi。com/documentation/computers/os。html

最後還有面向松鼠的教程:https://www。youtube。com/watch?v=hFZFjoX2cGg

參考內容:

https://jeremybmerrill。com/blog/2022/01/squirrel-soaker-9000-repelling-squirrels-with-ai。html

https://www。reddit。com/r/MachineLearning/comments/sctxqh/p_i_built_a_robot_to_protect_my_birdfeeder_from/