资料介绍
描述
介绍:
由于非法狩猎和运动狩猎,有几种濒临灭绝的鸟类可以通过技术解决方案得到拯救。
根据《自然》杂志的当前讨论 [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次下载 | 免费
评论
查看更多