迁移学习之MobileNet(88层)和MobileNetV2(88层)
文章目录
- 1.实现的效果:
- 2.结果分析:
- 3.主文件TransorMobileNet.py:
1.实现的效果:
实际图片:
(1)MobileNet预测的第一个结果为:pug(哈巴狗)
(2)MobileNetV2预测的第一个结果为:West_Highland_white_terrier(西部高地白梗犬)
2.结果分析:
(1)虽然两种模型都预测为了狗,可是结果差别也较大,相比于之前的ResNet50,ResNet101,Inception_ResNet_V2差的较多(当然简单的测试说明不了什么问题,但是也能看出差别)。
(2)说明ResNet残差网络对于图像的预测效果比较好,也不能说明更深层的网络提取的特征一定比稍微浅层的好,就像之前ResNet50和ResNet101的比较结果,ResNet50输出的概率值就比ResNet101要好10个百分点左右(当然,一个简单的测试还是说明不了什么问题)。
(3)建议读者可以在以后选择图片的预测模型时,可以使用ResNet50,这个模型有50层,计算量也相对较少一些,预测的结果也比较好。
关于ResNet50和ResNet101:
https://mydreamambitious.blog.csdn.net/article/details/123906833
关于VGG16和VGG19:
https://mydreamambitious.blog.csdn.net/article/details/123906643
关于InceptionV3(159层),Xception(126层),Inception_ResNet_V2(572层):
https://mydreamambitious.blog.csdn.net/article/details/123907490
关于DenseNet121(121层),DenseNet169(169层),DenseNet201(201层):
https://mydreamambitious.blog.csdn.net/article/details/123908742
EfficientNetBX
https://mydreamambitious.blog.csdn.net/article/details/123929264
3.主文件TransorMobileNet.py:
import os
import cv2
import tensorflow
import numpy as np
from PIL import Image
from tensorflow import keras
from tensorflow.keras.preprocessing import image
from tensorflow.keras.preprocessing.image import img_to_array
from tensorflow.keras.applications.inception_v3 import preprocess_input,decode_predictionsdef load_MobileNet():#加载InceptionV3并且保留顶层(也就是全连接层)model_MobileNet=tensorflow.keras.applications.mobilenet.MobileNet(weights='imagenet')#图形路径curr_path=os.getcwd()img_path=curr_path+'\\images\\train\\dog\\1.jpg'#将图像转换为网络需要的大小,因为我们这里加载的模型都是固定输入大小224*224img=image.load_img(img_path,target_size=(224,224))#首先需要转换为向量的形式img_out=image.img_to_array(img)#扩充维度img_out=np.expand_dims(img_out,axis=0)#对输入的图像进行处理img_out=preprocess_input(img_out)# decode the results into a list of tuples (class, description, probability)# (one such list for each sample in the batch)#上面这段话的意思是输出包括(类别,图像描述,输出概率)preds=model_MobileNet.predict(img_out)#输出前三个结果的可能性print('Predicted: ',decode_predictions(preds,top=3)[0])print('Predicted: ',decode_predictions(preds,top=3))def load_MobileNetV2():# 加载Xception并且保留顶层(也就是全连接层)model_MobileNetV2 =tensorflow.keras.applications.mobilenet_v2.MobileNetV2(weights='imagenet')# 图形路径img_path = 'images/train/dog/1.jpg'# 将图像转换为网络需要的大小,因为我们这里加载的模型都是固定输入大小224*224img = image.load_img(img_path, target_size=(224, 224))# 首先需要转换为向量的形式img_out = image.img_to_array(img)# 扩充维度img_out = np.expand_dims(img_out, axis=0)# 对输入的图像进行处理img_out = preprocess_input(img_out)# decode the results into a list of tuples (class, description, probability)# (one such list for each sample in the batch)# 上面这段话的意思是输出包括(类别,图像描述,输出概率)preds = model_MobileNetV2.predict(img_out)# 输出前三个结果的可能性print('Predicted: ', decode_predictions(preds, top=3)[0])print('Predicted: ', decode_predictions(preds, top=3))if __name__ == '__main__':print('Pycharm')print('MobileNet: \\n')load_MobileNet()print('MobileNetV2: \\n')load_MobileNetV2()
迁移学习之MobileNet(88层)和MobileNetV2(88层)相关推荐
- 迁移学习、载入预训练权重和冻结权重
迁移学习就是载入别人预训练好的权重,拿别人的训练好的参数作为我们自己模型的初始化参数,再在这个基础上继续优化.比起从头开始一点一点随机初始化,让模型胡乱地找梯度最优的方向,肯定是迁移学习快啦. 目录 ...
- 一、迁移学习与fine-tuning有什么区别?
一.迁移学习 举个例子,假设boss让你做一下目标检测,这个数据集是关于光纤箱喷码字符检测的.问题是,数据集很少(只有1000张数据),里面有多干扰的信息,你发现从零训练开始训练yolo的效果很差,很 ...
- 使用迁移学习后使用微调再次提高模型训练的准确率
使用迁移学习后使用微调再次提高模型训练的准确率 1.微调 所谓微调:冻结模型库的底部的卷积层,共同训练新添加的分类器层和顶部部分卷积层.这允许我们"微调"基础模型中的高阶特征表示, ...
- python3下tensorflow练习(八)之迁移学习
这周帮同学做了一个CNN的分类任务,因为赶时间所以直接用InceptionV3的参数进行迁移学习,只替换最后一层全连接层,然后对自己的数据集进行4分类的训练.在最后这一层全连接层之前的网络层称之为瓶颈 ...
- 机器学习工程师 — Udacity 基于CNN和迁移学习创建狗品种分类器
卷积神经网络(Convolutional Neural Network, CNN) 项目:实现一个狗品种识别算法App 推荐你阅读以下材料来加深对 CNN和Transfer Learning的理解: ...
- Deeplearning4j 实战 (10):迁移学习--ImageNet比赛预训练网络VGG16分类花卉图片
Eclipse Deeplearning4j GitChat课程:https://gitbook.cn/gitchat/column/5bfb6741ae0e5f436e35cd9f Eclipse ...
- 迁移学习之InceptionV3(159层),Xception(126层),Inception_ResNet_V2(572层)(图像识别)
文章目录 1.实现的效果: 2.结果分析: 3.主文件TransorInception.py: 1.实现的效果: 实际图片: (1)从上面的输出效果来看,InceptionV3预测的第一个结果为:ch ...
- Tensorflow MobileNet移动端迁移学习指南
1.介绍 TensorFlow是用于数值计算的开源库,专门用于机器学习应用程序.笔者: csdn -固本培元 交流邮箱: leo_luopy@139.com 微信:leoluopy . 本文机器 ...
- 【迁移学习(Transfer L)全面指南】迁移学习中的bottlenecks(瓶颈层)
在学习How to Retrain an Image Classifier for New Categories的时候,在retrain刚开始的时候会建立一堆的bottlenecks文件,所以这到底是 ...
最新文章
- android内存取证实现,[内存取证]Volatility基本用法
- 首个ML的生物医药大型数据集,3行代码就能运行丨哈佛MIT斯坦福等出品
- ceph学习笔记之七 数据平衡
- 数据结构和算法-链表
- Java需要掌握的底层知识_java程序员需要知道的底层知识(一)
- 开源HTML5应用开发框架 - iio Engine
- java的URLConnection
- 线上MYSQL同步报错故障处理总结 实现同步不一致进行邮件报警
- java 数组或者链表输出
- 输出阻抗与带负载能力问题的分析
- kafka数据保存时间问题与kafka的性能测试
- ASP微信支付之扫码支付
- PS进阶篇——如何PS软件给公司单位图片加版权水印(六)
- 小米手机 miui 8.x开启开发者模式指导
- 如何评价腾讯云与 CODING 共同推出的云端编辑器 Cloud Studio?
- 金融机构业务连续性管理
- 5大代码规则,守护程序猿世界的爱与和平!
- Android蓝牙协议介绍
- 如何引导市场和社会力量发展社区托育养老等服务业态?
- 【开发工具】史上最全的IDEA快捷键总结 MAC版