caffe训练LRCN



(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中的代码。

猜你喜欢

转载自blog.csdn.net/xunan003/article/details/81010819
今日推荐