效率网模型的重新实现。Keras。
efficientnet的Python项目详细描述
效率和Keras
这个存储库包含了efficientnet的keras重新实现,这是一个轻量级的卷积神经网络架构,在imagenet和 其他五个常用的转移学习数据集。
代码库很大程度上受到了TensorFlow implementation的启发。
目录
关于efficientnet模型
效率网络依赖于automl和复合缩放以在不影响资源效率的情况下获得优异的性能。AutoML Mobile framework帮助开发了一个移动大小的基线网络,efficientnet-b0,然后通过复合缩放方法对其进行改进以获得efficientnet-b1到b7的效率。
效率网络在ImageNet上实现最先进的精度,效率提高一个数量级:
在高精度领域,efficientnet-b7以66m参数和37b触发器在imagenet上达到了84.4%的top-1/97.1%的top-5精度。同时,该模型比前领导人Gpipe小8.4倍,CPU推理速度快6.1倍。
在中等精度的情况下,效率net-b1比ResNet-152小7.6倍,cpu推断速度快5.7倍,成像网精度相近。
与广泛使用的ResNet-50相比,efficientnet-b4在相似的flops约束下,将前1位精度从resnet-50的76.3%提高到82.6%(+6.3%)。
示例
- 初始化模型:
fromefficientnetimportEfficientNetB0model=EfficientNetB0(weights='imagenet')
- 加载预先训练的重量:
fromefficientnetimportload_modelmodel=load_model('path/to/model.h5')
请参阅jupyter笔记本here中加载模型和进行推理的完整示例。
模型
使用由作者提供的检查点转换的预训练权重,每个模型变量的性能如下:
Architecture | @top1* | @top5* | Weights |
---|---|---|---|
EfficientNetB0 | 0.7668 | 0.9312 | + |
EfficientNetB1 | 0.7863 | 0.9418 | + |
EfficientNetB2 | 0.7968 | 0.9475 | + |
EfficientNetB3 | 0.8083 | 0.9531 | + |
EfficientNetB4 | 0.8259 | 0.9612 | + |
EfficientNetB5 | 0.8309 | 0.9646 | + |
EfficientNetB6 | - | - | - |
EfficientNetB7 | - | - | - |
*-转换模型(imagenetval
集)的topk精度得分
安装
要求
keras >= 2.2.0
+tensorflow
scikit-image
从源安装
pip install -U git+https://github.com/qubvel/efficientnet
从PyPI安装
pip install -U efficientnet
常见问题
- 如何将原来的tensorflow检查点转换为keras hdf5?
选择目标目录(如dist
),并从repo目录运行converter script,如下所示:
./scripts/convert_efficientnet.sh --target_dir dist
您还可以选择通过添加--make_venv=true
创建包含所有依赖项的虚拟环境,并通过设置--tmp_working_dir=true
在自毁临时位置而不是目标目录中操作。
- 为什么还不支持b6和b7模型变体?
B6-B7的重量尚未提供,但可能很快就会出现。按照issue进行更新。