Giter Site home page Giter Site logo

yyht / apdlm Goto Github PK

View Code? Open in Web Editor NEW

This project forked from yang-song/apdlm

0.0 1.0 0.0 1.02 MB

Training Deep Neural Networks via Direct Loss Minimization

C++ 97.62% C 0.08% Cuda 1.91% MATLAB 0.29% Python 0.03% Makefile 0.05% QMake 0.02%

apdlm's Introduction

Training Deep Neural Networks via Direct Loss Minimization

This is the code for our ICML'16 paper:

Please cite the above paper if you use our code. For simplicity, we only include the code for action classification. We basically use the same code for object detection with minor modifications.

Dependencies

Our codes depend on qmake, CUDA, MPICH, CImg, LibLSDN (see the following section) and some MATLAB codes from PASCAL VOC2012 development toolkits. It is compulsory to have these downloaded (and installed).

The main source code was written in C++11.

LibLSDN

Our code is based on a deep learning library LibLSDN, which is written and maintained by Alexander G. Schwing. We include part of that library in our repository, including CPrecisionTimer.h, LSDN_Common.h, LSDN_CudaCommon.h and all files in LibLSDN/.

In order to install this library, please first modify the paths accordingly in Makefile and then run

make LibLSDN.a

Data

We use the PASCAL VOC2012 dataset, which can be downloaded at the website. The dataset contains a VOCcode/ folder, which contains a lot of utility MATLAB codes helpful for preprocessing data.

After extracting VOC2012 dataset, you should put preprocessing/save_action_split.m under the VOCdevkit2012/ folder and run it to get preprocessed data files. They have the format of *_info.dat and *_ims.dat.

Training and Validation / Testing

Previous to running the program, please modify the paths and parameters in src/APDLM.pro and src/Conf.cpp according to your own settings.

First run the following commands

qmake
make

to compile the program.

Then run

mpiexec -n 2 ./APDLM [alpha] [beta] [epsilon] [class_name] [gpu1] [gpu2]

Here alpha is the learning rate, beta is the L2 regularization coefficient, epsilon is the sharpness parameter as defined in the paper, class_name is the name of the class, gpu1 and gpu2 are indices of GPUs. You can also change the number of GPUs.

Notes

The AlexNet weight AlexNetWeightsSingleDimensionOutput.dat used for finetuning is too large for GitHub. Please contact the authors for it.

apdlm's People

Watchers

 avatar

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.