图像分类任务的可视化脚本,生成类别json字典文件

1. 前言

之前的图像分类任务可视化,都是在train脚本里, 用torch中dataloader将图片和类别加载,然后利用matplotlib库进行可视化。

如这篇文章中:CNN 卷积神经网络对染色血液细胞分类(blood-cells)

在分类任务中,必定经历过图像预处理,缩放啊、随即裁剪啊之类的,可视化效果不太明显

本章将从数据角度出发,直接根据数据目录将图像可视化,随机展示所有图片的四张图片,可视化后并且保存

目标检测的可视化可以参考:

关于目标检测任务中,YOLO(txt格式)标注文件的可视化 

关于目标检测任务中,XML(voc格式)标注文件的可视化

2. 根据目录可视化 (无需类别的json文件)

目录如下:代码应该data同一路径

2.1 代码介绍

root 传入的是文件夹路径,也就是多个类别文件夹的上一级目录

将所有图像保存,为了知道图片的类别,需要把图片的父目录保存。为了方便,这里生成一个列表文件,key 是目录类别,value 是相应的图像路径

展示的代码很简单,生成随机数,将列表的文件提取出来,然后展示四张就行了

2.2 可视化结果

可视化结果

代码会在当前目录生成刚刚可视化展示的图片

2.3 完整代码

如下:

import os
import matplotlib.pyplot as plt
import random
from PIL import Imagedef main(path):classes = [i for i in os.listdir(path)]         # ['cat', 'dog']# 将所有图片按照 类别:路径 字典形式保存images_path = []  # [{'cat': './data/train\\cat\\Baidu_0000.jpeg'}, {'cat': './data/train\\cat\\Baidu_0002.jpeg'}]for cla in classes:for i in os.listdir(os.path.join(path,cla)):dic = {}  # 类别:图像路径img_path = os.path.join(path,cla,i)dic[cla] = img_path             # {'cat': './data/train\\cat\\Baidu_0000.jpeg'}images_path.append(dic)# 随机展示4张图像plt.figure(figsize=(12,8))for i in range(4):r = random.randint(0,len(images_path)-1)      # 生成随机数label,im_path= list(images_path[r].keys())[0],list(images_path[r].values())[0]#  cat , ./data/train\cat\Baidu_0049.jpegim = Image.open(im_path)plt.subplot(2,2,i+1)plt.title(label)plt.imshow(im)plt.savefig('show.png')     # 保存图片plt.show()if __name__ == '__main__':root = './data/train'       # 传入目录main(path=root)

3.生成类别json字典文件

图像分类任务,有的没有提供类别的字典文件,这里也记录一下如何生成json文件

可以通过下面代码生成

import os
import jsondef main(path):classes = [i for i in os.listdir(path)]  # ['cat', 'dog']labels = {}         # 类别的字典文件for index,name in enumerate(classes):labels[index] = namelabels = json.dumps(labels,indent=4)with open('./class_indices.json','w') as f:         # 保存成json文件f.write(labels)if __name__ == '__main__':root = './data/train'  # 传入目录main(path=root)

结果如下:


或者直接新建json文件,然后对照目录按照上面的方式输入也行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/611952.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

零基础学习数学建模——(一)什么是数学建模

本篇博客将详细介绍什么是数学建模。 文章目录 个人简介什么是数学建模(一)引例:高中数学里的简单线性规划问题数学建模的定义及用途数学建模的定义数学建模的用途 正确认识数学建模 个人简介 ​ 本人在本科阶段获得过国赛省一、mathorcup数…

ssm基于Web的汽车客运订票系统的设计与实现论文

毕业设计(论文) 汽车客运订票系统 姓 名 ______________________ 学 号 ______________________ 班 级 ______________________ 专 业 ______________________ 院 部 ______________________ 指导教师 ______________________ 年 月 日 目 录 目 录 …

Unity3d 实现直播功能(无需sdk接入)

Unity3d 实现直播功能 需要插件 :VideoCapture 插件地址(免费的就行) 原理:客户端通过 VideoCapture 插件实现推流nodejs视频流转服务进行转发,播放器实现rtmp拉流 废话不多说,直接上 CaptureSource我选择的是屏幕录制,也可以是其他源 CaptureType选择LIVE–直播形式 LiveSt…

FastDFS之快速入门、上手

知识概念 分布式文件系统 通过计算机网络将各个物理存储资源连接起来。通过分布式文件系统,将网络上任意资源以逻辑上的树形结构展现,让用户访问网络上的共享文件更见简便。 文件存储的变迁: 直连存储:直接连接与存储&#xf…

websocket介绍并模拟股票数据推流

Websockt概念 Websockt是一种网络通信协议,允许客户端和服务器双向通信。最大的特点就是允许服务器主动推送数据给客户端,比如股票数据在客户端实时更新,就能利用websocket。 Websockt和http协议一样,并不是设置在linux内核中&a…

代码随想录算法训练营Day20 | 40.组合总和||、39.组合总和、131.分割回文串

LeetCode 40 组合总和|| 本题思路:由于解集中不能包含重复的组合,所以要进行去重的操作。 首先要将数组先进行一个排序操作然后在树层进行去重操作!(不懂的可以去看代码随想录讲解视频)利用一个 used 数组来表示&…

全链路压力测试有哪些主要作用

全链路压力测试是在软件开发和维护过程中不可或缺的一环,尤其在复杂系统和高并发场景下显得尤为重要。下面将详细介绍全链路压力测试的主要作用。 一、全链路压力测试概述 全链路压力测试是指对软件系统的全部组件(包括前端、后端、数据库、网络、中间件等)在高负载…

解决 ubuntu 下编译文件的时候与 YAML 相关的的报错

输入: catkin build -DCMAKE_C_COMPILERgcc-8 -DCMAKE_CXX_COMPILERg-8 或 catkin build airsim_tutorial_pkgs -DCMAKE_C_COMPILERgcc-8 -DCMAKE_CXX_COMPILERg-8 报错如下: 可能是缺少 yaml-cpp 文件,然后操作: sudo apt-g…

书生·浦语大模型实战2

轻松玩转书生浦语大模型趣味 Demo 大模型及 InternLM 模型简介 什么是大模型 大模型通常指的是机器学习或人工智能领域中参数数量巨大、拥有庞大计算能力和参数规模的模型。这些模型利用大量数据进行训练,并且拥有数十亿甚至数千亿个参数。大模型的出现和发展得益…

单片机原理及应用——C51语言版(第2版,林立、张俊亮编著)课后习题及答案

第一章习题 1.1 单项选择题 (1) 单片机又称为单片微计算机,最初的英文缩写是____。 答案(D) A.MCPB.CPUC.DPJD.SCM (2) Intel公司的MCS-51系列单片机是______的单片机。 答案(C) A.1位B.4位C.8位D.16位 &#xf…

66.网游逆向分析与插件开发-角色数据的获取-角色类的数据分析与C++还原

内容来源于:易道云信息技术研究院VIP课 ReClass.NET工具下载,它下方链接里的 逆向工具.zip 里的reclass目录下:注意它分x64、x32版本,启动是用管理员权限启动否则附加时有些进程附加不上 链接:https://pan.baidu.com/…

【S32K 进阶之旅】 NXP S32K3 以太网 RMII 接口调试(2)

前言 前文介绍了 NXP S32K3 以太网 RMII 接口调试的开发环境搭建,下面开始详解软件调试步骤。没看过第一节的小伙伴请移步《【S32K 进阶之旅】 NXP S32K3 以太网 RMII 接口调试(1)》,话不多说我们直接进入正题。 lwip Stack 介绍 …

视频号小店发展趋势如何?适合新手吗?

我是电商珠珠 视频号团队在22年7月发展了自己的电商平台-视频号小店。截止到目前为止,也发展了不过一年的时间,所以各项平台政策还不太严谨。 一个新兴平台所做的第一步就是招揽更多的商家来入驻,就会将红利全部倾向商家,而在今…

Python 编写不同时间格式的函数

该代码是一个时间相关的功能模块,提供了一些获取当前时间的函数。 Report_time() 函数返回当前时间的格式化字符串,例如 "20240110114512"。Y_M_D_h_m_s_time() 函数返回当前时间的年、月、日、时、分、秒的元组格式。Y_M_D_h_m_s() 函数返回…

【笔记】书生·浦语大模型实战营——第三课(基于 InternLM 和 LangChain 搭建你的知识库)

【参考:tutorial/langchain at main InternLM/tutorial】 【参考:(3)基于 InternLM 和 LangChain 搭建你的知识库_哔哩哔哩_bilibili-【OpenMMLab】】 笔记 基础作业 这里需要等好几分钟才行 bug: 碰到pandas相关报错就卸载重装 输出文字…

PyTorch项目源码学习(2)——Tensor代码结构初步学习

PyTorch版本:1.10.0 Tensor Tensor是Pytorch项目较为重要的一部分,其中的主要功能如存储,运算由C和CUDA实现,本文主要从前端开始探索学习Tensor的代码结构。 结构探索 PyTorch前端位于torch目录下,从_tensor.py可以…

Python基础语法(上)——基本语法、顺序语句、判断语句、循环语句(有C++基础快速掌握Python语言)

文章目录 0.python小技巧与易错点1.python 与 c 语法有哪些区别2.Python基本语法2.1python的变量类型2.2python中的运算符2.3python中的表达式2.4python中的输入输出 3.python判断语句3.1基本用法:3.2关于else if 的用法3.3关于pass语句3.4python变量的作用域3.5pyt…

基于深度学习的果蔬检测识别系统(含UI界面、yolov5、Python代码、数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下: 算法模型:     yolov5 yolov5主要包含以下几种创新:         1. 添加注意力机制(SE、CBAM、CA等)         2. 修改可变形卷积(DySnake-主…

MySQL之导入以及导出远程备份v

目录 一.navact数据导入导出 1.1 导入 1.2 导出 二. mysqldump命令导入导出数据 2.1 导入 2.2 导出 三.load data file进行数据导入导出(只限于单表) 3.1 导入 3.2 导出 四.远程连接 好啦就到这里了哦!!!希望帮到你哦!!! 一.navact数据导入导…

CSS响应式布局

目录 rem单位 媒体查询 rem 媒体查询 rem适配方案(了解) 响应式布局总结 rem单位 1.设置文字大小的单位 px:设置为固定的css像素 em:相对于父元素字体的大小 %:相对于父元素字体的大小 rem:相对于…