图像分类任务的可视化脚本,生成类别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 完整代码

如下:

python 复制代码
import os
import matplotlib.pyplot as plt
import random
from PIL import Image


def 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.jpeg

        im = 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文件

可以通过下面代码生成

python 复制代码
import os
import json


def main(path):
    classes = [i for i in os.listdir(path)]  # ['cat', 'dog']

    labels = {}         # 类别的字典文件
    for index,name in enumerate(classes):
        labels[index] = name
    labels = 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文件,然后对照目录按照上面的方式输入也行

相关推荐
victory043116 分钟前
Gradio实现中英文切换,不影响页面状态,不得刷新页面情况下
人工智能
微光闪现31 分钟前
践行“科技向善”,微乐播捐赠108,888元助力唇腭裂儿童绽放笑容
人工智能
闵帆39 分钟前
反演学习器面临的鸿沟
人工智能·学习·机器学习
feasibility.41 分钟前
多模态模型Qwen3-VL在Llama-Factory中断LoRA微调训练+测试+导出+部署全流程--以具身智能数据集open-eqa为例
人工智能·python·大模型·nlp·llama·多模态·具身智能
CDA数据分析师干货分享1 小时前
【干货】CDA一级知识点拆解1:《CDA一级商业数据分析》第1章 数据分析思维
数据库·人工智能·数据分析·cda证书·cda数据分析师
梦梦代码精1 小时前
开源、免费、可商用:BuildingAI一站式体验报告
开发语言·前端·数据结构·人工智能·后端·开源·知识图谱
Dingdangcat861 小时前
YOLOX-L在钢丝绳损伤检测中的应用:基于300轮训练与COCO数据集的智能分类系统详解
人工智能·分类·数据挖掘
AI营销快线1 小时前
2026 GEO服务商评测:原圈科技如何定义AI营销终局?
人工智能
天翼云开发者社区1 小时前
天翼云全栈赋能OpenClaw,打造会干活的专属AI!
人工智能·智能体·openclaw
百***78751 小时前
Clawdbot 技术实战:基于一步 API 快速接入,打造本地化 AI 自动化助手
运维·人工智能·自动化