- Tensorflow 1.11
- python 3.6.5
- opencv-python 3.4.3.18
- Pillow 5.3.0
- sagemaker 1.15.2
- Download the video dataset and make sure it has the following folder structure (
../video/<action_name>/<video1.avi>
KTH ex: ../kth_video/boxing/person01_boxing_d1_uncomp.avi) - Run the
prepare_data_main.py
. You need to specify thedata_dir
,train_output_path
, andeval_output_path
.
data_dir
:../kth_video
- When the script finished. It will print out the following informations
- Total clips in train dataset:
AAAA
(Take a record of this number) - Total clips in eval dataset:
BBBB
(Take a record of this number)
- Paste the number
AAAA
from previous step totrain_total_video_clip
in thedebug_train.py
file. - Paste the number
BBBB
from previous step toeval_total_video_clip
in thedebug_train.py
file. - Copy and paste the
eval.tfrecord
andtrain.tfrecord
file generated from the previous step to a folder named../tfrecord
. - Set the
DATA_DIR
in thedebug_train.py
to the proper folder name in the previous step. - Run
python debug_train.py
(Make sure you have all the dependencies).
Note: It turns out Sagemaker doesn't support python3 for Tensorflow script at this moment (2018.Nov.1)!!!
So I will stop working on this part and left the sagemaker_main.template
file as it is for now.
- Register AWS account. AWS Console
- Create an IAM user with only
Programmatic access
and attachedAmazonS3FullAccess
andAmazonSageMakerFullAccess
to this IAM user. Keep a record of yourAccess Key ID
andSecret Access Key
(Don't tell anyone this information!!! Even your husband/wife). - Install boto3 on your local desktop. Run
aws configure
in your console and paste theAccess Key ID
andSecret Access Key
from previous step. Keep in mind the region (ex:us-west-2
) that you used. - Create a new Role with name
sagemaker-full-access-role
and attach an inline policy with the following JSON - Create a new S3 bucekt with whatever name you want in the same region in Step3. Let said the S3 bucket name is
machine_leaning_data_bucket
. - Rename the
sagemaker_main.template
tosagemaker_main.py
- Copy the new Role ARN (ex:
arn:aws:iam::<aws_account_id>:role/sagemaker-full-access-role
) and paste it to therole
value in thesagemaker_main.py
- Replace the
<s3_bucket_name>
insagemaker_main.py
with S3 bucket namemachine_leaning_data_bucket
(Whatever S3 bucket name you have). - Chooes one option in the
sagemaker_main.py
and runpython sagemaker_main.py
. Notice that if you choose
As I said at the beginning, sagemaker doesn't support tensorflow docker image with python version 3, so you will get error
Attempted relative import in non-package
at this moment. I will try to rework this file once sagemaker support it.
Expand the `Densely Connected Convolutional Networks DenseNets to 3D-DenseNet for action recognition (video classification):
- 3D-DenseNet - without bottleneck layers
- 3D-DenseNet-BC - with bottleneck layers
Each model can be tested on such datasets:
A number of layers, blocks, growth rate, video normalization and other training params may be changed trough shell or inside the source code.
There are also many other implementations, they may be useful also.