An apparatus for performing three-dimensional, 3D, visual recognition using a 3D convolution neural network, CNN, comprising: one or more processors including a graphics processor to process data; and a memory for storage of data, including feature maps; wherein the one or more processors are to provide for sparse 3D convolution acceleration in a convolutional layer of the 3D CNN by applying a shared 3D convolutional kernel/filter to an input feature map to produce an output feature map, including: linearly increasing sparsity of the input feature map by partitioning the input feature map into a plurality of disjoint input groups, wherein the input feature map is a multidimensional array of data that defines the various color components of an input image provided as an input to the 3D CNN; generation of a plurality of disjoint output groups corresponding to the plurality of disjoint input groups by, for each input group of the plurality of disjoint input groups, performing, a convolution calculation represented by the shared 3D convolutional kernel/filter on all input feature values associated with all or a subset of active/valid voxels of the input group to produce corresponding output feature values within a corresponding output group of the plurality of disjoint output groups; and outputting the output feature map by sequentially stacking the plurality of disjoint output groups, wherein the output feature map is used as an input to a fully connected layer of the 3D CNN to generate a classification value for the input image. one or more processors including a graphics processor to process data; and a memory for storage of data, including feature maps; wherein the one or more processors are to provide for sparse 3D convolution acceleration in a convolutional layer of the 3D CNN by applying a shared 3D convolutional kernel/filter to an input feature map to produce an output feature map, including: linearly increasing sparsity of the input feature map by partitioning the input feature map into a plurality of disjoint input groups, wherein the input feature map is a multidimensional array of data that defines the various color components of an input image provided as an input to the 3D CNN; generation of a plurality of disjoint output groups corresponding to the plurality of disjoint input groups by, for each input group of the plurality of disjoint input groups, performing, a convolution calculation represented by the shared 3D convolutional kernel/filter on all input feature values associated with all or a subset of active/valid voxels of the input group to produce corresponding output feature values within a corresponding output group of the plurality of disjoint output groups; and outputting the output feature map by sequentially stacking the plurality of disjoint output groups, wherein the output feature map is used as an input to a fully connected layer of the 3D CNN to generate a classification value for the input image. linearly increasing sparsity of the input feature map by partitioning the input feature map into a plurality of disjoint input groups, wherein the input feature map is a multidimensional array of data that defines the various color components of an input image provided as an input to the 3D CNN; generation of a plurality of disjoint output groups corresponding to the plurality of disjoint input groups by, for each input group of the plurality of disjoint input groups, performing, a convolution calculation represented by the shared 3D convolutional kernel/filter on all input feature values associated with all or a subset of active/valid voxels of the input group to produce corresponding output feature values within a corresponding output group of the plurality of disjoint output groups; and outputting the output feature map by sequentially stacking the plurality of disjoint output groups, wherein the output feature map is used as an input to a fully connected layer of the 3D CNN to generate a classification value for the input image.