当前位置: 首页 > news >正文

图像分类任务的可视化脚本,生成类别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文件,然后对照目录按照上面的方式输入也行

相关文章:

  • Hotspot源码解析-第十七章-虚拟机万物创建(三)
  • 如何使用PHP开发缓存优化图片加载速度
  • Python pip 常用指令
  • 安达发|APS智能排产软件有哪些条件约束功能
  • 2024年AIGC趋势展望:视频生成的“百模大战”
  • 每日一篇英语文章分享-----主目录-----持续更新
  • 蓝凌EIS智慧协同平台 ShowUserInfo.aspx SQL注入漏洞复现
  • vue中常用的指令修饰符
  • JAVA毕业设计118—基于Java+Springboot的宠物寄养管理系统(源代码+数据库)
  • hadoop自动获取时间
  • 通过 Elastic Stack 充分利用电信领域生成式 AI 的力量
  • 年轻人2023消费图鉴,媒介盒子为你揭秘
  • 网安入门12-文件上传(黑白名单,00截断)
  • AArch64 Exception Model学习
  • kaggle如何将自己的结果存储到本地
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • angular组件开发
  • GitUp, 你不可错过的秀外慧中的git工具
  • Golang-长连接-状态推送
  • hadoop集群管理系统搭建规划说明
  • IDEA常用插件整理
  • JSDuck 与 AngularJS 融合技巧
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • mysql常用命令汇总
  • Python_网络编程
  • Redash本地开发环境搭建
  • SpringCloud集成分布式事务LCN (一)
  • Travix是如何部署应用程序到Kubernetes上的
  • Vue学习第二天
  • 闭包--闭包之tab栏切换(四)
  • 分布式事物理论与实践
  • 基于web的全景—— Pannellum小试
  • 小李飞刀:SQL题目刷起来!
  • 用简单代码看卷积组块发展
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 带你开发类似Pokemon Go的AR游戏
  • #Linux(帮助手册)
  • (1) caustics\
  • (4)logging(日志模块)
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (未解决)macOS matplotlib 中文是方框
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)Linux下编译安装log4cxx
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET项目中存在多个web.config文件时的加载顺序
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • /var/lib/dpkg/lock 锁定问题