原始论文题目:《Learning-based Video Motion Magnification》

作者:Tae-Hyun and Jaroensri, Ronnachai and Kim, Changil and Elgharib, Mohamed and Durand, Frdo and Freeman, William T and Matusik, Wojciech

本文算法基于ubuntu 18.04平台进行程序的运行。

1.支持库安装(Installation)

官方的安装方式,当然也可以自己看requirements.txt文件,将缺少的依赖库安装上。

sudo apt-get install python-dev  # required to install setproctitle
pip install -r requirements.txt

2.程序运行(Running)

首先下载预训练模型,将预训练模型放置在data/文件夹下,预训练模型为checkpoint,模型放置完成后的文件夹结构如下所示(官方提供的模型应该不是完全的,仅为一部分,完全版需要对80G的训练集进行训练):

data/training/o3f_hmhm2_bg_qnoise_mix4_nl_n_t_ds3/checkpoint.

接下来将视频序列放置在data/vids/<video_name>下,运行以下脚本语句中的一个:

# 动态模式或静态模式下的帧序列处理
sh run_on_test_videos.sh <experiment_name> <video_name> <amplification_factor> <run_dynamic_mode>
# Temporal filtering based processing (frequency band pass filter)
sh run_temporal_on_test_videos.sh <experiment_name> <video_name> <amplification_factor> <low_cutoff> <high_cutoff> <sampling_rate> <n_filter_tap> <filter_type>

<experiment_name>:模型文件夹名字

<video_name>:视频切割为图像时,保存的图像的文件夹的名字

<amplification_factor>:放大倍数

<run_dynamic_mode>:是否为动态模式

说明:动态模式的含义是对连续帧视频序列进行处理。代码支持{‘fir’滤波器,‘butter’滤波器,‘differenceOfIIR’}滤波器。对于FIR滤波器来说,可以在时域以及频域进行滤波操作。

最后结合一个例子给出代码的使用方法,例子是对婴儿睡觉呼吸时肚子幅度的检测。对于一段视频序列,首先需要将视频序列提取为PNG格式的文件。我们可以在repo文件夹下运行如下的命令行代码(假定所有视频帧被放置在data/vids/baby路径下):

# Static mode, using first frame as reference.
sh run_on_test_videos.sh o3f_hmhm2_bg_qnoise_mix4_nl_n_t_ds3 baby 10
# Dynamic mode, magnify difference between consecutive frames.
sh run_on_test_videos.sh o3f_hmhm2_bg_qnoise_mix4_nl_n_t_ds3 baby 10 yes
# Using temporal filter (same as Wadhawa et al.)
sh run_temporal_on_test_videos.sh o3f_hmhm2_bg_qnoise_mix4_nl_n_t_ds3 baby 20 0.04 0.4 30 2 differenceOfIIR

以下的代码是用来将视频帧提取成为图像序列(如果用avconv不成功的话使用ffmpeg进行替代)首先要运行如下代码

avconv -i <path_to_input>/baby.mp4 -f image2 <path_to_output>/baby/%06d.png

<path_to_input>:输入文件的路径;

baby.mp4:官方的测试视频名字,根据自己视频名称进行更改

<path_to_output>:输出文件的路径

通过修改以上的脚本可以自定义视频以及定义结果的输出位置。可以通过修改configs/下的配置文件,对模型训练时的过程文件(checkpoint)的存储位置进行设置。

3.模型训练(Training)

使用convert_3frames_data_to_tfrecords.py文件,将数据集转化为tfrecords形式,或者下载已经处理后的tfrecords文件。文件下载地址为:https://groups.csail.mit.edu/graphics/deep_motion_mag/data/readme.txt

在配置文件中设置数据的路径,运行如下的训练脚本:

bash train.sh configs/<your config file>.conf

特别需要注意的是:GPU已经配置完成。

需要在conf文件中录入自己的训练库文件的路径,成功配置后结果如下所示:

注意事项:

首先我想说的是,不建议利用Anaconda进行安装,虽然理论上来说这样也可以,但是由于自己的水平有限不能解决如下的问题:由于在安装opencv时,anaconda会自动将依赖包ffmpeg安装上,但是我发现anaconda安装的ffmpeg,不支持libx264,因此不能够进行编解码,此时,即使编译一个新的libx264,也是不能进行编解码,显示错误为

当然如果必须用anaconda进行安装也可以,只不过,需要在沙箱外重新安装一个tensorflow,利用沙箱外的环境和Anaconda安装的软件支持包共同进行程序的运行。

1.在进行程序的编译以及运行时,要将依赖库安装完全包括:

tensorflow、numpy、opencv-python、scipy、setproctitle、tqdm等

如果要是利用anaconda进行安装

2.如果对于新手来说一定是新安装的ubuntu系统,因此需要安装视频编解码依赖包ffmpeg:

需要在沙箱外进行程序的安装:按照以下的官网进行安装:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu这个问题困扰了我好久,最后才发现这个官网,成功安装。

3.一定要注意的是,也许avconv -i <path_to_input>/baby.mp4 -f image2 <path_to_output>/baby/%06d.png不能成功,因为没有相关编解码文件,此时可以更换为ffmpeg -i <path_to_input>/baby.mp4 -f image2 <path_to_output>/baby/%06d.png 当然在程序magnet.py中也要将相应的acvonv更换为ffmpeg。

4.最后一定要注意的是:

magnet.py文件中,‘libx264’中的x一定为小写,一定为小写。

因为刚开始的时候,我不能进行libx264的编解码,因此我改成了别的方式,但是发现别的方式不成功,又改回来了,此时由于没有注意,将libx264写成了libX264。当成功安装成功libx264编解码文件后,依然出现

突然想到了大小写问题,当更改完成后,可以编译及运行成功。

安装完成后,运行程序,最后得到的结果为:

注意,此时的结果输出为.mp4格式的文件,文件位置为data/output/baby,可以发现相比于原始视频,输出视频在运动的部位变化幅度更大一些。

5.需要将切割后的每帧图像文件放置到vids文件夹下的自己名字的文件夹中。否则程序将报错。

谷歌微小部位运动算法使用步骤总结

1.将待进行分析的视频文件放在data/vids/ 文件路径下;

2.运行

avconv(ffmpeg) -i <path_to_input>/baby.mp4 -f image2 <path_to_output>/baby/%06d.png

将视频文件转为图像

例如:

ffmpeg -i /home/yourname/deep_motion_mag-master/data/vids/baby.mp4 -f image2 /home/yourname/deep_motion_mag-master/data/output/baby/%06d.png

3.将生成的图像文件夹拷贝到vids文件夹下,否则将会显示为找不到文件

4.运行

# 动态模式或静态模式下的帧序列处理
sh run_on_test_videos.sh <experiment_name> <video_name> <amplification_factor> <run_dynamic_mode>
# Temporal filtering based processing (frequency band pass filter)
sh run_temporal_on_test_videos.sh <experiment_name> <video_name> <amplification_factor> <low_cutoff> <high_cutoff> <sampling_rate> <n_filter_tap> <filter_type>

例如:

sh run_on_test_videos.sh o3f_hmhm2_bg_qnoise_mix4_nl_n_t_ds3 自己的名字 15 yes

谷歌MIT:微小运动放大算法的实现相关推荐

  1. 欧拉运动放大算法实现心率检测

    由于疫情的影响,一系列的非接触设备的到应用,如无人消毒机器人.红外测温.除了体温,心率也是衡量人体状况的重要指标.心率可以通过颈动脉.桡动脉还有皮肤颜色来进行提取.2012年,Wu等人基于欧拉视频放大 ...

  2. ECCV18 Oral | MIT谷歌视频运动放大让计算机辅助人眼“明察秋毫”

    出处"来自微信公众号:我爱计算机视觉" ECCV18 Oral | MIT&谷歌视频运动放大让计算机辅助人眼"明察秋毫" 原文:https://mp.w ...

  3. 游戏中常用的寻路算法的分享(3):A*算法的实现

    概述 剥除代码,A* 算法非常简单.算法维护两个集合:OPEN 集和 CLOSED 集.OPEN 集包含待检测节点.初始状态,OPEN集仅包含一个元素:开始位置.CLOSED集包含已检测节点.初始状态 ...

  4. 大模型自己跳过“无用”层,推理速度×3,谷歌MIT这个新方法火啦!

    来源:量子位 大语言模型用着爽,但推理速度实在太慢了? 而且,增加模型体积,推理效果也并不一定就比之前更好. 为了解决这一问题,谷歌MIT的研究人员提出了一个新框架CALM,让它自己来决定计算量. 如 ...

  5. 视频运动放大系列(1)- Motion Magnification 2005

    撰写内容基于原始论文和公开代码,若有不正确之处,欢迎各位留言指正! 本文解读Ce Liu 等人在 ACM SIGGRAPH 2005 展示的视频运动放大技术,该技术首先使用流体力学的拉格朗日运动方法分 ...

  6. python边缘检测代码_python Canny边缘检测算法的实现

    图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波.我们知道微分运算是求信号的变化率,具有加强高频分量的作用.在空域运算中来说,对图像的锐化就是计算微分.对于数字图像的离散信号, ...

  7. 关于寻路算法的一些思考(3):A*算法的实现

    概述 剥除代码,A* 算法非常简单.算法维护两个集合:OPEN 集和 CLOSED 集.OPEN 集包含待检测节点.初始状态,OPEN集仅包含一个元素:开始位置.CLOSED集包含已检测节点.初始状态 ...

  8. Bug2算法的实现(RobotBASIC环境中仿真)

    移动机器人智能的一个重要标志就是自主导航,而实现机器人自主导航有个基本要求--避障.之前简单介绍过Bug避障算法,但仅仅了解大致理论而不亲自动手实现一遍很难有深刻的印象,只能说似懂非懂.我不是天才,不 ...

  9. php 红包算法教程,php仿微信红包分配算法的实现方法

    php仿微信红包分配算法的实现方法 本文实例讲述了php仿微信红包分配算法的实现方法.分享给大家供大家参考,具体如下: /** * 红包分配:把一定金额随机分配给指定人数 * * @param int ...

最新文章

  1. String.Format()方法
  2. FastDFS之Linux下搭建
  3. 全新发布:《SQL语法速成手册》
  4. 近期神奇机器学习应用大赏
  5. 蓝桥杯-字串统计(java)
  6. javascript:使用document.getElementById读取数据为空分析
  7. Typescript尝试
  8. 44 | 套路篇:网络性能优化的几个思路(下)
  9. pyecharts第六节、水球图
  10. Go语言语法学习:打印九九乘法表
  11. Argon-Theme 一个非常好看的轻盈,简洁,美观的 WordPress 主题
  12. PL/SQL 结构与实例
  13. Linux自动删除n天前备份
  14. FLOWABLE流程引擎分析
  15. 个人网站可以申请微信授权登录吗?
  16. 爬虫反反爬学习资料整理
  17. 从 0 开始学游戏开发
  18. cdh6 添加新主机后,出现 Error sending messages to firehose
  19. A1088 Rational Arithmetic (20 分)
  20. C语言中chdir()使用

热门文章

  1. Chrome的下载与安装使用-Windows64位系统(2)【图文并茂的小白级教程】
  2. ERROR:C2678 二进制“<”: 没有找到接受“const _Ty”类型的左操作数的运算符(或没有可接受的转换)
  3. 湖南省株洲市谷歌高清卫星地图下载
  4. 西电2020计算机考研,西安电子科技大学研究生院,西电2020年考研成绩最新信息!...
  5. 2022-2028全球与中国脚手架市场现状及未来发展趋势
  6. 财经365独家:基建物业投资路线图
  7. zxx学习日报1110
  8. 【数据库】解释关系代数中的象集、除运算
  9. 盘点丨2017年国内最酷的10家大数据创业公司
  10. 读书笔记 - 智能体技术在城市交通信号控制系统中应用综述2014