前段时间做了一个简单的图像分类功能,采用Tensorflow-slim下的InceptionV3、InceptionV4网络模型,现在记录下两者在训练过程中的准确率、训练时间等进行一些比较。

项目地址:https://github.com/MrZhousf/tf-slim-inception

硬件配置如下:

系统:Ubuntu16.04TSL 显卡:GTX1080ti(11GB) x 2 处理器:i7-6800K(12core) 内存:16GB

环境:tensorflow1.8 + python2.7

训练数据:flowers

共5类:daisy(633项)、dandelion(898项)、roses(641项)、sunflowers(699项)、tulips(799项)

下载链接:  http://download.tensorflow.org/example_images/flower_photos.tgz

建立InceptionV3与InceptionV4模型训练任务,如下:

由于开发机器上有两块GPU显卡,我们将两个模型一起训练。inception_v3 由第二块GPU计算,inception_v4由第一块GPU计算,训练的batch_size均为32,learning_rate均为0.01,image_size均为299,保持其他训练参数一致,这样方便比较两者的性能。为了快速得到有效的训练成果,我们采用预训练模型进行训练。

预训练模型文件尺寸对比:

可见inception_v4比inception_v3预训练模型要大很多。由此推测inception_v4的frozen_graph.pb肯定要比inception_v3大。我们看下两个网络模型训练了100000次后生成的frozen_graph.pb的大小如下:

可见inception_v4比inception_v3的frozen_graph.pb模型文件要大很多。

开始训练,我们先看下两个模型在训练速度上的区别:

上面的为inception_v3训练日志,下面的为inception_v4训练日志,可以看出inception_v3每步约0.12秒而inception_v4每步约0.22秒,两者相差约0.1秒,在训练速度上inception_v3要比inception_v4快很多

看下GPU以及CPU的消耗情况:

接下来我们看下训练次数和准确率的tensorboard:

这张图片显示了inception_v3在训练100000次过程中的准确率和召回率变化。

这张图片显示了inception_v4在训练100000次过程中的准确率和召回率变化。

统计训练结果如上,在准确率上inception_v4要比inception_v3高一些。

综上所述,在选择分类模型时,我们可以结合模型文件大小、训练时间和准确率等情况找到符合自己需求的即可。

附-评估:

找个花测试下:

再测试一张:

最后测试一张dog的图片:

woo.... 竟然把狗分类成郁金香(tulips)了。。。其实58.75%准确率可以作为置信度对分类器进行业务处理,例如准确率大于90%则分类结果可信,否则说明该图片不在分类器范围类。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐