Coder Social home page Coder Social logo

kchengiva / shift-gcn Goto Github PK

View Code? Open in Web Editor NEW
260.0 7.0 53.0 13.73 MB

The implementation for "Skeleton-Based Action Recognition with Shift Graph Convolutional Network" (CVPR2020 oral).

License: Other

Python 79.67% C++ 1.50% Cuda 18.50% Shell 0.33%

shift-gcn's Introduction

Shift-GCN

The implementation for "Skeleton-Based Action Recognition with Shift Graph Convolutional Network" (CVPR2020 oral). Shift-GCN is a lightweight skeleton-based action recognition model, which exceeds state-of-the-art methods with 10x less FLOPs.

image

Prerequisite

  • PyTorch 0.4.1
  • Cuda 9.0
  • g++ 5.4.0

Compile cuda extensions

cd ./model/Temporal_shift
bash run.sh

Data Preparation

  • Download the raw data of NTU-RGBD and NTU-RGBD120. Put NTU-RGBD data under the directory ./data/nturgbd_raw. Put NTU-RGBD120 data under the directory ./data/nturgbd120_raw.

  • For NTU-RGBD, preprocess data with python data_gen/ntu_gendata.py. For NTU-RGBD120, preprocess data with python data_gen/ntu120_gendata.py.

  • Generate the bone data with python data_gen/gen_bone_data.py.

  • Generate the motion data with python data_gen/gen_motion_data.py.

Training & Testing

  • NTU X-view

    python main.py --config ./config/nturgbd-cross-view/train_joint.yaml

    python main.py --config ./config/nturgbd-cross-view/train_bone.yaml

    python main.py --config ./config/nturgbd-cross-view/train_joint_motion.yaml

    python main.py --config ./config/nturgbd-cross-view/train_bone_motion.yaml

  • NTU X-sub

    python main.py --config ./config/nturgbd-cross-subject/train_joint.yaml

    python main.py --config ./config/nturgbd-cross-subject/train_bone.yaml

    python main.py --config ./config/nturgbd-cross-subject/train_joint_motion.yaml

    python main.py --config ./config/nturgbd-cross-subject/train_bone_motion.yaml

  • For NTU120, change the dataset path in config files, and change num_class in config files from 60 to 120.

Multi-stream ensemble

To ensemble the results of 4 streams. Change models name in ensemble.py depending on your experiment setting. Then run python ensemble.py.

Trained models

We release several trained models:

Model Dataset Setting Top1(%)
./save_models/ntu_ShiftGCN_joint_xview.pt NTU-RGBD X-view 95.1
./save_models/ntu_ShiftGCN_joint_xsub.pt NTU-RGBD X-sub 87.8
./save_models/ntu120_ShiftGCN_joint_xsetup.pt NTU-RGBD120 X-setup 83.2
./save_models/ntu120_ShiftGCN_joint_xsub.pt NTU-RGBD120 X-sub 80.9

Citation

If you find this model useful for your research, please use the following BibTeX entry.

@inproceedings{cheng2020shiftgcn,  
  title     = {Skeleton-Based Action Recognition with Shift Graph Convolutional Network},  
  author    = {Ke Cheng and Yifan Zhang and Xiangyu He and Weihan Chen and Jian Cheng and Hanqing Lu},  
  booktitle = {Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},  
  year      = {2020},  
}

shift-gcn's People

Contributors

kchengiva avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

shift-gcn's Issues

Evaluation Benchmark for NTURGB-d 120

Dear,
Once again thank you very much for your work.

My apologies for the basic question.

  • In general we have a split of training/validation and test on the dataset(ds). validation ds is used for fine tuning the hyper-parameters and the final accuracy is on the test ds
  • In case of NTURGB-d the authors suggests two benchmarks xsub and xview

Question

  1. In your work I observed that the data is split into train and validation. So do you use validation for both fine tuning the hyper-parameters and evaluation ?
  2. In case of x-view benchmark as we are using 3d skeletons wont it be the same when observed from different views, also as the skeleton coordinates are normalised ? (Please correct me if I am wrong)

(I have also observed the same in the previous GCN papers for action recognition)

Thank you

When setup run.sh, is there anyone facing this problom: CUDA error: invalid device function,

Environment: PyTorch 1.4, Cuda 10.0, Python1.7,cudnn7.6.4.
Already finished processing dependencies
`shift-cuda-linear-cpp 0.0.0 is already the active version in easy-install.pth

Installed /root/anaconda3/lib/python3.7/site-packages/shift_cuda_linear_cpp-0.0.0-py3.7-linux-x86_64.egg
Processing dependencies for shift-cuda-linear-cpp==0.0.0
Finished processing dependencies for shift-cuda-linear-cpp==0.0.0
Traceback (most recent call last):
File "demo.py", line 17, in
sum_out = torch.sum(out)
RuntimeError: CUDA error: invalid device function
`
I googled, and it seems that there is a mismatch between the compute capability of your GPU device and the compute capabilities for Shift-GCN, then I try to find a make file to modify compute capability, but I failed. Is there any solution to this problem?

Appreciate

example accuracy

While following instructions in the doc CUSTOM_DATASET, I found that accuracy I got was not ideal after running "mmskl configs/recognition/st_gcn/dataset_example/test.yaml". Is there anything wrong?
Top1 accuracy was 33% only.

Segmentation fault (core dumped)

Hi, thanks for a great codebase!

I tried python main.py --config ./config/nturgbd-cross-view/train_joint.yaml
but I encountered "Segmentation fault (core dumped)" on epoch 1.

Do you have any idea?

processed N-UCLA data

Thank you very much for your work.If convenient,could you provide processed N-UCLA data. Thanks.

How can I extract the shift operation?

Hello, your work is very meaningful, I am interested in it.

1、I am confused about that 'Temporal_shift' folder. If I want to extract your shift-gcn (spatial and temporal), what should I do? Because I don't quite understand the contents of cuda related documents in 'Temporal_shift'.
2、Where can the code embody this module ‘Shift-Conv and Shift-Conv- Shift’?

Thanks

Test set accuracy

Dear kchengiva,
Hello. I want to ask what should I do if I want to run a test on the trained model and output and sort the accuracy of each action category in the test dataset? I'd appreciate it if you could help me. Looking forward to your reply.

4 stream for NW-UCLA

How did you prepare 4 streams (joint, bone, joint motion, bone motion) for NW-UCLA?

regular S-GCN and regular T-GCN

Dear kchengiva,
I see that your paper mentioned that you have compared with regular spatial convolution and temporal convolution . I would like to ask if this is ST-GCN? I wonder if it is convenient for you to provide the code of regular S-GCN and regular T-GCN, which can be used as an alternative. By the way, can the regular convolution code directly replace the shift-gcn module and run directly. Waiting for your reply, thank you!

RuntimeError: CUDA out of memory.

RuntimeError: CUDA out of memory. Tried to allocate 236.00 MiB (GPU 0; 15.78 GiB total capacity; 14.25 GiB already allocated; 183.50 MiB free; 14.34 GiB reserved in total by PyTorch)
I have used a 16G V100 and changed the batch_size to 8, but it still shows CUDA out of mory. is there any way to get the model to run?

Naive temporal shift operation

Thanks for your such cool work, I'd like to know how to achieve the naive temporal shift operation.
Do I need to modify the file 'shift_gcn.py', or I have to modify the cuda extention?
It would be very helpful to me if you could provide this part of the code.

plotting learning training and validation graphs

Great work. I have trained nw-ucla and have gained 91.5% using your repo. Would you please guide on how to generate learning graphs from your codebase. From where we can access model training history.

training and testing

Dear kchengiva,
Hello, I'm so sorry to bother you again. I have two questions now. I would appreciate it if you could help me. First, after running your code, I found that your model is training an epoch, verifying an epoch, without testing, right? Or test is the verification of every epoch. Second, I want to try to train ten epochs and verify one epoch. How should I modify the parameters? Thank you! Looking forward to your reply.

cuda device

Hello, do you have to use device 0 for your code? When I change the device to 7, an error occurs.

Local/Non-Local shift

Thanks for the great work.

it seems like "A" is never used in the model.

def __init__(self, in_channels, out_channels, A, coff_embedding=4, num_subset=3):

is this because the given model is non-local shift GCN version? Do you have any codes to modify this into local shift graph convolution?

thank you.

Preprocess for NW-UCLA

Hi, thanks for your outstanding work.
Following your experimental setting, I got 90.52% for 1s shift GCN, it is much lower than the accuracy which is 92.5 reported in the paper. I am working with one K40 GPU.
I am wondering what has caused the difference, could you please enlighten me?
Thanks a lot!

Why parallel the bone (hip-spine) to Z-axis

In data preparation part, I notice you parallel the bone between hip and spine to the Z-axis. But in NTU RGB-D dataset paper, they parallel it to Y-axis. Could you please explain the reason? Is your method better then original one?

#print('parallel the bone between hip(jpt 0) and spine(jpt 1) of the first person to the z axis')

Seeking advice on a coding issue

In the 'shift' class within shift.py, why is it necessary to multiply the zero matrix created for xpos and ypos by 1.5? In the end, won't they both be zero anyway?
class Shift(Module):

def __init__(self, channel, stride, init_scale=3):
    super(Shift, self).__init__()

    self.stride = stride

    self.xpos = Parameter(torch.zeros(channel,requires_grad=True,device='cuda')*1.5)#不知道这个乘以1.5有什么含义
    self.ypos = Parameter(torch.zeros(channel,requires_grad=True,device='cuda')*1.5)

    self.xpos.data.uniform_(-1e-8,1e-8)
    self.ypos.data.uniform_(-init_scale,init_scale)

def forward(self, input):
    return ShiftFunction.apply(input,self.xpos,self.ypos,self.stride)

Demo image

Hi,
Thanks for your great works.
Could you provide a code inference for a sample image or a guide line for working with kinect camera, an pose estimation model like Openpose. Thank you very much!

Number of blocks in the supplementary paper

Dear @kchengiva,
Q1:
From the paper in "Spatial-Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition" which states that there exist 3 layers with outputs as 64 channels but from Table 1 there are 4 such layers. If you could confirm it will be very helpful.
Q2:
Would also like to know if the number of parameters is doubled for two skeletons in thest- graph.

ModuleNotFoundError: No module named 'cuda'

I run bash run.sh

but get
Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'cuda'

I'm a fresh man, what's wrong?

pickle.load报错

When I use the repository code on the NTURGBD dataset, I always get the following error, what is the reason?

Shift-GCN-master\main.py", line 366, in train
.UnpicklingError: pickle data was truncated
for batch_idx, (data, label, index) in enumerate(process):

Pytorch implementation of adaptive temporal shift operation

Hi, I just wanted to know whether you can provide an equivalent pytorch implementation of adaptive temporal shift operation (instead of the Shift operation imported from cuda.shift in model/shift_gcn.py). Actually I have a different version of pytorch and cuda which are essential for a different block in my model so I neither can I compile using bash run.sh inside Temporal_shift nor can I switch to the version of cuda & pytorch required for Shift as a block of my model is not compatible using it.

Would really appreciate if you can provide this.

RuntimeError: Only Tensors of floating point dtype can require gradients

您好
我在使用两张卡运行时会出现这个错误:

Traceback (most recent call last):
File "main.py", line 541, in
processor.start()
File "main.py", line 482, in start
self.train(epoch, save_model=True)
File "main.py", line 370, in train
output = self.model(data)
File "/home/Liutl/anaconda3/envs/sgcn/lib/python3.7/site-packages/torch/nn/modules/module.py", line 532, in call
result = self.forward(*input, **kwargs)
File "/home/Liutl/anaconda3/envs/sgcn/lib/python3.7/site-packages/torch/nn/parallel/data_parallel.py", line 151, in forward
replicas = self.replicate(self.module, self.device_ids[:len(inputs)])
File "/home/Liutl/anaconda3/envs/sgcn/lib/python3.7/site-packages/torch/nn/parallel/data_parallel.py", line 156, in replicate
return replicate(module, device_ids, not torch.is_grad_enabled())
File "/home/Liutl/anaconda3/envs/sgcn/lib/python3.7/site-packages/torch/nn/parallel/replicate.py", line 146, in replicate
setattr(replica, key, Parameter(param))
File "/home/Liutl/anaconda3/envs/sgcn/lib/python3.7/site-packages/torch/nn/parameter.py", line 26, in new
return torch.Tensor._make_subclass(cls, data, requires_grad)
RuntimeError: Only Tensors of floating point dtype can require gradients

您知道如何解决么?

custom dataset category

I want to use this model to recognize some basic actions such as squating or sitting. I took several 10s-length videos and labelled them, is there something else I should do before beginning trainning?
I noticed that "UserWarning: Class names are not saved in the checkpoint's meta data, use COCO classes by default.
warnings.warn('Class names are not saved in the checkpoint's '" was shown, so how can I solve this?

Results of four streams on NTU RGB+D 60

Hi, thanks for sharing your code. Could you report your results of four streams on NTU RGB+D 60 respectively? I experiment with motion data but the accuracy is 1%~2% lower than the corresponding original data. I don't know if this is normal. BTW, I process the motion data online as below because gen_motion_data.py takes a long time.(computing motion data in getitem() of feeder). Will it affect model performance?

def __getitem__(self, index):
    if self.motion:
        C, T, V, M = data_numpy.shape
        data_numpy[:, :T-1] = data_numpy[:, 1:T] - data_numpy[:, :T-1]
        data_numpy[:, T-1] = 0
    if self.normalization:
        data_numpy = (data_numpy - self.mean_map) / self.std_map
    if self.random_shift:
        data_numpy = tools.random_shift(data_numpy)
    if self.random_choose:
        data_numpy = tools.random_choose(data_numpy, self.window_size)
    elif self.window_size > 0:
        data_numpy = tools.auto_pading(data_numpy, self.window_size)
    if self.random_move:
        data_numpy = tools.random_move(data_numpy)

    return data_numpy, label, index

two issue 关于code

  1. vscode编译器下:model->Temporal_shift->cuda->shift_cuda.cpp文件,头文件#include<torch/torch.h>报红,缺少libtorh库,需要这么把库导入其中?请问有什么解决方法
  2. main.py中的default='./config/nturgbd-cross-view/test_bone.yaml',而config文件下并无test_bone.yaml,请问是数据集不全还是什么原因呢
    诚心发问,望解答

Trained models

Hi,
Thank you very much for the wonderful work and a well documented repository.
It would be very helpful if you could provide the trained model.

How do you compute the FLOPs of model?

I calculate the flops using thop like:

from thop import profile
flops, params = profile(model, inputs = (x,))

is this the right way to compute the flops?

BTW, I computed the FLOPS of agcn and MSG3D (single model), and get the flops of them are around 18G and 24G. Is this the correct number?

Calculating the FLOPs of the model

Dear @kchengiva,

Thank you very much for the supplement that you have provided to calculate the FLOPs.
To verify I tried to calculate FLOPs in ST-GCN as provided in the paper and getting the below results

spatial convolution [(3 × (N C C1 + N N C1)) × T ]I am getting FLOPs around 2.0232G
Temporal convolution[ (9 × T C C1) × N] I am getting FLOPs around 4.98 G
FC Flops 15360
Total 7.01 G

It will be kind if you could guide me where I deviated from your calculation.

          SFLOPs TFLOPs FC FLOPs Total
  C C1 T N        
0 3 64 300 25 40320000 12960000    
1 64 64 300 25 128160000 276480000    
2 64 64 300 25 128160000 276480000    
3 64 64 300 25 128160000 276480000    
4 64 128 150 25 128160000 276480000    
5 128 128 150 25 220320000 552960000    
6 128 128 150 25 220320000 552960000    
7 128 256 75 25 220320000 552960000    
8 256 256 75 25 404640000 1105920000    
9 256 256 75 25 404640000 1105920000    
              256 x60=(15360)  
          2023200000 4989600000 15360 7012815360

undefined symbol: _ZN2at5ErrorC1ENS_14SourceLocationESs

hello, i run the code bash run.sh with the environment of pytorch0.4.1/cuda9.0/g++ 5.5,but got the ImportError.
Is there any problem with my environment?

Installed /home/tjl1/anaconda3/envs/pytorch0.4/lib/python3.7/site-packages/shift_cuda_linear_cpp-0.0.0-py3.7-linux-x86_64.egg
Processing dependencies for shift-cuda-linear-cpp==0.0.0
Finished processing dependencies for shift-cuda-linear-cpp==0.0.0
Traceback (most recent call latt):
File "demo.py", line 10, in
from cuda.shift import ShiftFunction, Shift
FIle "/home/tjl1/zlw/Shift-GCN-master/model/Temporal_shift/cuda/shift.py", lin 5, in
import shift_cuda
ImportError: /home/tjl1/anaconda3/envs/pytorch0.4/lib/python3.7/site-packages/shift_cuda_linear_cpp-0.0.0-py3.7-linux-x86_64.egg/shift_cuda.cpython-37m-x86_64-linux-gnu.so:
undefined symbol: _ZN2at5ErrorC1ENS_14SourceLocationESs

AttributeError: 'Model' object has no attribute 'model'

Thanks for your project.
I'm very interested in the network you designed, the ShiftGCN and the ShiftGCN++. But there is an error reported in shiftgcn_plus.py. The mainly code is shown below:

class Model(nn.Module):
def init(self, teacher_model=None, num_class=60, num_point=25, num_person=2, graph=None, graph_args=dict(), in_channels=3):
super(Model, self).init()
......
try:
self.t_net.load_state_dict(weights)
except:
state = self.model.state_dict() # ---------------The location of the error.
diff = list(set(state.keys()).difference(set(weights.keys())))
print('Can not find these weights:')
for d in diff:
print(' ' + d)
state.update(weights)
self.t_net.load_state_dict(state)

Errors:
File "/home/project/Shift-GCN-plus-main/model/shiftgcn_plus.py", line 605, in init
state = self.model.state_dict()
File "/home/anaconda3/envs/csl/lib/python3.8/site-packages/torch/nn/modules/module.py", line 947, in getattr
raise AttributeError("'{}' object has no attribute '{}'".format(
AttributeError: 'Model' object has no attribute 'model'

Could you help me if is available? Thanks a lot.

Northwestern-UCLA

Hi Great work. Since you also mentioned the Northwestern-UCLA dataset in your paper. Can you please also provide the data inferface for this part?

All the best!

RuntimeError: input.is_contiguous()

Hi, did this ever happen to you?

RuntimeError: input.is_contiguous() INTERNAL ASSERT FAILED at "shift_cuda.cpp":21, please report a bug to PyTorch. input must be contiguous

Full trace:

Traceback (most recent call last):
  File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/mnt/home/dario/.vscode-server/extensions/ms-python.python-2021.3.658691958/pythonFiles/lib/python/debugpy/__main__.py", line 45, in <module>
    cli.main()
  File "/mnt/home/dario/.vscode-server/extensions/ms-python.python-2021.3.658691958/pythonFiles/lib/python/debugpy/../debugpy/server/cli.py", line 444, in main
    run()
  File "/mnt/home/dario/.vscode-server/extensions/ms-python.python-2021.3.658691958/pythonFiles/lib/python/debugpy/../debugpy/server/cli.py", line 285, in run_file
    runpy.run_path(target_as_str, run_name=compat.force_str("__main__"))
  File "/usr/lib/python3.6/runpy.py", line 263, in run_path
    pkg_name=pkg_name, script_name=fname)
  File "/usr/lib/python3.6/runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/mnt/home/dario/Shift-GCN/load_shiftgcn_model.py", line 45, in <module>
    output = model(fp)
  File "/home/dario/.local/lib/python3.6/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/mnt/home/dario/Shift-GCN/model/shift_gcn.py", line 200, in forward
    x = self.l1(x)
  File "/home/dario/.local/lib/python3.6/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/mnt/home/dario/Shift-GCN/model/shift_gcn.py", line 161, in forward
    x = self.tcn1(self.gcn1(x)) + self.residual(x)
  File "/home/dario/.local/lib/python3.6/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/mnt/home/dario/Shift-GCN/model/shift_gcn.py", line 68, in forward
    x = self.shift_in(x)
  File "/home/dario/.local/lib/python3.6/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
    result = self.forward(*input, **kwargs)
  File "./model/Temporal_shift/cuda/shift.py", line 45, in forward
    return ShiftFunction.apply(input,self.xpos,self.ypos,self.stride)
  File "./model/Temporal_shift/cuda/shift.py", line 19, in forward
    output = shift_cuda.forward(input,xpos,ypos,stride)
RuntimeError: input.is_contiguous() INTERNAL ASSERT FAILED at "shift_cuda.cpp":21, please report a bug to PyTorch. input must be contiguous

Input fp:

tensor([[[[[-0.0102,  0.0000],
           ...,
           ...,
           [ 0.3775,  0.0000]]]]], device='cuda:0')
requires_grad:False
shape:torch.Size([1, 3, 300, 25, 2])

Minimal exemple:

from collections import OrderedDict
import numpy as np
import os
import sys
import torch
from torch.autograd import Variable

sys.path.append("./data_gen/") # so ntu_gendata can import preprocess
from data_gen.ntu_gendata import pre_normalization, read_xyz
from model.shift_gcn import Model


device = 'cuda'

model_args = {'graph': 'graph.ntu_rgb_d.Graph', 'graph_args': {'labeling_mode': 'spatial'}, 'num_class': 60, 'num_person': 2, 'num_point': 25}
model = Model(**model_args).to(device)
model.eval()

weights = torch.load('/home/dario/temp/synse_resources/ntu_results/shift_5_r/weights/best.pt')
weights = OrderedDict(
    [[k.split('module.')[-1],
        v.to(device)] for k, v in weights.items()])
model.load_state_dict(weights)

MAX_BODY_KINECT = 4

NUM_SAMPLES = 1
NUM_JOINT = 25
MAX_FRAME = 300
MAX_BODY_TRUE = 2
fp = np.zeros((NUM_SAMPLES, 3, MAX_FRAME, NUM_JOINT, MAX_BODY_TRUE), dtype=np.float32)

sample = '/home/dario/temp/datasets/NTU-60_and-120/skeletons/S001C001P001R001A001.skeleton'
data = read_xyz(sample, max_body=MAX_BODY_KINECT, num_joint=NUM_JOINT)
fp[0, :, 0:data.shape[1], :, :] = data
# print(fp)
fp = pre_normalization(fp)
fp = torch.from_numpy(fp)
fp = Variable(fp.float().to(device), requires_grad=False) # , volatile=True)
output = model(fp)
_, predict_label = torch.max(output.data, 1)
print(sample,':',predict_label)

Recovery Training

Dear Kchengiva,
Hello, when I was training the model, the network error caused the training to be interrupted. I see you saved the model in the. pt file, and I want to ask how to resume the training. thank you.Looking forward to your reply.

Adaptive temporal shift graph convolution

Dear @kchengiva,
Your work is very impressive.

I have some doubts in adaptive temporal shift graph convolution.
It will be very kind if you could explain the equation,
Fe(v,t,i) = (1 − λ) · F(v,⌊t+Si⌋,i) + λ · F(v,⌊t+Si⌋+1,i)

Can not reproduce the result of shift-gcn in joint modality

I did experiments on 2 RTX GPUs and 3090 GPUs in joint modality respectively, and the result of them were 87.2 and 87.4. However, the result published on the official website is 87.8, which is higher than mine.

The log.txt, configs, and the code of models in experiments are in the files, can you help me solve this problem after review?

Thank you very much indeed!!!

shift-gcn.zip

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.