感:深度学习的新开源视频理解框架

2021-02-09 20:19:56

感觉是一个推理引擎,可为功能强大的神经网络提供动作识别功能,且计算量较小。在此存储库中,我们提供:

开箱即用的两个模型已经在数百万个视频的视频中进行了预训练,这些视频是人类在摄像机前进行动作并与之交互的。这两个神经网络都很小,高效,并且可以在CPU上实时平稳运行。

演示应用程序展示了我们模型的潜力:手势识别,健身活动跟踪,实时卡路里估计。

记录和注释您自己的视频数据集的管道,并通过易于使用的脚本在我们的模型上训练自定义分类器,以微调权重。

确认以下步骤可在Linux(Ubuntu 18.04 LTS和20.04 LTS)和macOS(Catalina 10.15.7)上运行。

我们建议创建一个新的虚拟环境,以使用conda或virtualenv安装依赖项。以下说明将有助于创建conda环境。

注意:pip install -r requirements.txt仅安装PyTorch的仅CPU版本。要在GPU上运行推理,应安装另一版本的PyTorch。例如:

预先训练的砝码可以从这里下载。按照那里的说明创建一个帐户并下载砝码。下载完成后,解压缩该文件夹,然后将名为骨干的文件夹移动到有意义/资源中。最后,您的资源文件夹结构应如下所示:

资源├──骨干│├──strided_inflated_efficientnet.ckpt│└──strided_inflated_mobilenet.ckpt├──Fitness_activity_recognition│└──...├──手势检测│└──...└──...

注意:resources /中的其余文件夹将已经具有必要的文件-仅资源/ backboneneeds需要单独下载。

首先,请尝试我们提供的演示。在sense / examples目录中,您将找到3个Python脚本,分别是run_gesture_recognition.py,run_fitness_tracker.py和run_calorie_estimation.py。如下所述,启动每个演示程序就像在终端中运行脚本一样简单。

examples / run_gesture_recognition.py将我们训练有素的模型应用于手势识别。支持30种手势(请参见此处的完整列表)。

examples / run_fitness_tracker.py将我们训练有素的模型应用于实时健身活动识别和卡路里估算。总共可以识别80种不同的健身运动(请参见此处的完整列表)。

体重,年龄,身高应分别以千克,年和厘米为单位。如果未提供,将使用默认值。

--camera_id = CAMERA_ID要从--path_in = FILENAME流式传输的摄像机的ID。假定视频以16 fps编码。

将相机放在地板上,向上倾斜,一小部分地板可见

为了估算燃烧的卡路里,我们训练了一个神经网络将活动特征转换为相应的MET值。然后,我们对这些MET值进行后处理(请参阅此处执行的校正和聚合步骤),并使用用户将其转换为卡路里。的重量。

如果您仅对卡路里估算部分感兴趣,则可能要使用examples / run_calorie_estimation.py,它的显示会稍微更详细(请参见此处的视频,该脚本比较了该脚本制作的两个视频)。

估计的卡路里估计值大致在可穿戴设备产生的范围内,尽管尚未经过准确性方面的验证。根据我们的实验,我们的估计值与锻炼强度紧密相关(剧烈锻炼消耗更多的卡路里),因此无论绝对准确性,使用此指标将一项锻炼与另一项锻炼进行比较应该是公平的。

本节将描述如何在我们的模型之上构建自己的自定义分类器。我们的模型将充当功能强大的特征提取器,这将减少构建项目所需的数据量。

首先,运行tools / sense_studio / sense_studio.py脚本并在浏览器中打开http://127.0.0.1:5000/。您可以在您选择的位置设置一个新项目,并指定想要的类。收藏。

该工具将为您的项目准备以下文件结构,因此您可以将录制的视频插入相应的文件夹中:

/ path / to /您的/数据集/├──video_train│├──class1││├──video1.mp4│││├──video2.mp4││└──...│├──class2││├ ──video3.mp4││├──video4.mp4││└──...│└──...├──video_valid│├──class1││├──video5.mp4││├── video6.mp4││└──...│├──class2││├──video7.mp4││├──video8.mp4││└──...│└──...└── project_config.json

每个班级一个子文件夹,其中包含您想要的视频(但至少一个!)

在某些情况下,每堂课只有2-5个视频就足以实现出色的表现!

准备好数据后,请运行以下命令以在我们的功能提取器之一之上训练自定义分类器:

训练脚本应在数据集文件夹的根目录下生成一个名为classifier.checkpoint的检查点文件。您现在可以使用以下脚本实时运行它:

通过在时间批注数据的基础上进行训练,可以进一步提高模型的性能;可以使用单个标记的帧在视频中本地标识事件,而不是使用相同的标签处理每个帧。有关如何准备带有时间注释的数据的说明,请参阅此页面。

使用我们的时间注释工具准备数据集后,将--temporal_training作为附加标志传递给train_classifier.py脚本。

如果您对移动应用程序开发感兴趣并且想在iOS设备上运行我们的模型,请查看Sense-iOS,以获取有关如何使手势演示在iOS设备上运行的逐步说明。步骤之一涉及将我们的Pytorchmodels转换为TensorFlow Lite格式。

如果要转换自定义分类器,请将分类器名称设置为" custom_classifier&#34 ;,并使用"-path_in"提供用于训练分类器的数据集目录的路径。论据。

@misc {sense2020blogpost,作者= {Guillaume Berger和Antoine Mercier以及Florian Letsch和Cornelius Boehm和Sunny Panchal和Nahua Kang和Mark Todorovich和Ingo Bax和Roland Memisevic},标题= {通过端到端学习来实现视觉AI在视频剪辑上},如何发布= {\ url {https://medium.com/twentybn/towards-situated-visual-ai-via-end-to-end-learning-on-video-clips-2832bd9d519f}},请注意= {在线; 2020年10月23日访问,},年份= 2020,}

该代码在MIT许可下的版权(c)2020年200亿个Neurons GmbH。有关详细信息,请参见文件LICENSE。请注意,此许可证仅涵盖此存储库的源代码。预训练砝码带有单独的许可证,可在此处获得。