├── ActionsEstLoader.py ├── Actionsrecognition ├── Models.py ├── Utils.py ├── __pycache__ │ ├── Models.cpython-36.pyc │ ├── Models.cpython-37.pyc │ ├── Utils.cpython-36.pyc │ ├── Utils.cpython-37.pyc │ └── other_Model.cpython-37.pyc ├── test.py └── train.py ├── README.md ├── Track ├── Tracker.py ├── __pycache__ │ ├── Tracker.cpython-36.pyc │ ├── Tracker.cpython-37.pyc │ ├── iou_matching.cpython-36.pyc │ ├── iou_matching.cpython-37.pyc │ ├── kalman_filter.cpython-36.pyc │ ├── kalman_filter.cpython-37.pyc │ ├── linear_assignment.cpython-36.pyc │ ├── linear_assignment.cpython-37.pyc │ └── yolo_sort.cpython-37.pyc ├── iou_matching.py ├── kalman_filter.py ├── linear_assignment.py └── yolo_sort.py ├── __pycache__ └── ActionsEstLoader.cpython-37.pyc ├── build ├── lib.linux-x86_64-3.7 │ └── yolox │ │ └── _C.cpython-37m-x86_64-linux-gnu.so └── temp.linux-x86_64-3.7 │ ├── .ninja_deps │ ├── .ninja_log │ ├── build.ninja │ └── home │ └── lyg │ └── workspace │ └── AAction │ └── yolox │ └── layers │ └── csrc │ ├── cocoeval │ └── cocoeval.o │ └── vision.o ├── exps ├── default │ ├── __pycache__ │ │ └── yolox_s.cpython-37.pyc │ ├── nano.py │ ├── yolov3.py │ ├── yolox_l.py │ ├── yolox_m.py │ ├── yolox_s.py │ ├── yolox_tiny.py │ └── yolox_x.py └── example │ ├── custom │ ├── nano.py │ └── yolox_s.py │ └── yolox_voc │ ├── __pycache__ │ └── yolox_voc_s.cpython-37.pyc │ └── yolox_voc_s.py ├── mmpose ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-37.pyc │ ├── deprecated.cpython-37.pyc │ └── version.cpython-37.pyc ├── apis │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ ├── inference.cpython-37.pyc │ │ ├── inference_3d.cpython-37.pyc │ │ ├── inference_tracking.cpython-37.pyc │ │ ├── test.cpython-37.pyc │ │ └── train.cpython-37.pyc │ ├── inference.py │ ├── inference_3d.py │ ├── inference_tracking.py │ ├── test.py │ └── train.py ├── core │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ └── distributed_wrapper.cpython-37.pyc │ ├── camera │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── camera_base.cpython-37.pyc │ │ │ └── single_camera.cpython-37.pyc │ │ ├── camera_base.py │ │ └── single_camera.py │ ├── distributed_wrapper.py │ ├── evaluation │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── bottom_up_eval.cpython-37.pyc │ │ │ ├── eval_hooks.cpython-37.pyc │ │ │ ├── mesh_eval.cpython-37.pyc │ │ │ ├── pose3d_eval.cpython-37.pyc │ │ │ └── top_down_eval.cpython-37.pyc │ │ ├── bottom_up_eval.py │ │ ├── eval_hooks.py │ │ ├── mesh_eval.py │ │ ├── pose3d_eval.py │ │ └── top_down_eval.py │ ├── fp16 │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── decorators.cpython-37.pyc │ │ │ ├── hooks.cpython-37.pyc │ │ │ └── utils.cpython-37.pyc │ │ ├── decorators.py │ │ ├── hooks.py │ │ └── utils.py │ ├── optimizer │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ └── builder.cpython-37.pyc │ │ └── builder.py │ ├── post_processing │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── group.cpython-37.pyc │ │ │ ├── nms.cpython-37.pyc │ │ │ ├── one_euro_filter.cpython-37.pyc │ │ │ └── post_transforms.cpython-37.pyc │ │ ├── group.py │ │ ├── nms.py │ │ ├── one_euro_filter.py │ │ └── post_transforms.py │ ├── utils │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── dist_utils.cpython-37.pyc │ │ │ └── regularizations.cpython-37.pyc │ │ ├── dist_utils.py │ │ └── regularizations.py │ └── visualization │ │ ├── __init__.py │ │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ ├── effects.cpython-37.pyc │ │ └── image.cpython-37.pyc │ │ ├── effects.py │ │ └── image.py ├── datasets │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ ├── builder.cpython-37.pyc │ │ └── dataset_info.cpython-37.pyc │ ├── builder.py │ ├── dataset_info.py │ ├── dataset_wrappers.py │ ├── datasets │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ └── __init__.cpython-37.pyc │ │ ├── animal │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ ├── animal_ap10k_dataset.cpython-37.pyc │ │ │ │ ├── animal_atrw_dataset.cpython-37.pyc │ │ │ │ ├── animal_fly_dataset.cpython-37.pyc │ │ │ │ ├── animal_horse10_dataset.cpython-37.pyc │ │ │ │ ├── animal_locust_dataset.cpython-37.pyc │ │ │ │ ├── animal_macaque_dataset.cpython-37.pyc │ │ │ │ ├── animal_pose_dataset.cpython-37.pyc │ │ │ │ └── animal_zebra_dataset.cpython-37.pyc │ │ │ ├── animal_ap10k_dataset.py │ │ │ ├── animal_atrw_dataset.py │ │ │ ├── animal_base_dataset.py │ │ │ ├── animal_fly_dataset.py │ │ │ ├── animal_horse10_dataset.py │ │ │ ├── animal_locust_dataset.py │ │ │ ├── animal_macaque_dataset.py │ │ │ ├── animal_pose_dataset.py │ │ │ └── animal_zebra_dataset.py │ │ ├── base │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ ├── kpt_2d_sview_rgb_img_bottom_up_dataset.cpython-37.pyc │ │ │ │ ├── kpt_2d_sview_rgb_img_top_down_dataset.cpython-37.pyc │ │ │ │ ├── kpt_3d_sview_kpt_2d_dataset.cpython-37.pyc │ │ │ │ └── kpt_3d_sview_rgb_img_top_down_dataset.cpython-37.pyc │ │ │ ├── kpt_2d_sview_rgb_img_bottom_up_dataset.py │ │ │ ├── kpt_2d_sview_rgb_img_top_down_dataset.py │ │ │ ├── kpt_3d_sview_kpt_2d_dataset.py │ │ │ └── kpt_3d_sview_rgb_img_top_down_dataset.py │ │ ├── body3d │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ ├── body3d_h36m_dataset.cpython-37.pyc │ │ │ │ ├── body3d_mpi_inf_3dhp_dataset.cpython-37.pyc │ │ │ │ └── body3d_semi_supervision_dataset.cpython-37.pyc │ │ │ ├── body3d_base_dataset.py │ │ │ ├── body3d_h36m_dataset.py │ │ │ ├── body3d_mpi_inf_3dhp_dataset.py │ │ │ └── body3d_semi_supervision_dataset.py │ │ ├── bottom_up │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ ├── bottom_up_aic.cpython-37.pyc │ │ │ │ ├── bottom_up_coco.cpython-37.pyc │ │ │ │ ├── bottom_up_coco_wholebody.cpython-37.pyc │ │ │ │ ├── bottom_up_crowdpose.cpython-37.pyc │ │ │ │ └── bottom_up_mhp.cpython-37.pyc │ │ │ ├── bottom_up_aic.py │ │ │ ├── bottom_up_base_dataset.py │ │ │ ├── bottom_up_coco.py │ │ │ ├── bottom_up_coco_wholebody.py │ │ │ ├── bottom_up_crowdpose.py │ │ │ └── bottom_up_mhp.py │ │ ├── face │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ ├── face_300w_dataset.cpython-37.pyc │ │ │ │ ├── face_aflw_dataset.cpython-37.pyc │ │ │ │ ├── face_coco_wholebody_dataset.cpython-37.pyc │ │ │ │ ├── face_cofw_dataset.cpython-37.pyc │ │ │ │ └── face_wflw_dataset.cpython-37.pyc │ │ │ ├── face_300w_dataset.py │ │ │ ├── face_aflw_dataset.py │ │ │ ├── face_base_dataset.py │ │ │ ├── face_coco_wholebody_dataset.py │ │ │ ├── face_cofw_dataset.py │ │ │ └── face_wflw_dataset.py │ │ ├── fashion │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ └── deepfashion_dataset.cpython-37.pyc │ │ │ ├── deepfashion_dataset.py │ │ │ └── fashion_base_dataset.py │ │ ├── hand │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ ├── freihand_dataset.cpython-37.pyc │ │ │ │ ├── hand_coco_wholebody_dataset.cpython-37.pyc │ │ │ │ ├── interhand2d_dataset.cpython-37.pyc │ │ │ │ ├── interhand3d_dataset.cpython-37.pyc │ │ │ │ ├── onehand10k_dataset.cpython-37.pyc │ │ │ │ ├── panoptic_hand2d_dataset.cpython-37.pyc │ │ │ │ └── rhd2d_dataset.cpython-37.pyc │ │ │ ├── freihand_dataset.py │ │ │ ├── hand_base_dataset.py │ │ │ ├── hand_coco_wholebody_dataset.py │ │ │ ├── interhand2d_dataset.py │ │ │ ├── interhand3d_dataset.py │ │ │ ├── onehand10k_dataset.py │ │ │ ├── panoptic_hand2d_dataset.py │ │ │ └── rhd2d_dataset.py │ │ ├── mesh │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ ├── mesh_adv_dataset.cpython-37.pyc │ │ │ │ ├── mesh_base_dataset.cpython-37.pyc │ │ │ │ ├── mesh_h36m_dataset.cpython-37.pyc │ │ │ │ ├── mesh_mix_dataset.cpython-37.pyc │ │ │ │ └── mosh_dataset.cpython-37.pyc │ │ │ ├── mesh_adv_dataset.py │ │ │ ├── mesh_base_dataset.py │ │ │ ├── mesh_h36m_dataset.py │ │ │ ├── mesh_mix_dataset.py │ │ │ └── mosh_dataset.py │ │ └── top_down │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── topdown_aic_dataset.cpython-37.pyc │ │ │ ├── topdown_coco_dataset.cpython-37.pyc │ │ │ ├── topdown_coco_wholebody_dataset.cpython-37.pyc │ │ │ ├── topdown_crowdpose_dataset.cpython-37.pyc │ │ │ ├── topdown_h36m_dataset.cpython-37.pyc │ │ │ ├── topdown_halpe_dataset.cpython-37.pyc │ │ │ ├── topdown_jhmdb_dataset.cpython-37.pyc │ │ │ ├── topdown_mhp_dataset.cpython-37.pyc │ │ │ ├── topdown_mpii_dataset.cpython-37.pyc │ │ │ ├── topdown_mpii_trb_dataset.cpython-37.pyc │ │ │ ├── topdown_ochuman_dataset.cpython-37.pyc │ │ │ └── topdown_posetrack18_dataset.cpython-37.pyc │ │ │ ├── topdown_aic_dataset.py │ │ │ ├── topdown_base_dataset.py │ │ │ ├── topdown_coco_dataset.py │ │ │ ├── topdown_coco_wholebody_dataset.py │ │ │ ├── topdown_crowdpose_dataset.py │ │ │ ├── topdown_h36m_dataset.py │ │ │ ├── topdown_halpe_dataset.py │ │ │ ├── topdown_jhmdb_dataset.py │ │ │ ├── topdown_mhp_dataset.py │ │ │ ├── topdown_mpii_dataset.py │ │ │ ├── topdown_mpii_trb_dataset.py │ │ │ ├── topdown_ochuman_dataset.py │ │ │ └── topdown_posetrack18_dataset.py │ ├── pipelines │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── bottom_up_transform.cpython-37.pyc │ │ │ ├── hand_transform.cpython-37.pyc │ │ │ ├── loading.cpython-37.pyc │ │ │ ├── mesh_transform.cpython-37.pyc │ │ │ ├── pose3d_transform.cpython-37.pyc │ │ │ ├── shared_transform.cpython-37.pyc │ │ │ └── top_down_transform.cpython-37.pyc │ │ ├── bottom_up_transform.py │ │ ├── hand_transform.py │ │ ├── loading.py │ │ ├── mesh_transform.py │ │ ├── pose3d_transform.py │ │ ├── shared_transform.py │ │ └── top_down_transform.py │ ├── registry.py │ └── samplers │ │ ├── __init__.py │ │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ └── distributed_sampler.cpython-37.pyc │ │ └── distributed_sampler.py ├── deprecated.py ├── models │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ └── builder.cpython-37.pyc │ ├── backbones │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── alexnet.cpython-37.pyc │ │ │ ├── base_backbone.cpython-37.pyc │ │ │ ├── cpm.cpython-37.pyc │ │ │ ├── hourglass.cpython-37.pyc │ │ │ ├── hourglass_ae.cpython-37.pyc │ │ │ ├── hrnet.cpython-37.pyc │ │ │ ├── litehrnet.cpython-37.pyc │ │ │ ├── mobilenet_v2.cpython-37.pyc │ │ │ ├── mobilenet_v3.cpython-37.pyc │ │ │ ├── mspn.cpython-37.pyc │ │ │ ├── regnet.cpython-37.pyc │ │ │ ├── resnest.cpython-37.pyc │ │ │ ├── resnet.cpython-37.pyc │ │ │ ├── resnext.cpython-37.pyc │ │ │ ├── rsn.cpython-37.pyc │ │ │ ├── scnet.cpython-37.pyc │ │ │ ├── seresnet.cpython-37.pyc │ │ │ ├── seresnext.cpython-37.pyc │ │ │ ├── shufflenet_v1.cpython-37.pyc │ │ │ ├── shufflenet_v2.cpython-37.pyc │ │ │ ├── tcn.cpython-37.pyc │ │ │ ├── vgg.cpython-37.pyc │ │ │ └── vipnas_resnet.cpython-37.pyc │ │ ├── alexnet.py │ │ ├── base_backbone.py │ │ ├── cpm.py │ │ ├── hourglass.py │ │ ├── hourglass_ae.py │ │ ├── hrnet.py │ │ ├── litehrnet.py │ │ ├── mobilenet_v2.py │ │ ├── mobilenet_v3.py │ │ ├── mspn.py │ │ ├── regnet.py │ │ ├── resnest.py │ │ ├── resnet.py │ │ ├── resnext.py │ │ ├── rsn.py │ │ ├── scnet.py │ │ ├── seresnet.py │ │ ├── seresnext.py │ │ ├── shufflenet_v1.py │ │ ├── shufflenet_v2.py │ │ ├── tcn.py │ │ ├── utils │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ ├── channel_shuffle.cpython-37.pyc │ │ │ │ ├── inverted_residual.cpython-37.pyc │ │ │ │ ├── make_divisible.cpython-37.pyc │ │ │ │ ├── se_layer.cpython-37.pyc │ │ │ │ └── utils.cpython-37.pyc │ │ │ ├── channel_shuffle.py │ │ │ ├── inverted_residual.py │ │ │ ├── make_divisible.py │ │ │ ├── se_layer.py │ │ │ └── utils.py │ │ ├── vgg.py │ │ └── vipnas_resnet.py │ ├── builder.py │ ├── detectors │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── associative_embedding.cpython-37.pyc │ │ │ ├── base.cpython-37.pyc │ │ │ ├── interhand_3d.cpython-37.pyc │ │ │ ├── mesh.cpython-37.pyc │ │ │ ├── multi_task.cpython-37.pyc │ │ │ ├── pose_lifter.cpython-37.pyc │ │ │ └── top_down.cpython-37.pyc │ │ ├── associative_embedding.py │ │ ├── base.py │ │ ├── interhand_3d.py │ │ ├── mesh.py │ │ ├── multi_task.py │ │ ├── pose_lifter.py │ │ └── top_down.py │ ├── heads │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── ae_higher_resolution_head.cpython-37.pyc │ │ │ ├── ae_multi_stage_head.cpython-37.pyc │ │ │ ├── ae_simple_head.cpython-37.pyc │ │ │ ├── deconv_head.cpython-37.pyc │ │ │ ├── deeppose_regression_head.cpython-37.pyc │ │ │ ├── hmr_head.cpython-37.pyc │ │ │ ├── interhand_3d_head.cpython-37.pyc │ │ │ ├── temporal_regression_head.cpython-37.pyc │ │ │ ├── topdown_heatmap_base_head.cpython-37.pyc │ │ │ ├── topdown_heatmap_multi_stage_head.cpython-37.pyc │ │ │ ├── topdown_heatmap_simple_head.cpython-37.pyc │ │ │ └── vipnas_heatmap_simple_head.cpython-37.pyc │ │ ├── ae_higher_resolution_head.py │ │ ├── ae_multi_stage_head.py │ │ ├── ae_simple_head.py │ │ ├── deconv_head.py │ │ ├── deeppose_regression_head.py │ │ ├── hmr_head.py │ │ ├── interhand_3d_head.py │ │ ├── temporal_regression_head.py │ │ ├── topdown_heatmap_base_head.py │ │ ├── topdown_heatmap_multi_stage_head.py │ │ ├── topdown_heatmap_simple_head.py │ │ └── vipnas_heatmap_simple_head.py │ ├── losses │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── classfication_loss.cpython-37.pyc │ │ │ ├── mesh_loss.cpython-37.pyc │ │ │ ├── mse_loss.cpython-37.pyc │ │ │ ├── multi_loss_factory.cpython-37.pyc │ │ │ └── regression_loss.cpython-37.pyc │ │ ├── classfication_loss.py │ │ ├── mesh_loss.py │ │ ├── mse_loss.py │ │ ├── multi_loss_factory.py │ │ └── regression_loss.py │ ├── misc │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ └── discriminator.cpython-37.pyc │ │ └── discriminator.py │ ├── necks │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ └── gap_neck.cpython-37.pyc │ │ └── gap_neck.py │ ├── registry.py │ └── utils │ │ ├── __init__.py │ │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ ├── geometry.cpython-37.pyc │ │ ├── ops.cpython-37.pyc │ │ └── smpl.cpython-37.pyc │ │ ├── geometry.py │ │ ├── ops.py │ │ └── smpl.py ├── utils │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ ├── collect_env.cpython-37.pyc │ │ ├── hooks.cpython-37.pyc │ │ ├── logger.cpython-37.pyc │ │ └── timer.cpython-37.pyc │ ├── collect_env.py │ ├── hooks.py │ ├── logger.py │ └── timer.py └── version.py ├── pPose_nms.py ├── pose ├── __pycache__ │ ├── pose_inference.cpython-37.pyc │ └── pose_utils.cpython-37.pyc ├── ap10k.py ├── hrnet_w32_ap10k_256_256.py ├── pose_inference.py └── pose_utils.py ├── requirements.txt ├── setup.py ├── test2.gif ├── tools ├── demo.py ├── eval.py ├── export_onnx.py ├── export_torchscript.py ├── top_down_video_det.py ├── train.py └── trt.py ├── yolox.egg-info ├── PKG-INFO ├── SOURCES.txt ├── dependency_links.txt └── top_level.txt └── yolox ├── _C.cpython-37m-x86_64-linux-gnu.so ├── __init__.py ├── __pycache__ └── __init__.cpython-37.pyc ├── core ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-37.pyc │ ├── launch.cpython-37.pyc │ └── trainer.cpython-37.pyc ├── launch.py └── trainer.py ├── data ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-37.pyc │ ├── data_augment.cpython-37.pyc │ ├── data_prefetcher.cpython-37.pyc │ ├── dataloading.cpython-37.pyc │ └── samplers.cpython-37.pyc ├── data_augment.py ├── data_prefetcher.py ├── dataloading.py ├── datasets │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ ├── coco.cpython-37.pyc │ │ ├── coco_classes.cpython-37.pyc │ │ ├── datasets_wrapper.cpython-37.pyc │ │ ├── mosaicdetection.cpython-37.pyc │ │ ├── voc.cpython-37.pyc │ │ └── voc_classes.cpython-37.pyc │ ├── coco.py │ ├── coco_classes.py │ ├── datasets_wrapper.py │ ├── mosaicdetection.py │ ├── voc.py │ └── voc_classes.py └── samplers.py ├── evaluators ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-37.pyc │ ├── coco_evaluator.cpython-37.pyc │ ├── voc_eval.cpython-37.pyc │ └── voc_evaluator.cpython-37.pyc ├── coco_evaluator.py ├── voc_eval.py └── voc_evaluator.py ├── exp ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-37.pyc │ ├── base_exp.cpython-37.pyc │ ├── build.cpython-37.pyc │ └── yolox_base.cpython-37.pyc ├── base_exp.py ├── build.py └── yolox_base.py ├── layers ├── __init__.py ├── csrc │ ├── cocoeval │ │ ├── cocoeval.cpp │ │ └── cocoeval.h │ └── vision.cpp └── fast_coco_eval_api.py ├── models ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-37.pyc │ ├── darknet.cpython-37.pyc │ ├── losses.cpython-37.pyc │ ├── network_blocks.cpython-37.pyc │ ├── yolo_fpn.cpython-37.pyc │ ├── yolo_head.cpython-37.pyc │ ├── yolo_pafpn.cpython-37.pyc │ └── yolox.cpython-37.pyc ├── darknet.py ├── losses.py ├── network_blocks.py ├── yolo_fpn.py ├── yolo_head.py ├── yolo_pafpn.py └── yolox.py └── utils ├── __init__.py ├── __pycache__ ├── __init__.cpython-37.pyc ├── allreduce_norm.cpython-37.pyc ├── boxes.cpython-37.pyc ├── checkpoint.cpython-37.pyc ├── demo_utils.cpython-37.pyc ├── dist.cpython-37.pyc ├── ema.cpython-37.pyc ├── logger.cpython-37.pyc ├── lr_scheduler.cpython-37.pyc ├── metric.cpython-37.pyc ├── model_utils.cpython-37.pyc ├── setup_env.cpython-37.pyc └── visualize.cpython-37.pyc ├── allreduce_norm.py ├── boxes.py ├── checkpoint.py ├── demo_utils.py ├── dist.py ├── ema.py ├── logger.py ├── lr_scheduler.py ├── metric.py ├── model_utils.py ├── setup_env.py └── visualize.py /ActionsEstLoader.py: -------------------------------------------------------------------------------- 1 | import os 2 | import torch 3 | import numpy as np 4 | 5 | from Actionsrecognition.Models import TwoStreamSpatialTemporalGraph 6 | from pose.pose_utils import normalize_points_with_size, scale_pose 7 | 8 | 9 | class TSSTG(object): 10 | """Two-Stream Spatial Temporal Graph Model Loader. 11 | Args: 12 | weight_file: (str) Path to trained weights file. 13 | device: (str) Device to load the model on 'cpu' or 'cuda'. 14 | """ 15 | def __init__(self, 16 | weight_file='./ckpt/tsstg-model.pth', 17 | device='cuda'): 18 | self.graph_args = {'strategy': 'spatial'} 19 | self.class_names = ['Stand', 'Walk', 'Run', 'Lay', 'Eat'] 20 | self.num_class = len(self.class_names) 21 | self.device = device 22 | 23 | self.model = TwoStreamSpatialTemporalGraph(self.graph_args, self.num_class).to(self.device) 24 | self.model.load_state_dict(torch.load(weight_file)) 25 | self.model.eval() 26 | 27 | def predict(self, pts, image_size): 28 | """Predict actions from single person skeleton points and score in time sequence. 29 | Args: 30 | pts: (numpy array) points and score in shape `(t, v, c)` where 31 | t : inputs sequence (time steps)., 32 | v : number of graph node (body parts)., 33 | c : channel (x, y, score)., 34 | image_size: (tuple of int) width, height of image frame. 35 | Returns: 36 | (numpy array) Probability of each class actions. 37 | """ 38 | pts[:, :, :2] = normalize_points_with_size(pts[:, :, :2], image_size[0], image_size[1]) 39 | pts[:, :, :2] = scale_pose(pts[:, :, :2]) 40 | pts = np.concatenate((pts, np.expand_dims((pts[:, 3, :] + pts[:, 4, :]) / 2, 1)), axis=1) # 此处改动 0,19 41 | 42 | pts = torch.tensor(pts, dtype=torch.float32) 43 | pts = pts.permute(2, 0, 1)[None, :] #(N, C, T, V) 44 | 45 | mot = pts[:, :2, 1:, :] - pts[:, :2, :-1, :] 46 | # mot = np.concatenate((mot, np.expand_dims(mot[:, :, -1, :], 2)), axis=2) 47 | # mot = torch.from_numpy(mot) 48 | mot = mot.to(self.device) 49 | pts = pts.to(self.device) 50 | 51 | out = self.model((pts, mot)) 52 | 53 | return out.detach().cpu().numpy() 54 | -------------------------------------------------------------------------------- /Actionsrecognition/__pycache__/Models.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepLabc/Animal_Action/e9ff0e7ca736140fc776a9bda67f08e34311bfc6/Actionsrecognition/__pycache__/Models.cpython-36.pyc -------------------------------------------------------------------------------- /Actionsrecognition/__pycache__/Models.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepLabc/Animal_Action/e9ff0e7ca736140fc776a9bda67f08e34311bfc6/Actionsrecognition/__pycache__/Models.cpython-37.pyc -------------------------------------------------------------------------------- /Actionsrecognition/__pycache__/Utils.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepLabc/Animal_Action/e9ff0e7ca736140fc776a9bda67f08e34311bfc6/Actionsrecognition/__pycache__/Utils.cpython-36.pyc -------------------------------------------------------------------------------- /Actionsrecognition/__pycache__/Utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepLabc/Animal_Action/e9ff0e7ca736140fc776a9bda67f08e34311bfc6/Actionsrecognition/__pycache__/Utils.cpython-37.pyc -------------------------------------------------------------------------------- /Actionsrecognition/__pycache__/other_Model.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepLabc/Animal_Action/e9ff0e7ca736140fc776a9bda67f08e34311bfc6/Actionsrecognition/__pycache__/other_Model.cpython-37.pyc -------------------------------------------------------------------------------- /Actionsrecognition/test.py: -------------------------------------------------------------------------------- 1 | from Utils import Graph 2 | import torch 3 | 4 | graph_args = {'strategy': 'spatial'} 5 | graph = Graph(**graph_args) 6 | 7 | A = torch.tensor(graph.A, dtype=torch.float32, requires_grad=False) 8 | 9 | 10 | print(A.shape) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Animal Action Recognition Via Skeleton 2 | This is a repo for animal behavior recognition based on skeleton. First, use YOLOX to complete the animal detection, then cut out the area of the corresponding animal and input it to HRNet to complete the skeleton recognition, and finally pack and input the multi frame skeleton information into ST-GCN to complete the animal recognition. 3 | 4 | Action classes including: Stand, Walk, Run, Lay, Eat 5 | 6 | ![img](test2.gif) 7 | 8 | ## Configure 9 | 1、install anaconda(Optional) 10 | 11 | 12 | 2、yolox config, see details at: https://github.com/Megvii-BaseDetection/YOLOX 13 | 14 | 15 | ## Download pretrain weight(Baidu netdisk) 16 | 17 | target detetion:https://pan.baidu.com/s/13xstEeDE0Eh9CsikGETYLQ (gvn7) 18 | 19 | skeleton detetion: https://pan.baidu.com/s/10CWV0Qrbn69XXRjygnSdbA (nwtr) 20 | 21 | action predict: https://pan.baidu.com/s/188_0wvfiKCQKOCYshb-58g (5ai5) 22 | 23 | ## Use 24 | We use yolox_s model to complete animal detection 25 | 26 | Modifying the weight path of st-gcn in script ./ActionEstLoader.py 27 | 28 | ``` 29 | python tools/top_down_video_det.py -n yolox-s --path