天天看點

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

機器之心報道

編輯:澤南

碩鼠碩鼠,無食我粟。

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

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

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

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

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

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

看看這效果,自從 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/

繼續閱讀