(win7,无GPU,caffe python)
https://people.eecs.berkeley.edu/~lisa_anne/LRCN_video有关于LRCN下载与运行的全部说明,其中文翻译附在后面。(虽然很简单,但是,还是觉得汉语更容易看懂)
只要照它的步骤做就可以了。但是,我搞了很久,出现了一些问题。
1.用的文件都在examples\lrcn_activity_recognition下面。按它的步骤,要进行测试,首先要准备UCF101(下载了很久)的RGB帧文件。用的文件是extract_frames.sh,它要在linux环境下运行。Win7下,Git,cygwin等等都是可以的。文件中有个echo是说明如何用的。之前,运行还是好用的,不知道安装了什么软件后,就不能运行了。基础出错说明是,对要存放RGB文件的文件夹中只读的,没有权限。找了很多办法,发现win7下面的文件夹都是只读的,而且改不掉。这对win7下面的操作是没有影响的。但是,linux应用环境有时就不能用。获得administrator权限也不行,以root身份也不行。后面发现,ffmpeg实际上在win下可以直接运行,就仿这句的格式就行,中win7下的命令窗口运行。
ffmpeg -i $1 -r $FRAMES $BNAME/$BNAME.%4d.jpg
2.由RGB连续帧生成光流的帧,用的是[1]的程序,要自己下载。但是,有2个版本,要找到下载后有mex_OF.mexa64,32这样文件的那个版。用matlab运行create_flow_images_LRCN.m。注意其中的目录位置。
3. 最好是用cygwin,要右击cygwinterminal,之后以管理员身份运行,安装protobuf
Pip install protobuf
不然调入caffe模型时,要出错,说找不到protobuf
4.下载那些prototxt,caffemodel文件。放在examples\lrcn_activity_recognition下面就可以。
5.准备分类测试数据。我把它们放在另外的文件夹,因为文件很多,都放在examples\lrcn_activity_recognition下面不方便。在D:\ucf\fras下面放某个avi释放出来的RGB文件。 在d:\ucf\opfras下面放由这些RGB计算出来的光流图像文件,文件个数应该比上个文件夹少一个。d:\ucf下面放那个avi文件。(这个avi文件是源头)
6.这些准备好了就可以运行classify_video.py。我用的是spyder3。因为,我机器上的caffe是之前编译过了,没有lstm层。所以,运行到RGB_lstm_net= caffe.Net(lstm_model, RGB_lstm,caffe.TEST)时出错了。说是kernaldied ,restarting 类似的提示。要按这个博客”caffe-windows新层添加-LSTM”(百度一下,可以找到)把lstm,recurrent等层加上,再编译caffe,才能用。
7.可以运行了,不过有些路径方面的代码需要修改。只贴出要改的部分,可以参考。
import numpy as np
import glob
caffe_root ='e:/caffe-master/build/x64/release' #这是编译后的路径
import sys
sys.path.insert(0,'e:/caffe-master/build/x64/release/pycaffe') #原程序与我的路径不同
import caffe
caffe.set_mode_cpu()
#caffe.set_device(0)#注释掉了,因为没有GPU
import pickle
RGB_video_path ='d:/ucf/fras' #这2行最后不要加/
flow_video_path ='d:/ucf/opfras'
if len(sys.argv)> 1:
video = sys.argv[1]
else:
video = 'd:/ucf/v_YoYo_g25_c03.avi'
#Initializetransformers
definitialize_transformer(image_mean, is_flow):
….
transformer.set_transpose('data', (2, 0, 1))
#transformer.set_is_flow('data', is_flow) 这行注释掉了,好像没这个方法
return transformer
……
# Extract list offrames in video
RGB_frames =glob.glob('%s/*.jpg' %(RGB_video_path)) #这地方原程序是错的,.jpg的目录
flow_frames =glob.glob('%s/*.jpg' %(flow_video_path)) #看到这2行有/,所以前面不加
第1次用python运行程序,所以花很多时间研究语法,才找到问题。
https://people.eecs.berkeley.edu/~lisa_anne/LRCN_video文章网页翻译
本页展示如何重复行为识别实验,在论文long-termrecurrent convolutional networks for visual recognition and description
代码:所有代码来训练行为识别模型的,在lstm_video_deploy夹中,lisaanne hendrickss’ caffe fork。所有重复实验需要的代码均在examples/lrcn_activity_recognition.
数据:模型训练用的数据集是ucf-101。流是用[1]来计算的。
模型:单帧模型和LRCN模型可以发现在这。连接
**注意**一些人不能做,,,,你可以在这发现RGB文件和流帧在这里,连接。
重新训练LRCN行为识别模型的步骤如下:
1.提取RGBframes。Extract_frames.sh可以将UCF-101的.avi文件提取出.jpg的图片。提取是30帧/秒。
2.计算流帧:从[1]下载代码后,可以用create_flow_images_LRCN.m来计算流帧。流帧的例子yoyo_g25_c03视频提取的,这里有,连接。
3.训练单帧模型:微调混合模型(有连接)用frames来训练一个单帧模型。用run_singleframe_rgb.sh来训练RGB。用run_singleframe_flow.sh来训练流模型。确定修改root_folder参数在train_test_singleframe_rgb.prototxt,train_test_singleframe_flow.prototxt。我训练好的模型在这,连接.
4.训练LRCN模型:用单帧模型作为起点,训练LRCN模型,通过运行run_lstm_RGB.sh,run_lstm_flow.sh. LRCN的数据层是pythonlayer ( sequence_input_layer.py)。确认设置WITH_PYTHON_LAYER:=1 在makefile.config。 在sequence_input_layer.py中,flow_frames和RGB_frames可能要改路径。我训练好的模型连接。
5.评估模型:classify.py展示 了如何分类一个视频用单帧模型和LRCN模型。确认要调整路径,RGB_video_path,flow_video_path。 你也可以评估模型,通过运行LRCN_evaluate中的代码。