通过机器学习识别鸟类_将机器学习带到鸟类

2023-11-12

通过机器学习识别鸟类

Cacophony Project的广阔愿景是使用最新技术来监视新西兰鸟类的数量,并人道地消除危害其的捕食者。

该项目始于我们创始人的后院,以评估他保护鸟类财产的努力的有效性。 从这个简单的开始,该项目便Swift发展成为一个包含两个边缘设备,一个云服务器以及使用机器学习自动识别动物的系统。 该项目从一开始就是完全开源的,并且收到了各种各样志愿者的定期捐款。

是什么使新西兰的鸟类如此特别?

New Zealand tui bird

翠鸟。

在新西兰,鸟类是我们的taonga ,我们的珍贵事物。 新西兰与世界其他地区隔绝已有7000万年之久,我们的鸟类物种的进化不受哺乳动物(除了小蝙蝠)的影响。 结果,许多新西兰独特的鸟类,包括我们的国家标志猕猴桃,都没有针对天敌的防御策略。

New Zealand kiwi bird

奇异鸟。

不幸的是,在过去的两个世纪中,欧洲人定居后引入了诸如鼠,鼠和负鼠等入侵物种,使许多鸟类的数量减少了。 现在,80%的本地鸟类已经濒临灭绝或数量下降。

多年来,保护主义者通过将剩余的人口迁移到无捕食者的岛屿上,从灭绝的边缘拯救了我们的许多标志性物种。 这些岛屿已被艰苦清除所有引进的哺乳动物。 在这些岛屿上,您可以时光倒流,聆听迎接第一批欧洲探险家大声鸣叫的鸟叫声。

不仅环保主义者在为我们的鸟类而战。 近年来,许多新西兰人每天都组成当地团体,共同合作,捕食捕食者,以期在他们的后院听到我们本地鸟类的旋律鸟鸣。

我们相信,通过现代化他们使用的工具,我们可以使这些小组更加有效。 通过将数字诱饵与更有效的消除方法结合使用,我们认为这些程序的效率可能高达80,000倍

我们的技术生态系统

在过去的几年中,我们使用开源的快速原型制作方法,建立了一个组件生态系统,用于自动监视引入新西兰的鸟类和掠食者。 下图总结了该系统。

Cacophony ecosystem architecture

该架构显示了Cacophony生态系统的不同组件之间的交互。

我们的热视频平台使我们能够监视和观察有害生物的行为。 它专门设计用于检测小型和快速移动的食肉动物,例如小动物和老鼠。 它具有坚固的Raspberry Pi计算机和FLIR Lepton 3热像仪。 电源由电池或交流电源提供,其他自定义硬件提供电源和看门狗功能,引诱掠食者的音频输出以及远程通信。

Thermal video platform hardware

散热视频平台硬件。

我们经过高度调整的运动检测算法可监视实时热像仪的进给并检测温暖,运动的物体(希望是动物)。 当检测到运动时,摄像机开始记录并将其上传到Cacophony Project API服务器进行存储和分析。 通过使用热像仪供稿,我们可以以比追踪相机(通常用于检测较大的哺乳动物,如猪和鹿)更高的灵敏度检测小型哺乳动物。

高灵敏度很重要,因为我们无法管理无法检测到的内容。 哺乳动物,例如小矮人,难以检测,因为它们体积小,速度快,并且很少与其他检测设备(如跟踪隧道和咀嚼卡)互动。

我们还创建了可在廉价手机上运行的Android录音机。 在现场安装后,它会进行定期的,客观的,GPS定位的,带时间戳的音频记录,并上传到我们的API服务器。 这些记录是监视一段时间内鸟类数量的理想选择。

最终,我们计划在这些记录上使用机器学习来确定给定位置的鸟类种群趋势,并在可能的情况下自动识别鸟类。 在继续致力于AI的同时,我们已经在全国多个地点进行记录,以建立逐年的数据集。

捕获的音频和热视频记录将上传到我们的API服务器进行存储和处理。 我们的机器学习管道处理热视频记录并标记出现的动物。 所有记录也都转换为易于查看的格式。

机器学习管道可以自动识别捕食者,这是使我们的方法特别有趣的一个方面。 首先分析上传的热视频录像,以在每帧中寻找温暖的移动物体。 这些区域从每个帧中剪切下来,并通过时间链接在一起,形成我们所谓的“轨道”。

Steps to identify animals in a thermal image

在热图像中识别动物的步骤。 裁剪后的图像将被输入到我们的机器学习算法中,该算法会计算动物物种的预测。

然后使用流行的TensorFlow平台实现的卷积递归神经网络(CRNN)模型对这些轨道进行分类。 该模型使用分为三秒钟的大块人标签轨道进行训练。 输入轨迹被拉伸,翻转和剪切以增加输入数据的种类,并使模型在实际使用中更加健壮。

在分类时,从轨道分别向模型中的每个帧馈送模型,以在每个时间点生成每种动物类别的分类概率。 该模型的循环结构意味着其当前输出受先前输出的影响。 这使模型能够说明动物随时间移动的方式,从而大大提高了分类精度。 从直觉上讲这是有道理的:人类观察者经常发现很难从单个视频帧中识别出动物,但是看到动物移动几秒钟通常会使该物种消失。

我们创建了一个网络平台,以便用户可以查看和收听在其设备上制作的录音。 通过该平台,用户还可以在视频中手动标记动物并设置音频回放,以引诱动物更靠近相机。

我们系统的最后一部分是设备管理工具。 我们的管理服务器使我们能够监视在线设备的正常运行时间,并将新版本的软件和配置推送到我们的设备。

最后,我们有一个Sidekick,这是一个Android应用程序,可帮助用户设置热像仪。 对于没有移动数据覆盖范围的设备,Sidekick可以无线收集热量记录并在互联网连接可用时稍后上传。

我们的下一步行动

借助一个小的团队和最少的管理,我们可以快速进行迭代,发现和改进。 围绕着如此之多的好主意,最艰难的事情之一就是让我们决定下一步该做什么。 我们始终必须在尝试新想法与使我们的技术更可靠,更易于人们使用之间取得平衡。

当前,我们正在努力调整我们的人工智能(AI)模型以在热像仪硬件上运行,以实现对捕食者的自动分类。 完成此操作后,我们计划将相机与仅在相机识别出目标物种时触发的陷阱配对。 这允许采取更有效的诱捕策略,提高捕食者的捕获率,同时消除非目标动物的副捕获。

其他即将到来的项目包括我们不断增加的录音集的可视化,应用机器学习来评估录音中的鸟鸣以及新的设备管理功能。 我们也有许多其他的想法可以尝试,不管大小,团队永远不会感到无聊!

如果您想了解更多信息,请访问Cacophony Project网站。 如果您想捐款,请使用此处列出的联系表格或电子邮件地址。 随着项目的发展如此之快,直接与我们联系通常是确定最有趣,最有用的方式为您提供帮助的最简单方法。


克莱尔·麦克伦南(Clare Mclennan)和Menno Finlay-Smits将于1月21日至25日在新西兰基督城的linux.conf.au上展示“ 将技术带到鸟类 ”。

翻译自: https://opensource.com/article/19/1/cacophony-project

通过机器学习识别鸟类

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过机器学习识别鸟类_将机器学习带到鸟类 的相关文章

  • 使用 python 制作本地服务器应用程序的最佳方法

    我想要简单轻松地集成 python 和 vba 人们 如果他们在阅读本文后亲自见到我 阅读本文可能会杀了我 但我正在使用 django 开发服务器来实现此目的 有没有什么简单又好的方法 仅举个例子 我想使用 python 模块 openpy
  • 替换字符串列表中的 \x00 的最佳方法?

    我有一个来自已解析 PE 文件的值列表 其中包括 x00每个部分末尾的空字节 我希望能够删除 x00字符串中的字节而不删除所有字节 x 文件中的 s 我试过做 replace and re sub 但并没有取得太大成功 使用Python 2
  • 如何在 Ubuntu 上安装 Python 模块

    我刚刚用Python写了一个函数 然后 我想将其做成模块并安装在我的 Ubuntu 11 04 上 这就是我所做的 创建 setup py 和 function py 文件 使用 Python2 7 setup py sdist 构建分发文
  • 如何更改充当按钮的范围的文本

    我正在为自定义 Web 应用程序编写自动化测试 我遇到了无法更改跨度文本的问题 我尝试过使用 driver execute script 但没有运气 如果我更好地了解 javascript 这确实会有帮助 据我所知 您无法单击跨度 并且列表
  • 类属性在功能上依赖于其他类属性

    我正在尝试使用静态类属性来定义另一个静态类属性 我认为可以通过以下代码来实现 f lambda s s 1 class A foo foo bar f A foo 然而 这导致NameError name A is not defined
  • 在 Python 中使用 sec 函数的反函数

    我正在创建一个程序 用于计算从一定高度范围和设定初始速度发射射弹的最佳角度 在我需要使用的最终方程中 存在一个反 sec 函数 它导致了一些麻烦 我已经导入了数学并尝试使用 asec 无论如何 但是数学似乎无法计算反秒函数 我也明白 sec
  • python中函数变量的作用域

    假设我们有两个函数 def ftpConnect ftp FTP server ftp login ftp cwd path def getFileList ftpConnect files ftp nlst print files 如果我
  • 反加入熊猫

    我有两个表 我想附加它们 以便仅保留表 A 中的所有数据 并且仅在其键唯一时添加表 B 中的数据 键值在表 A 和 B 中是唯一的 但在某些情况下键将出现在表 A 和 B 中 我认为执行此操作的方法将涉及某种过滤联接 反联接 以获取表 B
  • 使用Python将图像转换为十六进制格式

    我的下面有一个jpg文件tmp folder upload path tmp resized test jpg 我一直在使用下面的代码 Method 1 with open upload path rb as image file enco
  • Python 中的这种赋值方式叫什么? a = b = 真

    我知道关于元组拆包 http docs python org tutorial datastructures html tuples and sequences但是当一行中有多个等号时 这个赋值被称为什么 阿拉a b True 它总是让我有
  • 字典中列表中仅有的几个索引的总和

    如果我有这种类型的字典 a dictionary dog white 3 5 black 6 7 Brown 23 1 cat gray 5 6 brown 4 9 bird blue 3 5 green 1 2 yellow 4 9 mo
  • urllib2.urlopen() 是否实际获取页面?

    当我使用 urllib2 urlopen 时 我在考虑它只是为了读取标题还是实际上带回整个网页 IE 是否真的通过 urlopen 调用或 read 调用获取 HTML 页面 handle urllib2 urlopen url html
  • python中的sys.stdin.fileno()是什么

    如果这是非常基本的或之前已经问过的 我很抱歉 我用谷歌搜索但找不到简单且令人满意的解释 我想知道什么sys stdin fileno is 我在代码中看到了它 但不明白它的作用 这是实际的代码块 fileno sys stdin filen
  • 使用 Doc2vec 后如何解释 Clusters 结果?

    我正在使用 doc2vec 将关注者的前 100 条推文转换为矢量表示形式 例如 v1 v100 之后 我使用向量表示来进行 K 均值聚类 model Doc2Vec documents t size 100 alpha 035 windo
  • Plotly:如何避免巨大的 html 文件大小

    我有一个 3D 装箱模型 它使用绘图来绘制输出图 我注意到 绘制了 600 个项目 生成 html 文件需要很长时间 文件大小为 89M 这太疯狂了 我怀疑可能存在一些巨大的重复 或者是由单个项目的 add trace 方法引起的 阴谋 为
  • CSV 在列中查找最大值并附加新数据

    大约两个小时前 我问了一个关于从网站读取和写入数据的问题 从那时起 我花了最后两个小时试图找到一种方法来从输出的 A 列读取最大日期值 将该值与刷新的网站数据进行比较 并将任何新数据附加到 csv 文件而不覆盖旧的或创建重复项 目前 100
  • 如何在单独的文件中使用 FastAPI Depends 作为端点/路由?

    我在单独的文件中定义了一个 Websocket 端点 例如 from starlette endpoints import WebSocketEndpoint from connection service import Connectio
  • 如何对字符串列表进行排序?

    在 Python 中创建按字母顺序排序的列表的最佳方法是什么 基本回答 mylist b C A mylist sort 这会修改您的原始列表 即就地排序 要获取列表的排序副本而不更改原始列表 请使用sorted http docs pyt
  • 使用 Keras 和 fit_generator 绘制 TensorBoard 分布和直方图

    我正在使用 Keras 使用 fit generator 函数训练 CNN 这似乎是一个已知问题 https github com fchollet keras issues 3358TensorBoard 在此设置中不显示直方图和分布 有
  • 如何识别图形线条

    我有以下格式的路径的 x y 数据 示例仅用于说明 seq p1 p2 0 20 2 3 1 20 2 4 2 20 4 4 3 22 5 5 4 22 5 6 5 23 6 2 6 23 6 3 7 23 6 4 每条路径都有多个点 它们

随机推荐

  • java前台请求quartz,spring整合java quartz实现动态定时任务的前台网页配置与管理

    实例简介 在实际项目应用中经常会用到定时任务 可以通过quartz和spring的简单配置即可完成 但如果要改变任务的执行时间 频率 废弃任务等就需要改变配置甚至代码需要重启服务器 这里介绍一下如何通过quartz与spring的组合实现动
  • 目标主机SSH服务存在RC4、CBC或None弱加密算法 修复方法

    近期进行服务器漏扫时发现了 目标主机SSH服务存在RC4 CBC或None弱加密算法 的漏洞 记录一下修复方法 如下 1 修改 ssh 配置文件 vim etc ssh sshd config 或 vi etc ssh sshd confi
  • java打印出1~100之内的所有素数

    素数 质数 是指在大于1的整数之中只能被1和它自身整除的数就称之为素数 例如 2 1 2 2 2 1 2就是一个素数 以此类推3 5 7都是素数 代码 public class Main public static void main St
  • 主板电源开关接口图解_组装电脑时主板跳线如何接?DIY装机主板接线教程

    如今装机不再像以前那么神秘 不用再去电脑城问东问西 只要上天猫或京东等网上商城即可放心买到各种电脑配件 那么 自己组装电脑最难的是什么 CPU 散热器 内存 显卡安装都很简单 很多小伙伴自己组装电脑的难点主要在于主板跳线或者说机箱接线 今天
  • 2022.06.26 华为od机试真题

    华为od机试真题 1 最长连续子串 2 正方形数量 3 二叉树层次遍历 不会做 1 最长连续子串 有N个正整数组成的一个序列 给定一个整数sum 求长度最长的的连续子序列使他们的和等于sum 返回次子序列的长度 如果没有满足要求的序列 返回
  • 2019年广东工业智能机器人产量约占全国29%

    日前发布的 广东省制造业高质量发展 十四五 规划 下称 规划 中 智能机器人是我省 十四五 谋划发展的十大战略性新兴产业之一 战略性新兴产业是科技创新和产业发展的深度融合 规划针对智能机器人的发展提出 重点发展机器人减速器 控制器等关键部件
  • 【计算机视觉

    文章目录 一 PROMISE12 二 BraTS 2015 三 LIP Look into Person 四 BigEarthNet 五 Stanford Background Standford Background Dataset 六
  • win10 powershell无法激活conda v4.9环境

    1 PATH环境变量 把condabin目录添加到环境变量中 2 初始化powershell 2 1 管理员身份运行powershell win x 弹出选项 选中 Windows PowerShell 管理员 2 2 conda init
  • python 替换_Python 实现将numpy中的nan和inf,nan替换成对应的均值

    nan not a number inf infinity 正无穷 numpy中的nan和inf都是float类型 t t 返回bool类型的数组 矩阵 np count nonzero 返回的是数组中的非0元素个数 true的个数 np
  • (python)Hex文件解析和校验

    目录 前言 Hex文件结构分析 1 利用notepad 打开hex文件 2 hex行格式 行开始 数据长度 地址 数据类型 数据 校验和 3 校验和 完整代码 总结 前言 Intel HEX文件是由一行行符合Intel HEX文件格式的文本
  • 数据赋能企服增长,构建“以客户为中心”的数字化经营体系

    目前 中国企服市场数字化需求爆发 主要表现在传统行业数字化转型加速 企服企业的服务能力得到认可 新冠疫情加速数字化进程等方面 神策数据作为大数据分析与营销科技优质服务商 结合自身数字化实践经验 总结出企服数据驱动增长的解决方案 从市场营销
  • mysql查询like多个值

    有个需求是要查询字段中code前缀是H M 81 82开头的 方法一 使用like和or select from zhy where code like H or code like M or code like 81 or code li
  • Java并发包中那些值得学习的并发工具类(空谈误国,实干兴邦,代码示范,抛砖引玉)

    首先我们通常说的并发包就是java util concurrent包及其子包 集中了Java并发的各种基础工具类 一 这个并发包在哪 上面的包就是传说中的并发包 为什么这个并发包就比较流弊呢 原因主要有以下几点 提供了几个比synchron
  • 什么叫临界资源和临界区?

    临界资源是指每次仅允许一个进程访问的资源 属于临界资源的硬件有打印机 磁带机等 软件有消息缓冲队列 变量 数组 缓冲区等 诸进程间应采取互斥方式 实现对这种资源的共享 每个进程中访问临界资源的那段代码称为临界区 显然 若能保证诸进程互斥地进
  • 机器学习源代码_机器学习中程序源代码的静态分析

    机器学习源代码 Machine learning has firmly entrenched in a variety of human fields from speech recognition to medical diagnosin
  • Qt自定义委托

    Qt中的委托通常都是继承自QStyledItemDelegate或者QItemDelegate 二者的区别主要在于绘制方式 QStyledItemDelegate会使用当前样式绘制 并且能够使用qss 因此在在自定义委托时 一般使用 QSt
  • 详解Python视频剪辑第三方库Moviepy的使用

    一 简介 Moviepy是一个用于处理视频的Python第三方库 它提供了简单易用的接口 可以进行视频剪辑 合并 转码以及添加各种效果等操作 本文将介绍如何使用Moviepy库来进行视频剪辑的基本操作 二 安装Moviepy 在开始之前 我
  • 【状态估计】基于FOMIAUKF、分数阶模块、模型估计、多新息系数的电池SOC估计研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据 讲解 1 概述 准确估计电池的荷电状态 SOC 是
  • 前端Js框架汇总

    前端Js框架汇总 概述 有些日子没有正襟危坐写博客了 互联网飞速发展的时代 技术更新迭代的速度也在加快 看着Java Js Swift在各领域心花路放 也是煞是羡慕 寻了寻 net的消息 也是振奋人心 net core 1 mono xam
  • 通过机器学习识别鸟类_将机器学习带到鸟类

    通过机器学习识别鸟类 Cacophony Project的广阔愿景是使用最新技术来监视新西兰鸟类的数量 并人道地消除危害其的捕食者 该项目始于我们创始人的后院 以评估他保护鸟类财产的努力的有效性 从这个简单的开始 该项目便Swift发展成为