复现VGG19训练自定义图像分类
1、复现VGG训练自定义图像分类,成功了哈哈。
需要代码工程可联系博主qq号,在左边连接可找到。
核心代码:
- # coding:utf-8
- import tensorflow as tf
- import os
- from load_vgg19_model import net
- os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
- def VGG19_image_classifier(X,Y,nn_classes):
- vgg19_path = "./vgg19_model/imagenet-vgg-verydeep-19.mat"
- net_list,mean_pixel,all_layers = net(vgg19_path,X)
- vgg19_pool5 = net_list[-1]["pool5"]
- vgg19_pool5_shape = vgg19_pool5.get_shape().as_list()
- vgg19_pool5_number = vgg19_pool5_shape[1]*vgg19_pool5_shape[2]*vgg19_pool5_shape[3]
- weights = {
- 'wd1': tf.Variable(tf.random_normal([vgg19_pool5_number, 4096])),
- 'wd2': tf.Variable(tf.random_normal([4096, 4096])),
- 'out': tf.Variable(tf.random_normal([4096, nn_classes]))
- }
- biases = {
- 'bd1': tf.Variable(tf.zeros([4096])),
- 'bd2': tf.Variable(tf.zeros([4096])),
- 'out': tf.Variable(tf.zeros([nn_classes]))
- }
- # 全连接一层
- _densel = tf.reshape(vgg19_pool5, [-1, vgg19_pool5_number])
- fc6 = tf.add(tf.matmul(_densel,weights["wd1"]),biases["bd1"])
- relu6 = tf.nn.relu(fc6)
- # 全连接二层
- fc7 = tf.add(tf.matmul(relu6,weights["wd2"]),biases["bd2"])
- relu7 = tf.nn.relu(fc7)
- # 输出层
- fc8 = tf.add(tf.matmul(relu7,weights["out"]),biases["out"])
- # out = tf.nn.softmax(fc8)
- out = fc8
- # 损失函数 loss
- loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=Y, logits=out)) # 计算交叉熵
- # 优化目标 optimizing
- optimizing = tf.train.AdamOptimizer(0.0001).minimize(loss) # 使用adam优化器来以0.0001的学习率来进行微调
- # 精确度 accuracy
- correct_prediction = tf.equal(tf.argmax(Y, 1), tf.argmax(out, 1)) # 判断预测标签和实际标签是否匹配
- accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
- # 想要保存的模型参数,方便加载找到。
- tf.add_to_collection("loss", loss)
- tf.add_to_collection("out", out)
- tf.add_to_collection("accuracy", accuracy)
- tf.add_to_collection("optimizing", optimizing)
- return {
- "loss": loss,
- "optimizing": optimizing,
- "accuracy": accuracy,
- "out": out,
- "mean_pixel":mean_pixel
- }
小批量梯度训练方法如下图,才训练1次达到88%。
复现VGG19训练自定义图像分类的更多相关文章
- 基于Tensorflow + Opencv 实现CNN自定义图像分类
摘要:本篇文章主要通过Tensorflow+Opencv实现CNN自定义图像分类案例,它能解决我们现实论文或实践中的图像分类问题,并与机器学习的图像分类算法进行对比实验. 本文分享自华为云社区< ...
- Tesseract-OCR-v5.0中文识别,训练自定义字库,提高图片的识别效果
1,下载安装Tesseract-OCR 安装,链接地址https://digi.bib.uni-mannheim.de/tesseract/ 2,安装成功 tesseract -v 注意:安装后, ...
- Yolo训练自定义目标检测
Yolo训练自定义目标检测 参考darknet:https://pjreddie.com/darknet/yolo/ 1. 下载darknet 在 https://github.com/pjreddi ...
- [炼丹术]YOLOv5训练自定义数据集
YOLOv5训练自定义数据 一.开始之前的准备工作 克隆 repo 并在Python>=3.6.0环境中安装requirements.txt,包括PyTorch>=1.7.模型和数据集会从 ...
- yolov5训练自定义数据集
yolov5训练自定义数据 step1:参考文献及代码 博客 https://blog.csdn.net/weixin_41868104/article/details/107339535 githu ...
- 利用Tensorflow训练自定义数据
很多正在入门或刚入门TensorFlow机器学习的同学希望能够通过自己指定图片源对模型进行训练,然后识别和分类自己指定的图片.但是,在TensorFlow官方入门教程中,并无明确给出如何把自定义数据输 ...
- tensorflow从训练自定义CNN网络模型到Android端部署tflite
网上有很多关于tensorflow lite在安卓端部署的教程,但是大多只讲如何把训练好的模型部署到安卓端,不讲如何训练,而实际上在部署的时候,需要知道训练模型时预处理的细节,这就导致了自己训练的模型 ...
- MMDetection 快速开始,训练自定义数据集
本文将快速引导使用 MMDetection ,记录了实践中需注意的一些问题. 环境准备 基础环境 Nvidia 显卡的主机 Ubuntu 18.04 系统安装,可见 制作 USB 启动盘,及系统安装 ...
- Scaled-YOLOv4 快速开始,训练自定义数据集
代码: https://github.com/ikuokuo/start-scaled-yolov4 Scaled-YOLOv4 代码: https://github.com/WongKinYiu/S ...
随机推荐
- Scala快速入门-基本数据结构
模式匹配 使用用模式匹配实现斐波那契 def fibonacci(in: Any): Int = in match { case 0 => 0 case 1 => 1 case n: In ...
- OSG学习:使用已有回调示例
回调的类型有很多种,一般很容易就想到的是UpdateCallBack,或者EventCallBack,回调的意思就是说,你可以规定在某件事情发生时启动一个函数,这个函数可能做一些事情.这个函数就叫做回 ...
- 【week2】 累计进度条、psp、饼图
每周例行报告 本周PSP 类别 任务 开始时间 结束时间 被打断时间 总计工作时间 2016年9月9日 读书 构建之法-5.6章 19:00 20:00 0 60min 2016年9月10日 看博客 ...
- ubuntu 只有客人会话登录(第一次深刻感受文件权限的威力 )
为了测试docker的挂载权限,把宿主机的/etc/passwd文件挂载到了虚机当中,进入虚机想看下能不能直接对我宿主机上的文件进行操作,把/etc/passwd删掉了最后十行...结果宿主机上的/e ...
- React & `event.persist()`
React & event.persist() event.persist() https://reactjs.org/docs/events.html#event-pooling Tabs ...
- 第一章 Spring 概述
Spring框架的生态,已经成了JavaWeb开发的事实标准 以IOC与AOP为基础,提供了一整套JavaWeb的开发解决方案 在需要引入功能前,先看看有没有Spring的实现,或者其他框架,看看能否 ...
- RT-thread内核之小内存管理算法
一.动态内存管理 动态内存管理是一个真实的堆(Heap)内存管理模块,可以在当前资源满足的情况下,根据用户的需求分配任意大小的内存块.而当用户不需要再使用这些内存块时,又可以释放回堆中供其他应用分配 ...
- 第三方框架-纯代码布局:Masonry的简单使用
Masonry是一个对系统NSLayoutConstraint进行封装的第三方自动布局框架,采用链式编程的方式提供给开发者API.系统AutoLayout支持的操作,Masonry都支持,相比系统AP ...
- AC自动机裸题
HDU 2222 Keywords Search 模板题.对模式串建立AC自动机然后在trie树上找一遍目标串即可. # include <cstdio> # include <cs ...
- BZOJ 1509 逃学的小孩(树的直径)
题意:从树上任找三点u,v,w.使得dis(u,v)+min(dis(u,w),dis(v,w))最大. 有一个结论u,v必是树上直径的两端点. 剩下的枚举w就行了. 具体不会证... # inclu ...