相关博文

基于paddlex图像分类模型训练(二):训练自己的分类模型、熟悉官方demo

背景

在使用paddlex GUI训练图像分类时,内部自动对导入的分类文件夹进行细分,本文主要介绍其图像分类数据切分源码,或可作为其他项目储备代码:https://github.com/PaddlePaddle/PaddleX/blob/develop/paddlex/tools/dataset_split/imagenet_split.py

数据集形式

PaddleClas 数据切分说明 使用 txt 格式文件指定训练集和测试集,以 ImageNet1k 数据集为例,其中 train_list.txt 和 val_list.txt 的格式形如:

# 每一行采用"空格"分隔图像路径与标注# 下面是 train_list.txt 中的格式样例
train/n01440764/n01440764_10026.JPEG 0
...
# 下面是 val_list.txt 中的格式样例
val/ILSVRC2012_val_00000001.JPEG 65
...

切分前:分类好的文件夹
切分后:train_list.txt,text_list.txt,val_list.txt,labels.txt

使用paddlex 转换

  • https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/data/split.md
paddlex --split_dataset   --format ImageNet  --dataset_dir  vegetables_cls  --save_dir vegetables_cls   --val_value 0.2 --test_value 0.1

源码转换 (mian.py,imagenet_split.py, utils.py)

# -*- coding: utf-8 -*-
# @Time : 2023/1/18 15:30
# @Author : XyZengimport imagenet_splitdef test_cls_split( input_dir='./datasets/cls_2',val_percent=0.2,test_percent=0,):'''val_num = int(image_num * val_percent)test_num = int(image_num * test_percent)train_num = image_num - val_num - test_num'''imagenet_split.split_imagenet_dataset(dataset_dir=input_dir,val_percent=val_percent,test_percent=test_percent,save_dir=input_dir)if __name__ == '__main__':# input_dir = './datasets/cls_2'test_cls_split()

imagenet_split.py

用于将文件夹整理好的分类图像,转换为可用于训练的txt

import random
from utils  import *def split_imagenet_dataset(dataset_dir, val_percent, test_percent, save_dir):all_files = list_files(dataset_dir)label_list = list()train_image_anno_list = list()val_image_anno_list = list()test_image_anno_list = list()for file in all_files:if not is_pic(file):continuelabel, image_name = osp.split(file)if label not in label_list:label_list.append(label)label_list = sorted(label_list)for i in range(len(label_list)):image_list = list_files(osp.join(dataset_dir, label_list[i]))image_anno_list = list()for img in image_list:image_anno_list.append([osp.join(label_list[i], img), i])random.shuffle(image_anno_list)image_num = len(image_anno_list)val_num = int(image_num * val_percent)test_num = int(image_num * test_percent)train_num = image_num - val_num - test_numtrain_image_anno_list += image_anno_list[:train_num]val_image_anno_list += image_anno_list[train_num:train_num + val_num]test_image_anno_list += image_anno_list[train_num + val_num:]with open(osp.join(save_dir, 'train_list.txt'), mode='w',encoding='utf-8') as f:for x in train_image_anno_list:file, label = xf.write('{} {}\n'.format(file, label))with open(osp.join(save_dir, 'val_list.txt'), mode='w',encoding='utf-8') as f:for x in val_image_anno_list:file, label = xf.write('{} {}\n'.format(file, label))if len(test_image_anno_list):with open(osp.join(save_dir, 'test_list.txt'), mode='w',encoding='utf-8') as f:for x in test_image_anno_list:file, label = xf.write('{} {}\n'.format(file, label))# 创建label标签with open(osp.join(save_dir, 'labels.txt'), mode='w', encoding='utf-8') as f:for l in sorted(label_list):f.write('{}\n'.format(l))return len(train_image_anno_list), len(val_image_anno_list), len(test_image_anno_list)

utils.py

后续可以添加自己各种功能函数

import os
import os.path as ospdef is_pic(filename):""" 判断文件是否为图片格式Args:filename: 文件路径"""suffixes = {'JPEG', 'jpeg', 'JPG', 'jpg', 'BMP', 'bmp', 'PNG', 'png'}suffix = filename.strip().split('.')[-1]if suffix not in suffixes:return Falsereturn Truedef list_files(dirname):""" 列出目录下所有文件(包括所属的一级子目录下文件)Args:dirname: 目录路径"""def filter_file(f):if f.startswith('.'):return Truereturn Falseall_files = list()dirs = list()for f in os.listdir(dirname):if filter_file(f):continueif osp.isdir(osp.join(dirname, f)):dirs.append(f)else:all_files.append(f)for d in dirs:for f in os.listdir(osp.join(dirname, d)):if filter_file(f):continueif osp.isdir(osp.join(dirname, d, f)):continueall_files.append(osp.join(d, f))return all_files

基于paddlex图像分类模型训练(一):图像分类数据集切分:文件夹转化为imagenet训练格式相关推荐

  1. CV:基于Keras利用CNN主流架构之mini_XCEPTION训练性别分类模型hdf5并保存到指定文件夹下

    CV:基于Keras利用CNN主流架构之mini_XCEPTION训练性别分类模型hdf5并保存到指定文件夹下 目录 图示过程 核心代码 图示过程 核心代码 from keras.callbacks ...

  2. CV:基于Keras利用CNN主流架构之mini_XCEPTION训练情感分类模型hdf5并保存到指定文件夹下

    CV:基于Keras利用CNN主流架构之mini_XCEPTION训练情感分类模型hdf5并保存到指定文件夹下 目录 图示过程 核心代码 图示过程 核心代码 def mini_XCEPTION(inp ...

  3. R语言限制性立方样条(RCS, Restricted cubic spline)分析:基于logistic回归模型、南非心脏病数据集(South African Heart Disease)

    R语言限制性立方样条(RCS, Restricted cubic spline)分析:基于logistic回归模型.南非心脏病数据集(South African Heart Disease) 目录

  4. DL之RetinaNet:基于RetinaNet算法(keras框架)利用resnet50_coco数据集(.h5文件)实现目标检测

    DL之RetinaNet:基于RetinaNet算法(keras框架)利用resnet50_coco数据集(.h5文件)实现目标检测 相关文章 DL之RetinaNet:RetinaNet算法的简介( ...

  5. PyTorch之—图像分类一(每个类对应一个文件夹)

    文章目录 一.数据集准备与训练 二.预测或推断 一.数据集准备与训练 数据按文件夹组织,每个类对应一个文件夹.大多数其他的PyTorch教程和示例都希望你先按照训练集和验证集来组织文件夹,然后在训练集 ...

  6. 基于深度学习模型的花卉图像分类代码_华为不止有鸿蒙!教你快速入门华为免编程深度学习神器ModelArts...

    引言: 本文介绍利用华为ModelArts进行深度学习的图像分类任务,不用一行代码. 今年8月9日,在华为史上规模最大的开发者大会上,华为正式发布全球首个基于微内核的全场景分布式OS--鸿蒙操作系统( ...

  7. 基于深度学习模型的花卉图像分类代码_实战 | 基于深度学习模型VGG的图像识别(附代码)...

    本文演示了如何使用百度公司的PaddlePaddle实现基于深度学习模型VGG的图像识别. 准备工作 VGG简介 牛津大学VGG(Visual Geometry Group)组在2014年ILSVRC ...

  8. 深度估计自监督模型monodepth2在自己数据集的实战——单卡/多卡训练、推理、Onnx转换和量化指标评估

    本文详细介绍monodepth2模型在自己数据集的实战方法,包括单卡/多卡训练.推理.Onnx转换和量化评估等,关于理论部分请参见另一篇博客:深度估计自监督模型monodepth2论文总结和源码分析 ...

  9. 混合模型:基于VGG-16+PCA+Meanshift/DBSCAN的图像分类(附代码数据集)

    混合模型实战 简介 数据集 训练集 测试集 实战讲解 简介 博主上次做的VGG16训练宝可梦多分类图像识别,5个每类,每个类别250张左右,训练数量并不多,但如果我的训练数量更少呢?因为在现实生活中, ...

最新文章

  1. J2EE复习(二)XML
  2. 通过游戏来学习CSS的Flex布局
  3. com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'user'
  4. 多窗体、窗体传值、打开唯一窗体操作
  5. C++:线程操作之CRITICAL_SECTION用法的介绍和例子理解
  6. 新康众闫顺成:数据中台建设中的得与失
  7. .NET设计模式(8):适配器模式(Adapter Pattern)
  8. 凉凉用计算机打的歌谱,张碧晨杨宗纬《凉凉》歌谱
  9. python 中的input
  10. SAP Commerce的Runtime Attributes
  11. [蓝桥杯2019初赛]年号字串-数论+模拟
  12. C++学习之路 | PTA乙级—— 1010 一元多项式求导 (25分)(精简)
  13. 信息学奥赛一本通C++语言——1093:计算多项式的值
  14. 2018把坚韧坚持到底
  15. 【图像融合】基于matlab遗传算法图像融合【含Matlab源码 1624期】
  16. Latex符号对照表
  17. JavaEE ActionForm的高级应用
  18. 导入、配置Vuetify遇到的的几个问题
  19. 广东工业大学22级机械考研经验分享
  20. 如何可以快速解决网络劫持

热门文章

  1. Linux 各个版本特点介绍
  2. 我的世界服务器物品不掉落指令是什么,我的世界死亡物品怎么不掉落 我的世界物品不掉落指令...
  3. 芯片设计知识_芯片设计中工艺文件
  4. Android基于Fmod实现变音
  5. 【推荐算法论文】ItemCF原文
  6. 宋华振:工业软件发展的难题与思考
  7. 用于产前诊断的MRI和超声融合成像
  8. 杭州第一世界大酒店暖冬节,泡温泉、吃火锅邂逅温暖冬日
  9. 计算机主板纽扣电池缺电,主板上的纽扣电池没电了,影响电脑开机吗?
  10. MySQL查询求中位数最简单的写法