注意:efficientnet这个库在7月24的时候更新了,keras和tensorflow.keras框架也可以用,
想要学习EfficientNet,如果你要训练的模型是7月24日之前的,请安装0.0.4版本。安装代码: pip install -U efficientnet==0.0.4 -i https://pypi.tuna.tsinghua.edu.cn/simple
环境:tensorflow > 1.12.0、Keras > 2.2.0 、keras_applications > 1.0.7
安装方法:参考链接
1、从github上安装(一般不推荐,网太慢)
pip install -U git+https://github.com/qubvel/efficientnet
2、安装稳定版(-i 后边是清华提供的镜像文件,速度飞快)
pip install -U efficientnet -i https://pypi.tuna.tsinghua.edu.cn/simple
3、安装最新版
pip install -U --pre efficientnet -i https://pypi.tuna.tsinghua.edu.cn/simple
为什么EfficientNet是最好的分类网络、什么是EfficientNet?
自己训练这个网络有点不切实际,肯定是用迁移学习进行分类任务的。下面先罗列我参考过的一些文章,如果是在tensorflow、keras环境下,则简称tf-k环境下。
tf-k环境下:
pytorch环境下:
本代码用来参加了AI研习社举办的一个分类竞赛,竞赛地址https://god.yanxishe.com/26。第一次用EfficientNet效果还不错,正确率达到95%。
我的代码运行在kaggle提供的GPU环境下。kaggle每周都会免费提供30个小时的GPU训练时常,对穷学生来说很实用。
闲话不多说,正式介绍代码:
因为efficientnet这个库在7月24号更新过,更新后tf-k环境下也可以用。如果你要用更新前的版本则需安装efficientnet==0.0.4版本。并且使用方法也有所不同:
老版本:
#导入
from efficientnet import EfficientNetB0 as Net
#使用
conv_base = Net(weights='imagenet', include_top=False, input_shape=input_shape)
新版本:
#导入
import efficientnet.tfkeras as efn
#使用
base_model = efn.EfficientNetB0(
input_shape=(224,224,3),
wights='imagenet',
include_top=False)
竞赛的全部代码(不需要积分就能下载):https://download.csdn.net/download/jiachang98/12167199
注:
代码上传的时候我选的不需要积分,不知道为啥审核成功后就需要积分,如果你积分充裕就在csdn上下载,如果不充裕就来百度网盘下载,链接:
链接:https://pan.baidu.com/s/1VfYcAGIg-aJcPigG1N7Zew
提取码:vpqv
数据集:https://static.leiphone.com/food_challenge2.zip
EfficientNet模型参数:https://github.com/Callidior/keras-applications/releases