pyconv
1.0.0
这是我们的论文“金字塔卷积:重新思考用于视觉识别的卷积神经网络”的 PyTorch 实现。 (请注意,这是 ImageNet 上的图像识别代码。有关语义图像分割/解析,请参阅此存储库:https://github.com/iduta/pyconvsegnet)
在 ImageNet 上训练的模型可以在这里找到。
PyConv 能够在基线上提供改进的识别功能(有关详细信息,请参阅论文)。
ImageNet 上的准确率(使用默认训练设置):
网络 | 50层 | 101层 | 152层 |
---|---|---|---|
残差网络 | 76.12%(模型) | 78.00%(模型) | 78.45%(模型) |
PyConvHGResNet | 78.48 %(模型) | 79.22 %(模型) | 79.36 %(模型) |
PyConvResNet | 77.88 %(模型) | 79.01 %(模型) | 79.52 %(模型) |
使用更复杂的训练设置可以显着提高 ImageNet 上的准确性(例如,使用额外的数据增强 (CutMix)、将 bach 大小增加到 1024、学习率为 0.4、余弦调度程序超过 300 个 epoch 并使用混合精度来加速训练):
网络 | 测试作物:224×224 | 测试作物:320×320 | |
---|---|---|---|
PyConvResNet-50(+增强) | 79.44 | 80.59 | (模型) |
PyConvResNet-101(+增强) | 80.58 | 81.49 | (模型) |
按照官方 PyTorch ImageNet 训练代码安装 PyTorch 和 ImageNet 数据集。
一个快速的替代方案(无需安装 PyTorch 和其他深度学习库)是使用 NVIDIA-Docker,我们使用了这个容器镜像。
要使用 DataParallel 训练模型(例如,具有 50 层的 PyConvResNet),请运行main.py
;您还需要提供result_path
(保存结果和日志的目录路径)和--data
(ImageNet 数据集的路径):
result_path=/your/path/to/save/results/and/logs/
mkdir -p ${result_path}
python main.py
--data /your/path/to/ImageNet/dataset/
--result_path ${result_path}
--arch pyconvresnet
--model_depth 50
要使用多处理分布式数据并行训练进行训练,请遵循官方 PyTorch ImageNet 训练代码中的说明。
如果您发现我们的工作有用,请考虑引用:
@article{duta2020pyramidal,
author = {Ionut Cosmin Duta and Li Liu and Fan Zhu and Ling Shao},
title = {Pyramidal Convolution: Rethinking Convolutional Neural Networks for Visual Recognition},
journal = {arXiv preprint arXiv:2006.11538},
year = {2020},
}