imatge-upc / activitynet-2016-cvprw

Tools to participate in the ActivityNet Challenge 2016 (NIPSW 2016)
https://imatge-upc.github.io/activitynet-2016-cvprw/
MIT License
195 stars 85 forks source link

run_all_pipeline in CPU mode #15

Closed kousik97 closed 7 years ago

kousik97 commented 7 years ago

Is it possible to run the pipeline in CPU mode ? If so, what changes must I do ? I get the following error while trying to run in CPU mode :

Using Theano backend. Reading Video... Duration: 130.6s FPS: 30.0 Number of frames: 3919 Loading C3D network... Traceback (most recent call last): File "scripts/run_all_pipeline.py", line 188, in args.activity_threshold File "scripts/run_all_pipeline.py", line 40, in run_all_pipeline model = C3D_conv_features(True) File "scripts/run_all_pipeline.py", line 99, in C3D_conv_features trainable=False)) File "/usr/local/lib/python2.7/dist-packages/keras/models.py", line 114, in add layer.create_input_layer(batch_input_shape, input_dtype) File "/usr/local/lib/python2.7/dist-packages/keras/engine/topology.py", line 341, in create_input_layer self(x) File "/usr/local/lib/python2.7/dist-packages/keras/engine/topology.py", line 485, in call self.add_inbound_node(inbound_layers, node_indices, tensor_indices) File "/usr/local/lib/python2.7/dist-packages/keras/engine/topology.py", line 543, in add_inbound_node Node.create_node(self, inbound_layers, node_indices, tensor_indices) File "/usr/local/lib/python2.7/dist-packages/keras/engine/topology.py", line 148, in create_node output_tensors = to_list(outbound_layer.call(input_tensors[0], mask=input_masks[0])) File "/usr/local/lib/python2.7/dist-packages/keras/layers/convolutional.py", line 552, in call filter_shape=self.W_shape) File "/usr/local/lib/python2.7/dist-packages/keras/backend/theano_backend.py", line 919, in conv3d conv_out = dnn.dnn_conv3d(x, kernel, border_mode=border_mode) File "/usr/local/lib/python2.7/dist-packages/theano/sandbox/cuda/dnn.py", line 1257, in dnn_conv3d return GpuDnnConv3d(algo=algo)(img, kerns, out, desc) File "/usr/local/lib/python2.7/dist-packages/theano/sandbox/cuda/dnn.py", line 513, in init super(GpuDnnConv3d, self).init(inplace=inplace, algo=algo) File "/usr/local/lib/python2.7/dist-packages/theano/sandbox/cuda/dnn.py", line 328, in init if version() < (3000, 3000): File "/usr/local/lib/python2.7/dist-packages/theano/sandbox/cuda/init.py", line 407, in dnn_version dnn_available.msg) Exception: ("We can't determine the cudnn version as it is not available", 'CUDA not available')

albertomontesg commented 7 years ago

What happened is that, on early stages of the project, the only implementations of conv3D and maxpool3D where done in Theano, but the maxpool3D was calling a bad cuda pooling operation (some memory problems at the GPU tent to raise) so I fork Keras and fixed the called of the 3D pooling at Keras code. I guess that because of this, the code even trying to run with CPU only, will call a Theano function which will call a cuda function.

The only solution is to port all the codebase to the newer versions of the frameworks which this problems (I guess) have been solved, but this will require an amount of work which right now I can not afford.

Sorry to not be more helpful with your problem.