学生休息室

分享技术和现实生活的例子,学生可以如何使用MATLAB和Simulink在他们的日常项目#学生成功金宝app

野外深度估计

大家好,我们MathWorks与Drivenda合作,非常高兴为您带来数据科学挑战-《深海黑猩猩法案》:野生动物保护的深度估算

通过这项挑战,您将获得使用单目摄像机视频数据集的真实经验,学习新的技能,并赢得一些奖金,同时在家工作。您还将协助野生动物保护人士监测物种数量大小和种群变化,帮助他们保护地球的自然资源。

我们鼓励您使用MATLAB来训练您的模型提供免费MATLAB许可证

你的本次挑战的目标是对摄像机陷阱视频中选定的帧自动估计摄像机陷阱与动物的距离。自动距离估计可以迅速加快对种群监测估计数的获取。主要数据包括来自西非两个公园的摄像机捕捉视频,以及手工标记的距离和估计的动物边界框坐标。看看这个页面查阅详细数据和问题概述。

对于这个2博客文章系列,我们将为您提供详细的资源,帮助您解决这一难题。第一篇博客将讨论单目深度估计,将视频作为数据集,以及您可以实现的不同方法,以最低的误差解决问题。第二个博客这是一个详细的启动程序代码,用于MATLAB中的一种方法。

单目深度估计

单目深度估计是一个反问题——给定得到的图像,我们试图计算组成它的特征的排列。此外,这是一个不适定问题,因为没有唯一的解决方案。例如,在图像中看起来更小的猴子可能只是离得更远,反之亦然。Ames房间就是一个很好的例子:

传统的深度估计是通过多视点特征匹配来实现的。例如,结构从运动和立体视觉匹配。然而,在本例中,这些方法是不可行的。当受试者在视频中移动时,帧间的位移是未知的,因此传统的方法不太适合。

尽管有上述困难,单目深度估计是一个广泛研究的领域,近年来取得了越来越多的成功。希望通过这次挑战,你能继续取得进步。

资源:

深度估计:基础和直觉

处理数据

视频数据

使用视频是传统图像处理的一个扩展–视频只是一组按特定顺序排列的图像,也称为帧。每个帧提供有关场景的空间信息,但综合考虑,视频的动态特性提供了额外的时间维度。

要考虑的第一步是从视频中提取必要的帧,以确保保持正确的排序。然后,可以在执行机器学习之前对其进行处理

资源:

VideoReader

图像处理

处理数据

处理视频的另一个挑战是数据集的庞大。在MATLAB中,可以使用的概念数据存储,为太大而无法放入内存的数据集合创建一个存储库。数据存储允许您将存储在磁盘、远程位置或数据库中的多个文件中的数据作为单个实体进行读取和处理。

资源

了解数据存储的概念:开始使用数据存储

为图像、文本、音频、文件等创建不同的数据存储。不同文件格式或应用程序的数据存储

使用内置数据存储直接作为深度学习网络的输入:用于深度学习的数据存储

为基于文件的数据实现自定义数据存储:开发自定义数据存储

挑战的数据将使用存储在AWS中的数据。所以,学习如何访问S3桶中的数据

开始

一旦数据准备就绪,下一步就是考虑你的方法。与数据科学中的任何问题一样,这里有许多可能的途径。以下论文为研究提供了一个良好的起点。它评估了许多现有方法,并为进一步发展提供了一些想法:基于深度学习的单目深度估计研究综述。此外,我们在下面提供了两个可能的方法的起始指针。

方法一:光流+ CNN

第一种方法使用光流检测背景下的动物,然后利用预先训练好的图像分类网络进行回归。

对于视频中的每个标记帧,计算与前一秒相比的流。当动物在静止的背景下移动时,光流会突出显示它们所在的位置,并为它们的移动提供一些背景信息。为了提高信噪比,使用所提供的包围盒为感兴趣的区域生成二进制掩码。这是用来代替简单的裁剪图像来保留空间上下文。

这将生成一个新的图像帧数据集,作为下一步训练的输入。在这里,为了简化训练,我们可以使用经过预训练的图像分类CNN,并进行一些小的调整。即,将输入层转换为与数据集匹配的层,并替换最后几层,以执行向下回归到单个值的操作–depth估算。

在这种方法中,虽然每个输入被孤立地考虑,光流本身包括来自原始视频的时间信息。

资源:

学习如何实施光流使用Horn-Schunck方法、Farneback方法和Lucas-Kanade方法检查本教程视频:计算机视觉训练,运动估计

图像深度学习

介绍卷积神经网络

方法2:将现有模型导入MATLAB

在他们的论文中”挖掘自我监督单目深度估计Godard等人提出了一种称为Monodepth2的自监督模型,用于对单个图像进行深度估计。他们的深度预测网络将单个彩色图像作为输入,并生成场景的深度图。此外,他们还以GitHub我们可以导入MATLAB并重新培训到新场景的存储库。

为了将PyTorch模型导入MATLAB,首先需要将其导出到开放式神经网络交换(ONNX)格式.幸运的是,PyTorch为这个过程提供了一个非常简单的工作流这个例子

您还可以运行python脚本(“pytorchToOnnx.py”),我们用于从这是GitHub回购协议

一旦在ONNX格式,这些可以很容易地导入到MATLAB使用importONNXNetworkimportONNXLayers功能。

资源:

将预训练的深度学习网络导入MATLAB

深度学习导入、导出和定制

开始迁移学习

下一步

如果您没有MATLAB许可证,请通过请求免费MATLAB许可证

请继续关注进一步的更新下一篇博客我们将扩展以上概述的光流方法,提供启动代码和进一步发展的建议。

欢迎在下面的评论中给出你的反馈或任何问题。

|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。