資料介紹
描述
介紹:
由于非法狩獵和運動狩獵,有幾種瀕臨滅絕的鳥類可以通過技術解決方案得到拯救。
根據《自然》雜志的當前討論 [1],如果采取行動避免這種物種滅絕,可以減輕多少物種滅絕,鳥類生活 [2] 加強了這種滅絕,它大約可以減輕 40%。
我發現的類似解決方案是基于提高對問題的認識。忽略這些解決方案,我可以找到:
- 使用帶 GPS 的項鏈。缺點:佩戴在動物身上的項圈和傳感器會對動物造成傷害或不適。在電池的情況下,它們可能會爆炸。https://www.gps-collars.com/
- 無人機智能傳感。缺點:它們會對動物產生意想不到的碰撞或倒塌并傷害它們。
- 識別鳥鳴。缺點:系統復雜繁瑣,很難在一個地方長期維護。
在后者的情況下,除了加強我們的理論外,它還讓我們有機會制作一個易于復制、節能且功能強大的系統。
解決方案:
使用 QuickFeather 開發套件中包含的英飛凌 IM69D130 PDM 數字麥克風,我們將獲得音頻信號,使用 SensiML,我們可以通過神經網絡,指示我們聽到的鳥的類型。
連接圖:
我們將項目基于以下架構:
我們將使用 QuickFeather 套件并通過 Simple Stream Gateway 將其連接到設備和 AWS,該信息將顯示在 Web 應用程序中。
硬件:
把它想象成我們使用 QuickFeather 作為 ESP32 的 AI Shield。
開發環境設置:
由于我使用我的計算機對許多不同的組件進行編程,我真的很喜歡能夠隔離我用來編程的環境。在這種情況下,為了進行應用程序的開發并能夠正確使用 QORC SDK,我將所有東西都安裝在一個 Docker 容器中,該容器可以簡單地打開和關閉以編譯程序。除了在不同的機器上很容易重現。
我已將容器上傳到 Docker Hub,因此您也可以根據需要使用它。
下面是容器編譯qf_ssi_ai_app示例程序的示例
QuickFeather Burner v1(閃光器):
除了在 docker 上將所有內容編譯到開發環境中,我決定創建一個 GUI 來輕松編程 QuickFeather,而無需命令行。
該程序與 Windows 10 兼容,您可以在 QuickFeather Burner v1 文件夾中找到可執行文件。
否則,您可以在存儲庫中看到此代碼。
先決條件,在 pc 上安裝 python3 并在 PATH 中可用。
- Install Dep :第一次打開時,按下按鈕安裝程序的依賴項。
- 刷新端口:刷新連接到電腦的串行端口。
- 瀏覽 Bin 文件:搜索 bin 中的文件。
- 程序:在所選設備上對 bin 進行編程,一旦您完成閃爍設備,您應該會看到“成功”響應。
遵循這個過程:
該程序的功能純粹是從命令行加速設備的閃存過程。
捕獲數據:
為了獲得可靠的我國鳥鳴數據,并能夠對設備進行正確的測試,決定使用這個“數據庫”的歌曲作為模型訓練的輸入。
數據:(網頁是西班牙語,所以我留下谷歌翻譯的版本)
對于這個測試,我決定使用以下 6 只隨機鳥類的數據。
- 鈹蜂鳥
- 墨西哥木匠
- 墨西哥芬克
- 紅眼龍
- 裁縫
- 扎納特市長
鳥類:
如果您想更深入地了解該項目,它位于 Data Capture Lab Project 文件夾中。
Near-Extinct-Bird-Detector/Data Capture Lab Project at master · altaga/Near-Extinct-Bird-Detector (github.com)
設置 QuickFeather:
為了設置設備并能夠使用 QuickFeather 對我的音頻進行采樣,我遵循了 SensiML 官方教程。
- 使用 QuickFeather 和 SensiML 處理音頻數據
- 在這種情況下,由于設備將通過 WiFi 工作,我決定使用 SensiML 提供的 ESP32 接口通過 WiFi 發送所有數據。更多細節在:ESP32 接口
https://github.com/sensiml/esp32_simple_http_uart
特別是如果您想查看項目并自己編譯它,它將位于該文件夾中。數據采集??實驗室
如果您只想開始從您的設備進行測量,編譯的 bin 將位于文件夾中。數據采集??實驗室箱
捕獲數據示例:
捕獲數據:
要對數據進行采樣,請獲取鳥網頁提供的音頻(GitHub 中的音頻)并使用 QuickFeather 捕獲它們。
標簽數據:
對于數據標注,在每幀捕獲的數據中,選擇鳥鳴中最顯著的片段,同時選擇它們沒有唱歌的片段為 Normal 類別(沒有鳥鳴,來自背景自然的純噪聲,在這種情況下“沉默”)
這是墨西哥木匠的歌曲的一個例子:
SensiML:
在這種情況下,在訓練模型時,請使用以下設置,因為它們是給我最好結果的設置。
生成的模型產生的混淆矩陣為:
6只鳥的識別結果是:
由于單片機的限制,需要保證單片機能檢測到的鳥類很少。
測試模型:
使用ESP32 Interface y Simple-Streaming-Gateway用一些鳥類測試模型。
盡管該模型似乎毫無意義地檢測了多只鳥,但實際上它主要檢測的是我們想要的鳥。然而,為了證明這一點,我們必須對幾次檢測進行平均,以顯示它是如何正確檢測到鳥的。
ESP32 接口:
SensiML 視頻系列中解釋了這個 ESP32 接口。
這個 ESP32 項目的所有代碼都在 esp32_simple_http_uart 文件夾中,要編譯它并在 ESP32 上燒寫它,你必須使用 ESP-IDF vscode 插件。
該項目需要的唯一設置如下。
在 esp32_simple_http_uart/sdkconfig 的第 135 行輸入您的 wifi 憑據并編譯代碼。
CONFIG_EXAMPLE_CONNECT_WIFI=y
# CONFIG_EXAMPLE_CONNECT_ETHERNET is not set
CONFIG_EXAMPLE_WIFI_SSID="YOURSSID"
CONFIG_EXAMPLE_WIFI_PASSWORD="YOURPASS"
CONFIG_EXAMPLE_CONNECT_IPV6=y
# end of Example Connection Configuration
完成此操作后,您可以毫無問題地將其連接到 Simple-Streaming-Gateway。
簡單流式網關:
為了查看我們的 QuickFeather 正在閱讀的內容,請安裝 SensiML 提供的 SSG 示例。
為了讓系統保持安裝狀態并且不必在計算機上運行 SSG,我決定將其完全安裝在 Raspberry Pi Zero W 上
在這里您可以看到平臺:
SSG 到 AWS 物聯網:
在這種情況下,為了將我們的設備與 AWS IoT 通信,我決定稍微修改 SSG 代碼以實現與 AWS IoT 的 MQTT 連接,我們將利用 SSG 使用 Python 后端工作的事實.
SSG 中要修改的文件是 Simple-Streaming-Gateway/sources/base.py
添加了 AWS IoT 的 MQTT 代理。
*添加您的 AWS IoT 終端節點和您將向其發送數據的主題。
EndPoint = "XXXXXXXXXXXXXXX.iot.us-east-1.amazonaws.com"
sub_topic = 'birds-detected'
由于 AWS 的安全性,有必要創建客戶端證書和私有證書,以便將設備與平臺通信。
- 首先,我們必須訪問我們的 AWS 控制臺并查找 IoT 核心服務:
- 獲取您的 AWS 終端節點,保存它。
- 在側面板中選擇“Onboard”選項,然后選擇“Get started”。
- 選擇“開始”。
- 在“選擇平臺”中選擇“Linux/OSX”,在 AWS IoT DEvice SDK 中選擇“Python”,然后單擊“下一步”。
- 在名稱處,輸入任何名稱,然后單擊“下一步”。
- 點擊“完成”。
- 點擊“完成”。
- 在橫向欄上,在管理/事物部分內,我們可以看到我們已經創建的事物。現在我們必須設置那個東西的策略,讓它在 AWS 中不受限制地工作。
- 在側欄,在 Secure/Policies 部分我們可以看到我們的事物策略,點擊它來修改它:
- 點擊“編輯政策文件”。
將以下文本復制粘貼到文檔中并保存。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iot:*",
"Resource": "*"
}
]
}
這樣,設備會將數據發送到 AWS IoT。
網頁部署:
網頁的部署是使用 ReactJS 和 AWS-SDK for javascript 完成的。
看一看!:
AWS 認知:
為了安全起見,為了安全地使用和使用 AWS 服務,身份池憑證是通過 Cognito 服務實施的。
AWS IoT 和 Cognito 的訪問密鑰必須放在以下文件中。
Webapp/src/components/aws-configuration.js
var awsConfiguration = {
poolId: "us-east-1:XXXXXXXXXXXXXXX", // 'YourCognitoIdentityPoolId'
host:"XXXXXXXXXXXXXX-ats.iot.us-east-1.amazonaws.com", // 'YourAwsIoTEndpoint', e.g. 'prefix.iot.us-east-1.amazonaws.com'
region: "us-east-1" // 'YourAwsRegion', e.g. 'us-east-1'
};
module.exports = awsConfiguration;
AWS IoT Web 套接字:
網頁通過 AWS IoT 作為 Web 套接字接收傳感器數據,因此在頁面內定義很重要,這是我們將要接收的主題,在本例中為“鳥類檢測”。
在以下文件中,輸入您將訂閱的主題的名稱。WebApp/src/App.js
<IotReciever sub_topics={["birds-detected"]} callback={this.callBackIoT} />
數據后處理:
為了對傳感器檢測到的數據進行后處理,平均采集了 7 個樣本。系統每次檢測到積累了7個音頻樣本,就獲取數據的統計模式,觀察哪只鳥被檢測到最多。顯示此事件的信息。
const temp = JSON.parse(IoTData[1])
in_array.push(parseInt(temp.Classification))
console.log(in_array)
if (in_array.length > 6) {
let temps = this.state.birds
if (flag && temps.find(element => element === (statisticalMode(in_array) - 1)) === undefined && (statisticalMode(in_array) - 1) !== 3) {
flag = false
temps.pop()
temps.push(statisticalMode(in_array) - 1)
this.setState({
birds: temps
})
}
else if (temps.find(element => element === (statisticalMode(in_array) - 1)) === undefined && (statisticalMode(in_array) - 1) !== 3) {
temps.push(statisticalMode(in_array) - 1)
this.setState({
birds: temps
})
}
in_array = []
網頁演示:
在這里,我們可以看到平臺如何正確檢測到其中一只鳥:
完成品:
我在當地的森林中部署了這個項目,幸運的是那里有免費的 WiFi 連接。因此,可以將設備放置在這個地方進行試點測試。
最終演示:
結論:
當然,這只是為了嘗試和保存所需的東西而做的一小部分努力,但第一步總是試圖找到這些物種。物聯網與人工智能一起為我們帶來了自動化這一過程的可能性,并在其中變得更加確定。本質上,可以為更多種類的物種擴展和復制相同的過程,我還看到使用計算機視覺做同樣事情的版本,在這種情況下的問題是為其提供動力。目前的目的是將 QuickFeather 和 SensiML 的音頻功能推向極限,并為此找到一個有價值的應用程序。
- 圣誕節運動探測器開源項目
- 圣誕老人探測器開源分享
- 煙霧和氣體探測器開源項目
- 基于Microsoft Azure和Raspberry Pi的鳥類探測器
- DULI通用圖像損傷探測器開源分享
- 帶警報系統的室溫探測器開源分享
- Lane Tech HS PCL RAGE探測器開源分享
- 野生動物探測器開源分享
- 激光雷達入侵探測器開源分享
- 脈沖微處理器金屬探測器開源設計
- 金屬探測器Quasar ARM G1910開源分享
- BT智能手機探測器開源項目
- 智能金屬探測器MOLE開源項目
- 蓋革探測器開源項目
- 熱探測器和光電發射探測器等光輻射探測技術的解析 11次下載
- 金屬探測器電路圖 帶Arduino的金屬探測器設計 876次閱讀
- 探索紅外熱成像探測器的基礎原理 549次閱讀
- 金屬探測器電路圖分享 5405次閱讀
- 基于零維材料的光電探測器原子結構 982次閱讀
- 氣體探測器怎么接線 3.1w次閱讀
- 被動紅外探測器的工作原理 1.5w次閱讀
- 紅外線探測器距離_紅外線探測器安裝 1.3w次閱讀
- 金屬探測器怎么用_金屬探測器的使用方法 6.1w次閱讀
- 半導體探測器的工作原理_半導體探測器應用領域 1.4w次閱讀
- 閃爍探測器探測原理_閃爍探測器的結構組成 1.7w次閱讀
- 火焰探測器接線圖_火焰探測器設置要求 4.5w次閱讀
- 火焰探測器保護半徑_火焰探測器適用場所 1w次閱讀
- 剩余電流探測器原理_剩余電流探測器的應用 9588次閱讀
- 火焰探測器工作原理 5.1w次閱讀
- 自制高頻振蕩金屬探測器 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次下載 | 免費
評論
查看更多