Noscope是在2017年提出的大规模数据视频的查询算法,通过采取差分检测器对视频帧的提取极大地提升运行速度,并且在检测时使用的轻量级CNN算法也很好地加速,是一种很好的视频查询加速思路。
项目的github地址:noscope
根据官方项目的要求,我们首先配置如下:
ubuntu 16.04 + cuda 8.0 + cudnn 5.1 + opencv 3.2 + gcc 5.4 + python 2.7+ bazel 0.4.5
如果懂得如何配置docker的话,也可以直接在docker hub上直接搜索noscope,上面有配好的镜像noscope的docker镜像(不过镜像里面有些需要改动的地方,具体修改方法参见下文安装方法,改动的地方是:1. 安装cudnn5.1,2. 卸载bazel0.7.0再重新安装bazel0.4.5, 3. 安装ffmpeg)
确保系统中安装有ubuntu16.04 + python 2.7 + cuda 8.0 + cudnn 5.1。如果cuda和cudnn的安装不会的话可以参考cuda及对应的cudnn安装。
确保安装好cuda后,进行以下命令的安装:
pip install tensorflow-gpu==0.12.0 keras==1.2
如果安装过程中没有错误,最后显示成功安装即完成。
参照官方给的安装教程:opencv3.2官方教程,不过有一些需要特别注意的地方。
sudo apt-get install ffmpeg
。bazel是一款用来编译tensorflow的工具。首先如果我们根据docker安装的话就要先卸载,否则就会出现版本不对的错误。进入tensorflow-noscope的目录,打开文件configure.py,在第967行可以发现系统会检查你的bazel版本是不是0.4.5,如图所示。
chmod +x bazel-0.4.5-installer-linux-x86_64.sh
sudo apt-get install pkg-config zip g++ zlib1g-dev unzip python
./bazel-0.4.5-installer-linux-x86_64.sh --user
,后面加的–user是为了把其写入用户变量里。bazel -h
,如图出现对应的版本号即安装成功(也表明系统目前默认的bazel版本是0.4.5)。sudo apt-get install openjdk-8-jdk
安装对应的jdk再重新安装即可。如果你是使用上述的镜像,那么还需要做的一件事就是进行bazel的卸载再安装0.4.5版本的,否则后面配置是会报错。
卸载过程:
find / -name bazel
至此,必备的基本环境已经配齐了,下一步就是进行环境的编译。
按照官方的教程, 下载tensorflow-noscope。(在此贴一个下载加速的方法,在githubcom后面加上pmjs能快速下载),即git clone .git
。
因为有时在进行到git submodule update
这一步时会出现无法连接到github的现象,因此可以在执行git submodule init
之后打开tensorflow-noscope下的.gitmodules文件,对应上述加速github办法,如下图。
运行./configure
。除了cuda,其他都可以选N,并且cudnn选择时,选上5。下图是我的过程,可以作为参考。
cd tensorflow
,./noscope/build.sh
(一定要运行,否则就会报很多错(比如crosstool_wrapper_driver_is_not_gcc failed: error executing command的错误),我搞了好几天。)./noscope/darknet/convert.sh
。否则会出现’//tensorflow/noscope/darknet:src/activation_kernels.cu’ is misplaced here (expected , .cpp, .cxx, .c++, .C, .c, .h, .hh, .hpp, .hxx, .inc, .S, .s, .asm, .a, .lib, .pic.a, .lo, .pic.lo, .so, .dylib, .dll, .o or .pic.o). Since this rule was created by the macro ‘tf_kernel_library’, the error might have been caused by the macro的错误。完成上述的编译前步骤之后就可以进行编译了。bazel build -c opt --copt=-mavx2 --config=cuda noscope
编译过程中如果出现找不到darknet.h的错误,请把此文件从include复制到src,即cp include/darknet.h src/
。
编译的过程需要挺长时间的,如果最后没有看到EEROR,那么说明编译就成功了。
pip install -e ./
。pip install -
mkdir data
cd data
mkdir videos csv cnn-avg cnn-models experiments
将46行的examples改为example,如图。
我是根据data官方的数据集跑的,使用的是jackson-town-square。将对应的.mp4文件放置在data下的videos里,将.csv文件放置在csv目录下。至此,准备工作结束。
PS:官方数据集下载会存在这样那样的问题,可以到此处下载。
在noscope目录下,运行命令:example/run.sh
,接下来就是漫长的等待了。
在运行结束后,输出文件会自动存在experimens中的对应视频名字目录下,例如,我的summary.csv。
此外,在不同的帧间隔下有不同的检测结果,Noscope都把它们写入CSV,而不是展示出来,例如我的:
Noscope是不会像YOLO那样描出物体检测的框框的,只有检测到的置信度和对应是否有检测到。
本文发布于:2024-01-31 17:50:17,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170669461830290.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |