环境搭建

注意: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是最好的分类网络、什么是EfficientNet?

EfficientNet实例代码

自己训练这个网络有点不切实际,肯定是用迁移学习进行分类任务的。下面先罗列我参考过的一些文章,如果是在tensorflow、keras环境下,则简称tf-k环境下。

tf-k环境下:

本人的代码案例介绍:

    本代码用来参加了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