学生休息室

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

野外深度估计

大家好,我们MathWorks与DrivenData合作,很高兴为您带来数据科学的挑战-深度影响:野生动物保护的深度估计

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

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

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

对于这个2博客文章系列,我们将为您提供详细的资源,帮助您解决这一挑战。这第一篇博客将讨论单目深度估计,使用视频作为数据集和不同的方法,你可以实现以最小的误差解决问题。第二个博客是一个详细的入门代码的方法之一,在MATLAB。

单眼深度估计

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

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

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

资源:

深度估计:基础和直觉

处理数据

视频数据

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

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

资源:

VideoReader

图像处理

处理数据

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

资源

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

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

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

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

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

开始

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

方法一:光流+ CNN

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

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

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

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

资源:

学习如何实现光流使用Horn-Schunck方法,Farneback方法和Lucas-Kanade方法计算机视觉训练,运动估计

图像深度学习

介绍卷积神经网络

方法二:将已有模型导入MATLAB

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

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

您还可以运行我们用于测试此方法的python脚本(" pytorchToOnnx.py ")这GitHub回购

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

资源:

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

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

开始迁移学习

下一个步骤

如果您没有MATLAB许可证,请通过请求开始准备赠送的MATLAB许可证

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

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

|
  • 打印
  • 发送电子邮件

コメント

コメントを残すには,ここをクリックしてMathWorksアカウントにサインインするか新しいMathWorksアカウントを作成します。