IC-Conv

April 23, 2022 ยท View on GitHub

This repository is an official implementation of the paper Inception Convolution with Efficient Dilation Search.

Performance

Human pose estimation results on COCO

Getting Started

Download ImageNet pre-trained checkpoints from Google Drive or Baidu Drive with password gq87.

Extract the file to get the following directory tree

|-- README.md
|-- ckpt
|   |-- detection
|   |-- human_pose
|   |-- segmentation
|-- config
|-- model
|-- pattern_zoo

Easy Use

Users can quickly use IC-Conv in the following simple ways.

from model.ic_resnet import ic_resnet50
import torch

pattern_path = 'pattern_zoo/detection/ic_resnet50_k9.json'
load_path = 'ckpt/detection/r50_imagenet_retrain/ckpt.pth.tar'

net = ic_resnet50(pattern_path=pattern_path)
state = torch.load(load_path, 'cpu')
net.load_state_dict(state, strict=False)
state_keys = set(state.keys())
model_keys = set(net.state_dict().keys())
missing_keys = model_keys - state_keys
print(missing_keys)
inputs = torch.rand(1, 3, 224, 224)
outputs = net.forward(inputs)
print(outputs.shape)

For 2d Human Pose Estimation using MMPose

MMPose users can use IC-Conv in the following ways.

  1. Copying the config files to the config path of mmpose, such as
cp human_pose/config/ic_res50_k13_coco_640x640.py your_mmpose_path/mmpose/configs/bottom_up/resnet/coco/ic_res50_k13_coco_640x640.py
  1. Copying the inception conv files to the model path of mmpose,
cp human_pose/model/ic_conv2d.py your_mmpose_path/mmpose/mmpose/models/backbones/ic_conv2d.py
cp human_pose/model/ic_resnet.py your_mmpose_path/mmpose/mmpose/models/backbones/ic_resnet.py
  1. Running it directly like this.

Model Zoo

We provided the pre-trained weights of IC-ResNet-50, IC-ResNet-101and IC-ResNeXt-101 (32x4d) on ImageNet and the weights trained on specific tasks.

For users with limited computing power, you can directly reuse our provided IC-Conv and ImageNet pre-training weights for detection, segmentation, and 2d human pose estimation tasks on other datasets.

Attentions: The links in the tables below are relative paths. Therefore, you should clone the repository and download checkpoints.

Object Detection

DetectorBackboneLrAPdilation_patterncheckpoint
Faster-RCNN-FPNIC-R501x38.9patternckpt/imagenet_retrain_ckpt
Faster-RCNN-FPNIC-R1011x41.9patternckpt/imagenet_retrain_ckpt
Cascade-RCNN-FPNIC-R501x42.4patternckpt/imagenet_retrain_ckpt
Cascade-RCNN-FPNIC-R1011x45.0patternckpt/imagenet_retrain_ckpt

Instance Segmentation

DetectorBackboneLrbox APmask APdilation_patterncheckpoint
Mask-RCNN-FPNIC-R501x40.035.9patternckpt/imagenet_retrain_ckpt
Mask-RCNN-FPNIC-R1011x42.637.9patternckpt/imagenet_retrain_ckpt
Cascade-RCNN-FPNIC-R501x43.436.8patternckpt/imagenet_retrain_ckpt
Cascade-RCNN-FPNIC-R1011x45.738.7patternckpt/imagenet_retrain_ckpt

2d Human Pose Estimation

We adjust the learning rate of resnet backbone in MMPose and get better baseline results. Please see the specific config files in config/human_pose/.

Results on COCO val2017 without multi-scale test
BackboneInput SizeAPdilation_patterncheckpoint
R50(mmpose)640x64047.9~~
R50640x64051.0~~
IC-R50640x64062.2patternckpt/imagenet_retrain_ckpt
R101640x64055.5~~
IC-R101640x64063.3patternckpt/imagenet_retrain_ckpt
Results on COCO val2017 with multi-scale test. 3 default scales ([2, 1, 0.5]) are used
BackboneInput SizeAP
R50(mmpose)640x64052.5
R50640x64055.8
IC-R50640x64065.8
R101640x64060.2
IC-R101640x64068.5

Acknowledgement

The human pose estimation experiments are built upon MMPose.

Citation

If our paper helps your research, please cite it in your publications:

@article{liu2020inception,
 title={Inception Convolution with Efficient Dilation Search},
 author={Liu, Jie and Li, Chuming and Liang, Feng and Lin, Chen and Sun, Ming and Yan, Junjie and Ouyang, Wanli and Xu, Dong},
 journal={arXiv preprint arXiv:2012.13587},
 year={2020}
}