Voltar ao ranking

ethanhe42/channel-pruning

Pythonarxiv.org/abs/1707.06168

Channel Pruning for Accelerating Very Deep Neural Networks (ICCV'17)

image-recognitionmodel-compressionaccelerationobject-detectionimage-classificationchannel-pruningdeep-neural-networks
Crescimento de estrelas
Estrelas
1.1k
Forks
306
Crescimento semanal
Issues
20
5001k
ago. de 2017jul. de 2020jul. de 2023jul. de 2026
ArtefatosPyPIpip install channel-pruning
README

Channel Pruning for Accelerating Very Deep Neural Networks

image

GitHub - yihui-he/channel-pruning: Channel Pruning for Accelerating Very Deep Neural Networks (ICCV'17)

Channel Pruning for Accelerating Very Deep Neural Networks

ICCV 2017, by Yihui He, Xiangyu Zhang and Jian Sun

Please have a look our new works on compressing deep models:

In this repository, we released code for the following models:

model Speed-up Accuracy
https://github.com/yihui-he/channel-pruning/releases/tag/channel_pruning_5x 5x 88.1 (Top-5), 67.8 (Top-1)
https://github.com/yihui-he/channel-pruning/releases/tag/VGG-16_3C4x 4x 89.9 (Top-5), 70.6 (Top-1)
https://github.com/yihui-he/channel-pruning/releases/tag/ResNet-50-2X 2x 90.8 (Top-5), 72.3 (Top-1)
https://github.com/yihui-he/channel-pruning/releases/tag/faster-RCNN-2X4X 2x 36.7 (AP@.50:.05:.95)
https://github.com/yihui-he/channel-pruning/releases/tag/faster-RCNN-2X4X 4x 35.1 (AP@.50:.05:.95)

3C method combined spatial decomposition (Speeding up Convolutional Neural Networks with Low Rank Expansions) and channel decomposition (Accelerating Very Deep Convolutional Networks for Classification and Detection) (mentioned in 4.1.2)

Citation

If you find the code useful in your research, please consider citing:

@InProceedings{He_2017_ICCV,
author = {He, Yihui and Zhang, Xiangyu and Sun, Jian},
title = {Channel Pruning for Accelerating Very Deep Neural Networks},
booktitle = {The IEEE International Conference on Computer Vision (ICCV)},
month = {Oct},
year = {2017}
}

requirements

  1. Python3 packages you might not have: scipy, sklearn, easydict, use sudo pip3 install to install.
  2. For finetuning with 128 batch size, 4 GPUs (~11G of memory)

Installation (sufficient for the demo)

  1. Clone the repository

    # Make sure to clone with --recursive
     git clone --recursive https://github.com/yihui-he/channel-pruning.git
    
  2. Build my Caffe fork (which support bicubic interpolation and resizing image shorter side to 256 then crop to 224x224)

    cd caffe
    
     # If you're experienced with Caffe and have all of the requirements installed, then simply do:
     make all -j8 && make pycaffe
     # Or follow the Caffe installation instructions here:
     # http://caffe.berkeleyvision.org/installation.html
    
     # you might need to add pycaffe to PYTHONPATH, if you've already had a caffe before
    
  3. Download ImageNet classification dataset http://www.image-net.org/download-images

  4. Specify imagenet source path in temp/vgg.prototxt (line 12 and 36)

Channel Pruning

For fast testing, you can directly download pruned model. See next section 1. Download the original VGG-16 model http://www.robots.ox.ac.uk/~vgg/software/very_deep/caffe/VGG_ILSVRC_16_layers.caffemodel move it to temp/vgg.caffemodel (or create a softlink instead)

  1. Start Channel Pruning

    python3 train.py -action c3 -caffe [GPU0]
     # or log it with ./run.sh python3 train.py -action c3 -caffe [GPU0]
     # replace [GPU0] with actual GPU device like 0,1 or 2
    
  2. Combine some factorized layers for further compression, and calculate the acceleration ratio. Replace the ImageData layer of temp/cb_3c_3C4x_mem_bn_vgg.prototxt with [temp/vgg.prototxt’s](https://github.com/yihui-he/channel-pruning/blob/master/temp/vgg.prototxt#L1-L49) Shell ./combine.sh | xargs ./calflop.sh

  3. Finetuning

    caffe train -solver temp/solver.prototxt -weights temp/cb_3c_vgg.caffemodel -gpu [GPU0,GPU1,GPU2,GPU3]
     # replace [GPU0,GPU1,GPU2,GPU3] with actual GPU device like 0,1,2,3
    
  4. Testing

    Though testing is done while finetuning, you can test anytime with:

    caffe test -model path/to/prototxt -weights path/to/caffemodel -iterations 5000 -gpu [GPU0]
     # replace [GPU0] with actual GPU device like 0,1 or 2
    

    Pruned models (for download)

    For fast testing, you can directly download pruned model from release: VGG-16 3C 4X, VGG-16 5X, ResNet-50 2X. Or follow Baidu Yun Download link

Test with:

caffe test -model channel_pruning_VGG-16_3C4x.prototxt -weights channel_pruning_VGG-16_3C4x.caffemodel -iterations 5000 -gpu [GPU0]
# replace [GPU0] with actual GPU device like 0,1 or 2

Pruning faster RCNN

For fast testing, you can directly download pruned model from release Or you can: 1. clone my py-faster-rcnn repo: https://github.com/yihui-he/py-faster-rcnn 2. use the pruned models from this repo to train faster RCNN 2X, 4X, solver prototxts are in https://github.com/yihui-he/py-faster-rcnn/tree/master/models/pascal_voc

FAQ

You can find answers of some commonly asked questions in our Github wiki, or just create a new issue

Repositórios relacionados
dusty-nv/jetson-inference

Hello AI World guide to deploying deep-learning inference networks and deep vision primitives with TensorRT and NVIDIA Jetson.

C++MIT Licensedeep-learninginference
developer.nvidia.com/embedded/twodaystoademo
8.9k3.1k
OlafenwaMoses/ImageAI

A python library built to empower developers to build applications and systems with self-contained Computer Vision capabilities

PythonPyPIMIT Licenseartificial-intelligencemachine-learning
genxr.co
8.9k2.2k
PaddlePaddle/PaddleClas

A treasure chest for visual classification and recognition powered by PaddlePaddle

PythonPyPIApache License 2.0image-classificationknowledge-distillation
5.8k1.2k
amdegroot/ssd.pytorch

A PyTorch Implementation of Single Shot MultiBox Detector

PythonPyPIMIT Licensepytorchdeep-learning
5.2k1.7k
shu223/iOS-10-Sampler

Code examples for new APIs of iOS 10.

SwiftMIT Licenseiosios10
3.3k328
milvus-io/bootcamp

Dealing with all unstructured data, such as reverse image search, audio search, molecular search, video analysis, question and answer systems, NLP, etc.

Jupyter NotebookApache License 2.0milvusunstructured-data
milvus.io
2.4k686
extreme-assistant/ICCV2023-Paper-Code-Interpretation

ICCV2021/2019/2017 论文/代码/解读/直播合集,极市团队整理

machine-learningcomputer-vision
bbs.cvmart.net
2.3k1.4k
emgucv/emgucv

Emgu CV is a cross platform .Net wrapper to the OpenCV image processing library.

C#Otheraicomputer-vision
emgu.com
2.3k588
photonixapp/photonix

A modern, web-based photo management server. Run it on your home server and it will let you find the right photo from your collection on any device. Smart filtering is made possible by object recognition, face recognition, location awareness, color analysis and other ML algorithms.

PythonPyPIGNU Affero General Public License v3.0photophotography
photonix.org
2k136
symisc/sod

An Embedded Computer Vision & Machine Learning Library (CPU Optimized & IoT Capable)

COthercomputer-visionlibrary
sod.pixlab.io
1.8k211
kumar-shridhar/PyTorch-BayesianCNN

Bayesian Convolutional Neural Network with Variational Inference based on Bayes by Backprop in PyTorch.

PythonPyPIMIT Licenseconvolutional-neural-networksbayesian-network
1.6k336
DennisLiu1993/Fastest_Image_Pattern_Matching

C++ implementation of a ScienceDirect paper "An accelerating cpu-based correlation-based image alignment for real-time automatic optical inspection"

C++BSD 2-Clause "Simplified" Licenseimage-alignmentimage-match
1.1k264