/BMN-Boundary-Matching-Network

A pytorch-version implementation codes of paper: "BMN: Boundary-Matching Network for Temporal Action Proposal Generation", which is accepted in ICCV 2019.

Primary LanguagePythonMIT LicenseMIT

BMN: Boundary-Matching Network

A pytorch-version implementation codes of paper: "BMN: Boundary-Matching Network for Temporal Action Proposal Generation", which is accepted in ICCV 2019.

[Arxiv Preprint]

#NOTE:I AM NOT THE AUTHOR OF THE PAPER!!! SO PLEASE DO NOT ASK ME FOR DETAILS OF THE PAPER!!!

Prerequisites

These code is implemented in Pytorch 0.4.1 + Python3 .

Download Datasets

The author rescaled the feature length of all videos to same length 100, and he provided the rescaled feature at here .

Training and Testing of BMN

All configurations of BMN are saved in opts.py, where you can modify training and model parameter.

  1. For the first time to run the project, you should use this cmd to generate the BM mask matrix: This cmd only need to use once. when you get the BM_mask.npy, you can directly train the BMN.
python get_mask.py
  1. To train the BMN:
python main.py --module BMN --mode train
  1. To get the inference proposal of the validation videos:
python main.py --module BMN --mode inference
  1. To use the soft_nms to reduce the redundancy of the proposals:
python main.py --module Post_processing
  1. To evaluate the proposals with recall and AUC:
python main.py --module Evaluation

Of course, you can complete all the process above in one line:

sh bmn.sh

Reference

This implementation largely borrows from BSN by Tianwei Lin.

code:BSN

paper:BMN: Boundary-Matching Network for Temporal Action Proposal Generation