python与深度学习(十四):CNN和IKUN模型二
目录
- 1. 说明
- 2. IKUN模型的CNN模型测试
- 2.1 导入相关库
- 2.2 加载模型
- 2.3 设置保存图片的路径
- 2.4 加载图片
- 2.5 图片预处理
- 2.6 对图片进行预测
- 2.7 显示图片
- 3. 完整代码和显示结果
- 4. 多张图片进行测试的完整代码以及结果
1. 说明
本篇文章是对上篇文章猫狗大战训练的模型进行测试。首先是将训练好的模型进行重新加载,然后采用opencv对图片进行加载,最后将加载好的图片输送给模型并且显示结果。
2. IKUN模型的CNN模型测试
2.1 导入相关库
在这里导入需要的第三方库如cv2,如果没有,则需要自行下载,自行下载时候一般建议镜像源,这样下载的快。
from tensorflow import keras
import skimage, os, sys, cv2
from PIL import ImageFont, Image, ImageDraw # PIL就是pillow包(保存图像)
import numpy as np
# 导入tensorflow
import tensorflow as tf
# 导入keras
from tensorflow import keras
2.2 加载模型
把训练好的模型也加载进来,这里不用加载数据,因为数据是自制的。
# 加载my_ikun.h5文件,重新生成模型对象
recons_model = keras.models.load_model('my_ikun.h5')
2.3 设置保存图片的路径
将数据集的某个数据以图片的形式进行保存,便于测试的可视化,这里在之前已经分了测试集,因此设置图片路径即可。
在这里设置图片存储的位置,便于将图片进行存储。
# 创建图片保存路径
test_file_path = os.path.join(sys.path[0], 'imgs', 'test1', '4.jpg')
上述代码是将test文件夹里面的4.jpg进行测试,如果想测试其它的只需改为x.jpg即可。

2.4 加载图片
采用cv2对图片进行加载,用opencv库也就是cv2读取图片的时候,图片是三通道的,而训练的模型是三通道的,因此不只用取单通道,而是三通道,这里和之前的灰度图不同。
# 加载本地test.png图像
image = cv2.imread(test_file_path)
# 复制图片
test_img = image.copy()
# 将图片大小转换成(150,150)
test_img = cv2.resize(test_img, (150,150))
2.5 图片预处理
对图片进行预处理,即进行归一化处理和改变形状处理,这是为了便于将图片输入给训练好的模型进行预测。因此在这里将形状改变为1501503的,前面的1是样本数,所以是(1,150,150,3)。
# 预处理: 归一化 + reshape
new_test_img = (test_img/255.0).reshape(1, 150,150, 3)
2.6 对图片进行预测
将图片输入给训练好我的模型并且进行预测。
因为是二分类,所以预测的结果是1个概率值,所以需要进行处理, 大于0.5的是坤坤,小于0.5的是鸡。
# 预测
y_pre_pro = recons_model.predict(new_test_img, verbose=1)
# 哪一类
class_id = np.argmax(y_pre_pro, axis=1)[0]
print('test.png的预测概率:', y_pre_pro)
print('test.png的预测概率:', y_pre_pro[0, class_id])
if y_pre_pro[0, class_id] > 0.5:print('png的所属类别:', '坤哥')
else:print('png的所属类别:', '鸡哥')
2.7 显示图片
对预测的图片进行显示,把预测的数字显示在图片上。
下面5行代码分别是创建窗口,设定窗口大小,显示图片,停留图片,清除内存。
# # 显示
cv2.namedWindow('img', 0)
cv2.resizeWindow('img', 500, 500) # 自己设定窗口图片的大小
cv2.imshow('img', image)
cv2.waitKey()
cv2.destroyAllWindows()
3. 完整代码和显示结果
以下是完整的代码和图片显示结果。
from tensorflow import keras
import skimage, os, sys, cv2
from PIL import ImageFont, Image, ImageDraw # PIL就是pillow包(保存图像)
import numpy as np
# 导入tensorflow
import tensorflow as tf
# 导入keras
from tensorflow import keras# 加载my_ikun.h5文件,重新生成模型对象
recons_model = keras.models.load_model('my_ikun.h5')
# 创建图片保存路径
test_file_path = os.path.join(sys.path[0], 'imgs', 'test1', '4.jpg')
# 加载本地test.png图像
image = cv2.imread(test_file_path)
# 复制图片
test_img = image.copy()
# 将图片大小转换成(150,150)
test_img = cv2.resize(test_img, (150,150))
# 预处理: 归一化 + reshape
new_test_img = (test_img/255.0).reshape(1, 150,150, 3)
# 预测
y_pre_pro = recons_model.predict(new_test_img, verbose=1)
# 哪一类
class_id = np.argmax(y_pre_pro, axis=1)[0]
print('test.png的预测概率:', y_pre_pro)
print('test.png的预测概率:', y_pre_pro[0, class_id])
if y_pre_pro[0, class_id] > 0.5:print('png的所属类别:', '坤哥')
else:print('png的所属类别:', '鸡哥')
# # 显示
cv2.namedWindow('img', 0)
cv2.resizeWindow('img', 500, 500) # 自己设定窗口图片的大小
cv2.imshow('img', image)
cv2.waitKey()
cv2.destroyAllWindows()
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
1/1 [==============================] - 0s 315ms/step
test.png的预测概率: [[1.]]
test.png的预测概率: 1.0
png的所属类别: 坤哥

4. 多张图片进行测试的完整代码以及结果
为了测试更多的图片,引入循环进行多次测试,效果更好。
from tensorflow import keras
import skimage, os, sys, cv2
from PIL import ImageFont, Image, ImageDraw # PIL就是pillow包(保存图像)
import numpy as np# 加载my_ikun.h5文件,重新生成模型对象
recons_model = keras.models.load_model('my_ikun.h5')prepicture = int(input("input the number of test picture :"))
for i in range(prepicture):path1 = input("input the test picture path:")# 创建图片保存路径test_file_path = os.path.join('imgs', 'test1', path1)# 加载本地test.png图像image = cv2.imread(test_file_path)# 复制图片test_img = image.copy()# 将图片大小转换成(150,150)test_img = cv2.resize(test_img, (150, 150))# 预处理: 归一化 + reshapenew_test_img = (test_img / 255.0).reshape(1, 150, 150, 3)# 预测y_pre_pro = recons_model.predict(new_test_img, verbose=1)# 哪一类数字class_id = np.argmax(y_pre_pro, axis=1)[0]print('test.png的预测概率:', y_pre_pro)print('test.png的预测概率:', y_pre_pro[0, class_id])if y_pre_pro[0, class_id] > 0.5:print('png的所属类别:', '坤哥')else:print('png的所属类别:', '鸡哥')# # 显示cv2.namedWindow('img', 0)cv2.resizeWindow('img', 500, 500) # 自己设定窗口图片的大小cv2.imshow('img', image)cv2.waitKey()cv2.destroyAllWindows()
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
input the number of test picture :2
input the test picture path:3.jpg
1/1 [==============================] - 0s 170ms/step
test.png的预测概率: [[0.99739295]]
test.png的预测概率: 0.99739295
png的所属类别: 坤哥

input the test picture path:10.jpg
1/1 [==============================] - 0s 163ms/step
test.png的预测概率: [[0.09064844]]
test.png的预测概率: 0.09064844
png的所属类别: 鸡哥

相关文章:
python与深度学习(十四):CNN和IKUN模型二
目录 1. 说明2. IKUN模型的CNN模型测试2.1 导入相关库2.2 加载模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章猫狗大战训练的模型进行测试。…...
chrome扩展在popup、background、content之间通信解决传输文件问题
文章目录 背景介绍案例介绍代码示例popup页面,上传文件页面popup页面,js上传代码,file文件转base64background监听消息,base64转file文件,axios上传 附-转base64后直接下载 背景介绍 示例扩展API版本MV2。 以弹…...
Oracle获取创建对象的DDL脚本
Oracle获取创建对象的DDL脚本 Oracle获取创建对象的DDL脚本查看 dbms_metadata.get_ddl()函数的定义 Oracle获取创建对象的DDL脚本 例如,对tzq schema下的表 test2,查看DDL脚本的SQL如下: SELECT SELECT dbms_metadata.get_ddl(upper(table…...
《算法竞赛·快冲300题》每日一题:“01树”
《算法竞赛快冲300题》将于2024年出版,是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码,以中低档题为主,适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 0…...
Mac提示文件:已损坏,无法打开。你应该把它移到废纸篓
文章目录 一、电脑信息二、打开任何来源设置三、更改应用程序拓展属性 一、电脑信息 我的是新版的Venture 13的系统。UI改的比较多。与之前的配置还是有很大的区别的。 打开下载的软件,显示已经损坏,打不开。抛开软件本身的问题外,一般是Ma…...
探索嵌入式系统:从入门到实践
随着科技的飞速发展,嵌入式系统已经成为了我们生活中不可或缺的一部分。从智能手机、智能家居到工业自动化设备,嵌入式系统的应用已经渗透到了各个领域。那么,如何学习嵌入式系统呢?本文将从入门到实践,为你详细解答。…...
网络安全知识点整理(作业2)
目录 一、js函数声明->function 第一种 第二种 第三种 二、this关键字 this使用场合 1.全局环境 2.构造函数 3.对象的方法 避免多层this 三、js的同步与异步 定时器 setTimeout和setInterval 同步与异步的例子 四、宏任务与微任务 分辨宏任务与微任务 一、js…...
idea数据库快速上手-库操作与表结构和数据操作
引言 对数据库的操作无非就是执行SQL语句,要想熟练操作数据库,就要熟练运用SQL语句。 一,数据库操作 展示当前服务器内的数据库 -- 展示服务器内的数据库 show databases; show schemas; 执行结果: 创建数据库: --…...
当“国潮”遇见“双语” 以传承之心种下一颗文化的种子
看,活灵活现的纸片人在“跳舞”。光影的辉映下,两个形神兼备的“齐天大圣”究竟孰真孰假?舞台上,京西皮影非遗传承人王熙和5岁的Mona小朋友正在用双语为大家带来一段“真假美猴王”的好戏。生动的皮影造型和精彩的故事演绎看得台下…...
计划管理与项目管理:有何区别?
简而言之,是的。尽管它们经常互换使用并对全局产生影响,但它们是完全不同的。 在本文中,我们将了解计划和项目管理之间的差异,提供每个示例,并向您展示如何使计划和项目管理工作更有效地实现您的业务目标。 计划管理与…...
个人信息保护合规审计如何做?
8月3日,为指导、规范个人信息保护合规审计活动,根据《中华人民共和国个人信息保护法》等法律法规,国家互联网信息办公室就《个人信息保护合规审计管理办法(征求意见稿)》(简称《办法》)及配套的…...
HTTP杂谈之Referer和Origin请求头再探
一 关于Referer和Origin的汇总 1) 知识是凌乱的,各位看官看个热闹即可2) 内容不断更新1、理解有盲区,需要及时纠正2、内容交叉有重复,需要适当删减3、扩展视野3) 以下内容都与Referer和Origin请求头有关联 nginx防盗链 HTTP杂谈之Referrer-Policy响应头 iframe标签referre…...
数学建模-爬虫入门
Python快速入门 简单易懂Python入门 爬虫流程 获取网页内容:HTTP请求解析网页内容:Requst库、HTML结果、Beautiful Soup库储存和分析数据 什么是HTTP请求和响应 如何用Python Requests发送请求 下载pip macos系统下载:pip3 install req…...
HSRM各表
文章目录 表规则接口种类服务与网关路由菜单一、采购申请1、采购申请—查询2、采购申请-操作记录二、采购申请跟踪报表1、采购申请跟踪报表—列表查询三、寻源1、寻源大厅—列表查询2、寻源大厅—询价单明细3、寻源大厅—物料明细4、寻源大厅—供应商列表5、寻源模板—列表查询…...
Ansible自动化运维工具 —— Playbook 剧本
playbooks 本身由以下各部分组成 (1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 (2)Variables:变量 (3)Templates:模…...
第二章:多态
系列文章目录 文章目录 系列文章目录前言多态的概念概念 多态的定义及实现多态的构成条件虚函数虚函数的重写C11 override 和 final重载、覆盖(重写)、隐藏(重定义)的对比 抽象类概念接口继承和实现继承 多态的原理虚函数表多态的原理动态绑定与静态绑定 单继承和多继承关系的虚…...
C++面向对象设计基础
一般类、&、const、模板、友元函数、操作符重载基本用法及实现 complex.h #ifndef COMPLEX_H #define COMPLEX_H #include<ostream> using namespace std;template<typename T> class Complex{public:Complex():re(0),img(0){}// 为什么构造函数不能传引用&a…...
Linux定时运行sh脚本,如果sh文件已经在运行,则忽略本次运行
需求来源 我需要linux的crontab定期每10分钟运行lan.sh脚本。但由于lan.sh运行需要较长时间,有时超过10分钟。这样会导致系统多次运行lan.sh脚本,引发运行堆积,导致一些非必要的错误。 解决方法 解决方法是写一个脚本,如果lan.…...
SpringBoot项目中的web安全防护
最近这个月公司对项目进行了几次安全性扫描,然后扫描出来了一些安全漏洞,所以最近也一直在修复各种安全漏洞,还有就是最近在备考软考高级系统架构设计师,也刚好复习到了网络安全这一个章节,顺便将最近修复的安全漏洞总…...
stm32和python串口数据收发
1-1 串口发送端(stm32) 1字符串发送 void USART_SendData(USART_TypeDef* USARTx, uint16_t Data) {/* Check the parameters */assert_param(IS_USART_ALL_PERIPH(USARTx));assert_param(IS_USART_DATA(Data)); /* Transmit Data */USARTx->DR (D…...
C++ 从 0 入门(二)|引用与指针区别、函数重载、内联函数(面试高频)
大家好,我是网域小星球。 本篇聚焦 C 面试核心考点,全是面试官必问、笔试题常考内容,衔接上一篇基础,不冗余、不堆砌,只讲核心用法 面试踩分点,所有代码 VS2022 可直接运行,学完能应对 C 基础…...
智能代码生成质量保障(2024年Gartner验证的TOP3工业级检测工具链深度拆解)
第一章:智能代码生成代码质量保障 2026奇点智能技术大会(https://ml-summit.org) 智能代码生成正从辅助编程工具演进为软件交付链路中可信赖的质量守门人。其质量保障能力不再仅依赖模型输出的语法正确性,而需贯穿语义一致性、安全合规性、可维护性与运…...
Zotero中文文献管理终极指南:Jasminum插件完整教程
Zotero中文文献管理终极指南:Jasminum插件完整教程 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 你知道吗ÿ…...
别让焦虑摧毁了你,试试这5个小技巧
凌晨两点,手机屏幕还亮着,明明困得眼皮打架,脑子却像装了台永动机——明天的汇报会不会搞砸?下个月的房租还没着落?朋友那句无心的话是不是在暗示什么?……越想越慌,越慌越清醒,最后…...
YDFID-1:如何用开源数据集彻底革新纺织行业的AI质检?
YDFID-1:如何用开源数据集彻底革新纺织行业的AI质检? 【免费下载链接】YDFID-1 Yarn-dyed Fabric Image Dataset Version1. From Zhang Hongwei, Artificial Intelligence Research Group, Xi an Polytechnic University. 项目地址: https://gitcode.c…...
利用 Global Speed 实现视频学习效率倍增的实战策略
视频学习已成为当代知识获取的主流方式之一。 从在线课程到技术讲座,从学术会议到行业分享,视频内容以直观生动的形式承载知识传播使命。 然而,被动接收式的观看模式往往导致学习效率低下。 Global Speed 视频倍速插件为解决这一问题提供了技…...
Excalidraw手绘白板:5分钟上手的终极协作绘图指南
Excalidraw手绘白板:5分钟上手的终极协作绘图指南 【免费下载链接】excalidraw Virtual whiteboard for sketching hand-drawn like diagrams 项目地址: https://gitcode.com/GitHub_Trending/ex/excalidraw 想要一款既专业又轻松的手绘风格白板工具吗&#…...
团队协作:pre-commit 配置与实战进阶指南
1. 为什么团队需要 pre-commit 自动化检查 第一次在团队推行 pre-commit 时,我遇到了这样的场景:新来的前端开发同事提交了一段 JavaScript 代码,由于缩进风格不一致,导致代码审查时花了20分钟讨论该用 tab 还是空格。这种事情每周…...
题解:洛谷 AT_abc424_e [ABC424E] Cut in Half
本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大家订阅我的专栏:算法…...
源代码论文分享|做“系统设计与实现”类题目时,真的很需要这种成套资料!
很多人做课程设计、毕业设计时,最难的不是“不会写”,而是不知道一篇完整的“系统设计与实现”到底该长什么样:论文怎么展开,代码怎么组织,功能怎么落地,截图和结构图放到哪里才顺。 我自己当年做这类题目的…...
