神奇动物在哪里,但导演是微软
大数据产业创新服务媒体
——聚焦数据 · 改变商业
一说到计算机视觉,大多数人第一时间联想到的便是“人脸识别”、“自动驾驶“、道路检测”等跟我们日常生活息息相关的关键词。而在2024年的5月末,微软在GitHub上面上传了这样一个计算机视觉的项目,完全不包含这些关键词,却吸引来了无数人围观,短短两天时间就冲到了700颗星。
这个项目就是Pytorch-Wildlife。项目成立的初衷是因为人类活动导致全球生物多样性急剧下降,对野生动物种群的全面监控变得尤为迫切。
可是想要完全利用人力,来对某一种群或者某一块栖息地进行24小时监控,这显然是不现实的。不仅仅是因为成本过于高昂,而是人类肉眼很难完整观察清楚一些行动迅敏的动物,这就会导致没有办法准确记录物种以及栖息地情况。于是在这个大背景下,Pytorch-Wildlife诞生了。
PyTorch-Wildlife是一个用于创建、修改和共享强大 AI 保护模型的平台。这些模型可用于各种应用,包括相机陷阱图像(当检测到动物经过时进行拍照)、俯视图像、水下图像以及生物声学。通俗来讲,项目是利用数据集和深度学习架构来实现保护野生动物的目的。
项目的原理其实并不复杂。首先,利用了Megadetector v5进行对象检测,这是一个预先训练好的模型,用以过滤掉空图像或含有非动物对象(如人类和车辆)的图像。
图:亚马逊丛林的动物
Megadetector是基于Yolov5检测模型架构,专门为动物检测设计的深度学习模型。能够处理来自不同地区和生态系统的大约300万张动物图像。
接下来,对所拍摄的视频和图像进行采集,把采集得到的数据喂给Megadetector v5进行识别筛选。其中,对于视频数据,每段视频按30fps的帧率被拆分成图像帧,如果原视频帧率低于30fps,则使用原始帧率。这种取舍可以平衡模型的运行效率以及识别精准度。
针对检测到的动物对象,Pytorch-Wildlife会将它们裁剪并调整至256x256像素的尺寸,并根据图像级别的标注为每个裁剪图像分配标签。
大多数深度学习模型,尤其是卷积神经网络(CNN),它对输入的素材是有严格规范的。256x256其实是一个常见的选择,因为它既能保持一定的图像细节,又不会使计算负担过大。
在裁剪之后,利用Pytorch-Wildlife的分类微调模块,采用ResNet-50作为基础模型架构,进行动物的识别训练。训练设置包括60个训练周期,批量大小为128,采用随机梯度下降优化器,并设定学习率在每20个周期后衰减。
以往来看,开发者需要对模型进行微调,模型才能够更好地理解和区分特定的动物类别,提高在实际野生动物监测任务中的识别准确率。而Pytorch-Wildlife框架提供的微调模块则简化了这一过程,使得即使是没有深厚技术背景的研究人员,也能利用先进的深度学习技术进行动物识别模型的定制化训练。
Pytorch-Wildlife团队准备两份案例,第一个是在亚马逊丛林中检测动物。
亚马逊雨林是世界上最大的热带雨林,是地球上生物多样性最丰富的地区之一。亚马逊雨林里的动物数量是非常惊人的,已知的动物种类超过了10万种,这包括鸟类、哺乳动物、爬行动物、两栖动物以及其他无脊椎动物等。但是这个数字仅仅是已记录和描述的物种,现代学者普遍认为,还有成千上万甚至是数百万种动物物种尚未被发现和描述。由于亚马逊雨林的广阔和复杂性,新的物种仍在不断被发现,因此确切的动物种类数量是一个不断变化且难以精确统计的数字。
Pytorch-Wildlife使用了一个包含41904张图像的数据集,这些图像覆盖了36个已标记的动物属,其中33569张用于训练,8335张用于验证。
在亚马逊雨林项目中,模型实现了92%的识别准确率,针对90%的数据集在98%的置信度阈值下正确预测。这意味着,大部分动物图像能够被准确分类,只有少量需要人工审核。
除了亚马逊丛林的案例外,Pytorch-Wlidlife还有一个在加拉帕戈斯群岛的项目。这个项目的背景非常独特,虽然加拉帕戈斯群岛的动物种类也很多,然而这个脆弱的生态系统正面临外来入侵物种的重大威胁,这些物种可能改变本地物种的种群动态并导致它们灭绝。
Pytorch-Wlidlife检测到,一些负鼠通过船只、陆地等手段,正在入侵加拉帕戈斯群岛的生态。对本地生物构成了竞争压力,因此连续的监测和管理对于维持生态平衡至关重要。
项目中使用的数据集包含491471段视频,这些视频被标记为“负鼠”或“非负鼠”。数据集被划分为训练集和验证集,分别包含343053段和148418段视频。
经过验证,Pytorch-Wildlife平台训练的模型针对入侵的负鼠识别达到了98%的准确率。比如下面两张图,由于是夜间拍摄的缘故,即便是人的肉眼也很难第一时间分清两种动物。第一张图片是当地的食蚁兽,第二张是外来入侵物种负鼠。
图:食蚁兽
图:负鼠
这部片接下来要怎么拍?
Pytorch-Wildlife在监控和识别上初步取得了成功,不过这对于保护生态平衡上来说显然还是远远不够的。未来Pytorch-Wildlife将会连接LILA:BC数据集,进一步提高对物种识别的能力。
LILA数据集指的是亚历山大图书馆的标注信息库:生物与保护(Labeled Information Library of Alexandria:Biology and Conservation),这是一个专注于生物学和野生动物保护领域的数据集库,提供了多样化的开放数据资源,用于促进野生动植物的监测、保护生物学研究以及生态系统的管理。
LILA数据集包含大量经过标注的信息,比如图片、视频和其他类型的数据,这些数据有助于科学家和保护工作者利用机器学习和深度学习技术来识别和跟踪野生动物,评估生物多样性。此外,通过使用LILA进行与训练,还能够监测生态系统的健康状况。
图:Pytorch-Wildlife未来的规划图
数据猿也体验了一下Megadetector的实力。识别模型选择Megadetector v5,检测模型选择的是亚马逊丛林。可以明显看出,只要是亚马逊丛林中出现的动物,Megadetector都能很好的识别出来。
图:亚马逊丛林中的豹子
不过像是数据猿LOGO这种卡通动物形象,即便把识别阈值拉满,Megadetector也没有办法识别出来。相反,如果是真实的动物,Megadetector只需要很低的阈值就能识别。
图:Megadetector无法识别卡通动物形象
根据开发团队的介绍,Megadetector的最新版本,也就是Megadetector v6即将上线,识别率远超v5版本,同时消耗的计算资源更低。目前,使用Megadetector v5检测一张图片耗时约为20秒,而v6版本将会让耗时小于15秒。
另外Megadetector v6还会支持更多的低预算设备,这是因为在亚马逊丛林等地,温热潮湿的生态环境会使得拍摄设备损坏率提高,没办法长期维持成本高昂的拍摄设备。然而成本较低的拍摄设备会导致拍摄画面的分辨率低下,帧数低下等等,对Megadetector的识别作业起到非常负面的影响。
在未来,Pytorch-Wildlife会支持更多种类的识别方式,比如鸟瞰图、水下拍摄。这何尝不是一种新的云养殖野生动物的方法?
AI For Good
Pytorch-Wildlife属于典型的AI For Good项目,这个概念由微软提出,不过与其说是概念,更像是一种倡议。它是指在推动人工智能技术的发展与应用,以解决全球性的社会、环境和经济挑战,促进可持续发展。这一理念鼓励科研人员、企业、政府、非政府组织以及社会各界合作,利用人工智能的力量创造正面影响,确保技术进步惠及全人类和地球生态。
不一定非得是动物,其他类似的方式都可以算是AI For Good。例如,通过机器学习算法监测森林砍伐、海洋污染、气候变化和生物多样性减少,以及开发智能系统优化资源利用和能源管理。
事实上,Pytorch-Wildlife的核心,Megadetector,几乎没有办法复刻任何的商业途径。但这个项目依然拥有足够高的关注度,说明人们关注AI,使用AI技术,眼里并不是只有它的商业化能力,而是如何去使用AI,来建设赖以生存的家园。当然了,也有一部分人是冲着这个项目可以免费看真正的野生动物去的。
国内也有不少AI公司着手于类似的项目,比如百度的“绿色伙伴计划”,通过AI来减少碳排放。根据记录,百度地图“低碳计划”全年累计访问量超过 4000 万人次,累计可减少碳排放量超 3800 吨。
还有腾讯的“自然风险评估”,应用AI调优技术,腾讯2023年当年减少用电量约5000兆瓦时,避免碳排放2851.5吨。
文:火焰翼人 / 数据猿
责编:凝视深空 / 数据猿
相关文章:

神奇动物在哪里,但导演是微软
大数据产业创新服务媒体 ——聚焦数据 改变商业 一说到计算机视觉,大多数人第一时间联想到的便是“人脸识别”、“自动驾驶“、道路检测”等跟我们日常生活息息相关的关键词。而在2024年的5月末,微软在GitHub上面上传了这样一个计算机视觉的项目&#x…...

Flutter 中的 Flow 小部件:全面指南
Flutter 中的 Flow 小部件:全面指南 Flutter 的 Flow 是一个功能强大的布局小部件,它允许开发者在父组件的任意位置放置子组件。Flow 可以通过使用 FlowDelegate 完全自定义子组件的布局,这为创建复杂的自定义布局提供了极大的灵活性。本文将…...

【pyspark速成专家】11_Spark性能调优方法2
目录 编辑 二,Spark任务UI监控 三,Spark调优案例 二,Spark任务UI监控 Spark任务启动后,可以在浏览器中输入 http://localhost:4040/ 进入到spark web UI 监控界面。 该界面中可以从多个维度以直观的方式非常细粒度地查看Spa…...

吊顶的做法防踩坑,吊顶怎么省钱还好看
怎么做个好看的吊顶?你天天抬头看不? 现在楼房到手本身层高两米75左右,等铺完地暖和瓷砖还得增加几公分 如果再整个吊顶,就属于花钱买压抑了,吊顶就是遮丑, 某些比较显层高还亮堂,今天把做法分享出来 开发商给的毛坯两米8 做完地暖铺完瓷砖,层高是两米七八, 让木工在走廊两边…...

揭秘Tensor Core黑科技:如何让AI计算速度飞跃
揭秘 Tensor Core 底层:如何让AI计算速度飞跃 Tensor Core,加速深度学习计算的利器,专用于高效执行深度神经网络中的矩阵乘法和卷积运算,提升计算效率。 Tensor Core凭借混合精度计算与张量核心操作,大幅加速深度学习…...

为什么会有websocket(由来)
一、HTTP 协议的缺点和解决方案 1、HTTP 协议的缺点和解决方案 用户在使用淘宝、京东这样的网站的时候,每当点击一个按钮其实就是发送一个http请求。那我们先来回顾一下http请求的请求方式。 一个完整的http请求是被分为request请求节点和response响应阶段的&…...

【MySQL精通之路】优化
1 优化概述 数据库性能取决于数据库级别的几个因素,如表、查询和配置设置。这些软件结构导致了硬件级别的CPU和I/O操作,您必须将其最小化并使其尽可能高效。 在研究数据库性能时,首先要学习软件方面的高级规则和指导原则,并使用挂…...

解读大模型应用的可观测性
一、引言 随着人工智能技术的飞速发展,大模型作为AI领域的重要分支,正日益成为科技竞争的新高地。大模型通过输入大量语料进行训练,赋予计算机拥有像人类一样的“思考”能力,使其能够理解文本、图片、语音等内容,并进…...

嵌入式学习记录5.18(多点通信)
一、套接字属性设置相关函数 #include <sys/types.h> /* See NOTES */#include <sys/socket.h>int getsockopt(int sockfd, int level, int optname,void *optval, socklen_t *optlen);int setsockopt(int sockfd, int level, int optname,const void *op…...

shell脚本的基础应用
规范脚本的构成 #!/bin/bash # 注释信息 可执行的语句 执行脚本的方法 有1.添加x权限 ,绝对路经,或者相对路径2. 使用解释器 不需加x,root...bash...bash..echo 3,用source, 开机root ...bash ...echo bash -x /opt/test01.sh ÿ…...

【golang】内存对齐
什么是内存对齐 在访问特定类型变量的时候通常在特定的内存地址访问,这就需要对这些数据在内存中存放的位置有限制,各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 内存对齐是编译器的管辖…...

Java 17的新特性有哪些?
Java 17是Java编程语言的最新版本,于2021年9月14日发布。以下是Java 17的一些新特性: Sealed类和接口:Sealed类和接口限制了继承和实现的范围,在编译时提供更强的封装性。 Pattern匹配:Pattern匹配简化了对实例进行类…...

攻击同学网络,让同学断网
技术介绍:ARP欺骗 ARP欺骗(ARP spoofing)是一种网络攻击技术,它通过伪造ARP(地址解析协议)响应包来欺骗目标设备,使其将网络流量发送到攻击者指定的位置。具体操作步骤如下: 攻击者…...

Springboot启动时报错Property ‘mapperLocations‘ was not specified.
这几天没整boot 晚上直接运行不了了 本想是在表现层写点代码测测接口的 localhost8080找半天 结果404 先考虑好久 是不是url输入错了 然后 就发现 结果boot都不能启动了 JUnit也测不出来 找了半天 结果是开关机导致数据库没开 手动打开服务 找到MySQL启动 IDEA连接数据…...

MyBatis系统学习篇 - 动态SQL
MyBatis提供了动态SQL帮助我们解决在业务过程中,我们根据不同的条件动态生成SQL语句,用来满足各种复杂的查询需求,包括MyBatis中常用的动态SQL标签和用法,这种方式在一定程度上帮助我们重复写许多SQL堆积在一起,下面我…...

[LLM-Agent]万字长文深度解析规划框架:HuggingGPT
HuggingGPT是一个结合了ChatGPT和Hugging Face平台上的各种专家模型,以解决复杂的AI任务,可以认为他是一种结合任务规划和工具调用两种Agent工作流的框架。它的工作流程主要分为以下几个步骤: 任务规划:使用ChatGPT分析用户的请求…...

二十三篇:未来数据库革新:AI与云原生的融合之旅
未来数据库革新:AI与云原生的融合之旅 1. 智能数据库管理:AI的魔法 在数字化时代,数据库技术作为信息管理的核心,正经历着前所未有的变革。AI(人工智能)和云原生技术的融合,正在重新定义数据库…...

彩光赋能中国智造 极简光3.X助力“数智”转型
蒸汽时代、电气时代、信息时代三大工业革命后 互联网和智能制造主导的工业4.0时代来临 大数据、云计算、人工智能等新兴技术 对企业园区的网络架构、负载能力等 提出了新要求,也使得光纤较于传统铜缆 在距离、性能、延时上的优势日益凸显 基于此 围绕未来园区网建设的企…...

985上交应届生转正12天,被某东辞退了!
👇我的小册 45章教程:(小白零基础用Python量化股票分析小册) ,原价299,限时特价2杯咖啡,满100人涨10元。 01.事情起源 最近粉丝群都在转发一个截图,某应届毕业生在某东实习一年,才转正才12天,就因为自己调侃…...

Unity算法(一)——快速排序算法
文章目录 前言快速排序算法1、概念与实现2、优化 前言 算法是程序员的基础能力之一,资质越老的程序员在这方面理解会越深,很多时候项目在某个需要优化、提升的节点时,往往一些算法的使用就可以大大提升程序性能。当然,对于不同项…...

Leetcode 2028
思路:1-6之间的的n个数组合起来要变成sum_t mean*(rolls.size()n) - sum(rolls) ; 那么可以先假设每个数都是sum_t / n 其中这个数必须要在1 - 6 之间否者无法分配。 然后可以得出n * (sum_t / n ) < sum ; 需要对余数mod进行调整,为了减少调整的次…...

Angular(1):使用Angular CLI创建空项目
要创建一个空的 Angular 项目,可以使用 Angular CLI(命令行界面)。以下是使用 Angular CLI 创建一个新项目的步骤: 1、安装 Angular CLI: 打开你的命令行界面(在 Windows 上是 CMD、PowerShell 或 Git Bas…...

字节跳动(校招)算法原题
大模型"价格战"越演越烈 昨天的 文章 提到,自从 5 月 15 号,字节跳动发布了击穿行业底价的豆包大模型后,各大厂家纷纷跟进降价,而且都不是普通降价,要么降价 90% 以上,要么直接免费。 今天是豆包…...

前端面试题日常练-day39 【面试题】
题目 希望这些选择题能够帮助您进行前端面试的准备,答案在文末。 1. 哪个jQuery方法用于设置元素的HTML内容? a) .html() b) .text() c) .val() d) .append() 2. 在jQuery中,以下哪个方法用于隐藏或显示一个元素? a) .toggle…...

心电信号降噪方法(滤波器/移动平均/小波等,MATLAB环境)
对于一个正常的、完整的心动周期,对应的心电图波形如下图所示,各个波形都对应着心脏兴奋活动的生理过程,包含P波,PR段,QRS波群,ST段,T波,U波。 (1)P波心电图中…...

Kubernetes 文档 / 概念 / 工作负载 / 管理工作负载
Kubernetes 文档 / 概念 / 工作负载 / 管理工作负载 此文档从 Kubernetes 官网摘录 中文地址 英文地址 你已经部署了你的应用并且通过 Service 将其暴露出来。现在要做什么? Kubernetes 提供了一系列的工具帮助你管理应用的部署,包括扩缩和更新。 组织…...

【第6章】SpringBoot整合Mybatis
文章目录 前言一、准备1. 版本要求2.安装3. 建表语句 二、案例1. mapper2.实体类3.测试类4.扫描5. 配置6. mapper.xml7.输出 总结 前言 MyBatis-Spring-Boot-Starter 可以帮助你更快地在 Spring Boot 之上构建 MyBatis 应用。 一、准备 1. 版本要求 MyBatis-Spring-Boot-Sta…...

vim常用指令——001
vim常用指令 Vim的命令模式常用操作一、定位移动光标二、行的基本操作【复制、粘贴、删除】三、查找、替换四、分屏命令 总结给大家总结下四个运行模式: Vim的命令模式常用操作 一、定位移动光标 按h:将光标向左移动一个字符,等同于方向键左…...

java 对接农行支付相关业务(二)
文章目录 农行掌银集成第三方APP1:掌银支付对接快e通的流程1.1 在农行网站上注册我们的app信息([网址](https://openbank.abchina.com/Portal/index/index.html))1.2:java整合农行的jar包依赖1.3:把相关配置信息整合到项目中1.4:前端获取授权码信息1.5:后端根据授权码信…...

超频是什么意思?超频的好处和坏处
你是否曾经听说过超频?在电脑爱好者的圈子里,这个词似乎非常熟悉,但对很多普通用户来说,它可能还是一个神秘而陌生的存在。 电脑超频是什么意思 电脑超频(Overclocking),顾名思义,是…...