A system, comprising: multiple 3D cameras positioned relative to an environment to sense the environment from different viewpoints; a processing device; and a storage device storing computer-executable instructions which, when executed by the processing device, cause the processing device to: receive depth data sensed by the multiple 3D cameras over time, determine voxel occupancy of the environment by combining the depth data collected from the multiple 3D cameras, wherein the voxel occupancy is determined based on calibrated red green blue depth, RGBD, images for each camera, and taking the intersection of the voxel occupancies of the multiple 3D cameras, construct a 3D solid volume representation using the voxel occupancy wherein the 3D solid volume representation is a 3D map of voxel occupancy, select a subject using the 3D solid volume representation comprising, detecting a subject candidate by locating a local maximum with a given width and height on a Gaussian filtered, top-down image of the 3D solid volume representation, establishing a partial volume around the subject candidate, wherein the partial volume is a portion of the 3D solid volume representation, and using a trained classifying model to classify whether the partial volume contains a subject, track the selected subject using the depth data over time, recognize an action of the tracked subject by applying a trained deep convolutional neural network to a sequence of partial volumes of the tracked subject, and output the recognized action. multiple 3D cameras positioned relative to an environment to sense the environment from different viewpoints; a processing device; and a storage device storing computer-executable instructions which, when executed by the processing device, cause the processing device to: receive depth data sensed by the multiple 3D cameras over time, determine voxel occupancy of the environment by combining the depth data collected from the multiple 3D cameras, wherein the voxel occupancy is determined based on calibrated red green blue depth, RGBD, images for each camera, and taking the intersection of the voxel occupancies of the multiple 3D cameras, construct a 3D solid volume representation using the voxel occupancy wherein the 3D solid volume representation is a 3D map of voxel occupancy, select a subject using the 3D solid volume representation comprising, detecting a subject candidate by locating a local maximum with a given width and height on a Gaussian filtered, top-down image of the 3D solid volume representation, establishing a partial volume around the subject candidate, wherein the partial volume is a portion of the 3D solid volume representation, and using a trained classifying model to classify whether the partial volume contains a subject, track the selected subject using the depth data over time, recognize an action of the tracked subject by applying a trained deep convolutional neural network to a sequence of partial volumes of the tracked subject, and output the recognized action. receive depth data sensed by the multiple 3D cameras over time, determine voxel occupancy of the environment by combining the depth data collected from the multiple 3D cameras, wherein the voxel occupancy is determined based on calibrated red green blue depth, RGBD, images for each camera, and taking the intersection of the voxel occupancies of the multiple 3D cameras, construct a 3D solid volume representation using the voxel occupancy wherein the 3D solid volume representation is a 3D map of voxel occupancy, select a subject using the 3D solid volume representation comprising, detecting a subject candidate by locating a local maximum with a given width and height on a Gaussian filtered, top-down image of the 3D solid volume representation, establishing a partial volume around the subject candidate, wherein the partial volume is a portion of the 3D solid volume representation, and using a trained classifying model to classify whether the partial volume contains a subject, establishing a partial volume around the subject candidate, wherein the partial volume is a portion of the 3D solid volume representation, and using a trained classifying model to classify whether the partial volume contains a subject, track the selected subject using the depth data over time, recognize an action of the tracked subject by applying a trained deep convolutional neural network to a sequence of partial volumes of the tracked subject, and output the recognized action.