神经网络图像数据训练集成应用 | 可视化图像处理 | 可视化训练器

〇、写在前面

本应用基于开源UI框架PyDracula进行开发,除去最基本的UI框架外,所有功能的前后端实现都由我个人开发完成,但也有部分UI(如开关控件和进度条)是参考其他大佬的分享。

这个应用是我的本科毕业设计,但因为个人能力不足,姑且只能使用Python+PySide6开发。

开发这个应用的启发是,曾经我作为深度学习的萌新,在初出训练模型时费了不少力气去学习,一个人摸索了很长时间,直到现在我可以熟练掌握模型的训练。回过头来看我曾经踩过的坑,我把自己在模型训练过程中经常使用的图像处理脚本工具集成在了这个应用中,并实现了一站式的模型选择可视化训练。

但我也知道,真正训练一个好模型远比这复杂的多,因此本应用可以当作新手朋友们的入门体验。

希望本应用能对大家有所帮助。

一、应用简介

本应用主要分为三大功能:

1. 单张图片预处理

本部分功能主要实现仅对一张图片的处理,该功能分为预处理工具和图像增强两部分。

1.1 预处理工具

(1) 更改后缀

在这部分功能中实现了对图片后缀的修改,可以支持jpg、jpeg、png和bmp四种常见数据集图像格式图片的后缀更改,用户通过点击相应的按钮,执行对应的功能。

  1. 修改为.jpg后缀功能:

    将图片统一转为 *.jpg 后缀。支持转换 *.JPG、*.png、*.PNG、*.jpeg、*.JPEG、*.bmp、*.BMP。

  2. 修改为.jpeg后缀功能:

    将图片转为 *.jpeg 后缀。支持转换 *.jpg、*.JPG、*.png、*.PNG、*.JPEG、*.bmp、*.BMP后缀格式。

  3. 修改为.png后缀功能:

    将图片转为 *.png 后缀。支持转换 *.jpg、*.JPG、*.PNG、*.jpeg、*.JPEG、*.bmp、*.BMP后缀格式。

  4. 修改为.bmp后缀功能:

    将图片转为 *.bmp 后缀。支持转换 *.jpg、*.JPG、*.png、*.PNG、*.jpeg、*.JPEG、*.BMP后缀格式。

(2) 更改大小

该部分功能实现了直接将图片像素大小进行修改。插值方式说明如下:

插值方式 说明
INTER_LINEAR 双线性插值。
INTER_NEAREAST 最邻近插值。
INTER_CUBIC 三次样条插值。
INTER_AREA 区域插值。(使用像素面积关系进行重采样)
INTER_LANCZOS4 一种Lanczos插值方法(超过8×放大时效果最好)。
INTER_LINEAR_EXACT 位精确双线性插值。

(3) 图片方形化

该部分功能实现了将不规则矩形图片统一为方形图片。

该功能模块所支持的边框拓充方式有:

  1. BORDER_CONSTANT:用纯色背景(常数)填充,需指定拓充的RGB颜色。
  2. BORDER_REFLECT:用边界元素的镜面反射拓充。
  3. BORDER_REPLICATE:使用最边界的像素值代替。
  4. BORDER_WRAP:进行上下边缘调换的外包复制操作。

1.2 图像增强

注意:本部分所有功能可以按顺序同时叠加使用

(1) 图像旋转

该功能可使图像进行任意角度旋转,并同时缩放处理。

(2) 水平翻转

(3) 垂直翻转

(4) 模糊

该功能可对图像进行模糊处理,支持四种滤波方式:

  1. 均值滤波
  2. 方框滤波
  3. 高斯滤波:滤波核必须为奇数。
  4. 中值滤波:滤波核必须为大于1的奇数。

(5) 噪声

该功能可对图像增加噪声,支持两种噪声方式:

  1. 高斯噪声
  2. 椒盐噪声

这两种方式可以单独使用,也可以同时使用。

(6) 亮度

(7) 对比度

(8) 所有功能同时启用演示

2. 数据集预处理

本部分功能主要实现对整个数据集图片的处理,该功能分为预处理工具和图像增强两部分。

2.1 预处理工具

(1) 统一后缀

该功能和单张图片预处理的更改后缀功能类似,故不再过多赘述。

(2) 统一命名

在该模块下,用户可以对数据集进行统一命名,支持的统一命名格式为:

  1. 分类_i
  2. 分类i
  3. 分类-i

(3) 统一大小

该功能和单张图片预处理的更改大小功能类似,故不再过多赘述。

(4) 图片方形化

该功能和单张图片预处理的图片方形化功能类似,故不再过多赘述。

(5) 数据集分割

该功能用于将整个数据集按照比例分割成训练集(Train)、验证集(Val)、测试集(Test)。

2.2 图像增强

该模块的图像增强功能实现了图像旋转、水平翻转、垂直翻转、模糊、噪声、亮度和对比度的功能,功能的实现同单张图像预处理模块的图像增强功能相似,故不再重复说明。

不同之处在于,由于该模块下的图像增强功能是对整个数据集进行处理,因此该功能引入了概率随机处理,以及参数在一个区间内随机取值

同样:本部分所有功能可以按顺序同时叠加使用

3. 可视化训练器

在该模块中,可以使用预集成在应用内的36神经网络模型进行训练,包含如下模型:

  1. AlexNet
  2. VGG11
  3. VGG13
  4. VGG16
  5. VGG19
  6. GoogLeNet
  7. ResNet18
  8. ResNet34
  9. RsNet50
  10. ResNet101
  11. ResNet152
  12. ResNeXt50(32×4d)
  13. ResNeXt101(32×8d)
  14. MobileNetV2
  15. MobileNetV3(large)
  16. MobileNetV3(small)
  17. ShuffleNetV2(×0.5)
  18. ShuffleNetV2(×1.0)
  19. ShuffleNetV2(×1.5)
  20. ShuffleNetV2(×2.0)
  21. EfficientNet(B0)
  22. EfficientNet(B1)
  23. EfficientNet(B2)
  24. EfficientNet(B3)
  25. EfficientNet(B4)
  26. EfficientNet(B5)
  27. EfficientNet(B6)
  28. EfficientNet(B7)
  29. EfficientNetV2(S)
  30. EfficientNetV2(M)
  31. EfficientNetV2(L)
  32. VisionTransformer(b16)
  33. VisionTransformer(b32)
  34. SwinTransformer(t)
  35. SwinTransformer(s)
  36. SwinTransformer(b)

可以直接使用以上模型进行训练,如果不开启迁移学习则是重新从头开始训练自己的数据集,如果需要使用迁移学习,则需要自行下载官方的.pth权重文件,具体操作事项在后续的说明中陈述。

本功能除了实现训练过程可视化,还可以在训练完成后查看混淆矩阵,以及log输出

注意:本功能暂未实现继续训练的功能,因此建议使用者在无法确定何时停止训练的情况下,将Epoch数值设置到一个较大的值,在通过可视化确认差不多收敛时点击终止按钮停止训练。

3.1 训练过程可视化

3.2 混淆矩阵

3.3 log输出

二、环境要求

本程序在使用时需要安装以下Python环境:

  1. pyside6
  2. pyqt5
  3. matplotlib
  4. opencv
  5. pytorch

三、使用说明

  1. 本应用的图像处理功能由OpenCV实现,相关参数请参考OpenCV的参数说明。

  2. 数据集预处理功能中,传入的数据集文件夹格式必须严格按照如下方式:root文件夹/分类1..n文件夹/图片1..n

  3. 可视化训练器部分中,模型的训练是基于PyTorch深度学习框架实现的,因此最终训练后保存的权重文件是以.pth后缀结尾的形式,如果需要其它形式,可以自行进行权重文件格式的转换。

  4. 如果需要使用迁移学习,请自行下载官方权重文件放在 algorithms/trainer/imagenet 目录下,并将下载后的权重文件重命名为“xxx.pth”,且命名必须为如下命名之一:

    alexnet.pth、efficientnet_b0.pth、efficientnet_b1.pth、efficientnet_b2.pth、efficientnet_b3.pth、efficientnet_b4.pth、efficientnet_b5.pth、efficientnet_b6.pth、efficientnet_b7.pth、efficientnet_v2_l.pth、efficientnet_v2_m.pth、efficientnet_v2_s.pth、googlenet.pth、mobilenet_v2.pth、mobilenet_v3_large.pth、mobilenet_v3_small.pth、resnet101.pth、resnet152.pth、resnet18.pth、resnet34.pth、resnet50.pth、resnext101_32x8d.pth、resnext50_32x4d.pth、shufflenetv2_x0_5.pth、shufflenetv2_x1_0.pth、shufflenetv2_x1_5.pth、shufflenetv2_x2_0.pth、swin_b.pth、swin_s.pth、swin_t.pth、vgg11.pth、vgg13.pth、vgg16.pth、vgg19.pth、vit_b_16.pth、vit_b_32.pth

四、代码获取

完整应用程序已免费开源在我的GitHub中:https://github.com/CorianderSaint/TrainerGUI。

请需要者点一颗免费的Star⭐,十分感谢!

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

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

相关文章

【别再为可视化工具付费了!】智慧交通实时路况监测,这款免费可视化工具的功能超乎想象

在智慧交通领域,实时路况监测是确保城市交通高效运转的关键。山海鲸可视化作为一款免费的可视化工具,其功能非常强大。面对智慧交通的复杂需求,山海鲸可视化凭借其二三维融合、易用性、安全性和高质量的画面渲染等特色,成为智慧交通管理的不二选择。山海鲸可视化的二三维融…

数据增强mosaic实现

mosaic 是yolov4中提出的一个数据增强的方式,通过将4张图片拼接在一起送入训练,有效提升了模型的mapmosaic 是yolov4中提出的一个数据增强的方式,通过将4张图片拼接在一起送入训练,有效提升了模型的map。mosaic的优点包括如下:增加数据多样性,随机选取四张图像进行组合,…

springboot3(cloud 2022.0.0)整合seata1.7.1

一、第一步下载对应版本的seata服务 二、修改conf下的application.yml配置 注意:主要是连接nacos的一些配置:注册中心和服务发现的配置1 # Copyright 1999-2019 Seata.io Group.2 #3 # Licensed under the Apache License, Version 2.0 (the "License");4 # you…

Linux 文件系统扩展

今天发现/usr目录空间不够。需要扩展。之前没有处理过。今天试了一下调整。并且记录下来整个过程。 1 使用fdisk -l 查看磁盘信息2、使用fdisk /dev/sda 对磁盘进行分区操作完后,多了一个/dev/sda34 使用 pvcreate /dev/sda3创建物理卷5、使用vgextend ol /dev/sda3 扩展磁盘 …

华为云技术专家硬核分享,云原生中间件如何加速业务发展

云原生中间件作为云原生架构中的关键组件,在核心能力建设、业务连续性、生态丰富性等诸多方面也面临着一系列挑战。本文分享自华为云社区《云原生中间件,构筑软件安全可信的连接桥梁》,作者: 华为云PaaS服务小智。 近日,在华为云开发者大会2024期间,来自华为云PaaS服务,…

KES数据库实践指南:探索KES数据库的事务隔离级别

本文深入探讨了KES数据库中的并发控制机制和事务隔离级别的重要性及实施方法。我们从并发控制的基本概念出发,详细解释了ACID原则如何通过不同的隔离级别得以实现,以及在串行化与并行执行之间的权衡取舍。通过实际操作和示例,我们展示了不同隔离级别下可能出现的脏读、不可重…

最新扣子(Coze)实战案例:图像流工具之创建一个精美的LOGO,完全免费教程

🧙‍♂️ 大家好,我是斜杠君,手把手教你搭建扣子AI应用。 📜 本教程是《AI应用开发系列教程之扣子(Coze)实战教程》,完全免费学习。 👀 关注公众号:斜杠君,可获取完整版教程。 👍🏻如果想学习AI应用搭建,请关注公众号,及时获取最新免费教程。温馨提示:本文内…

2024年6.23-6.26学习总结

2024年6.23--6.26学习总结 考试 24号考计算机网络,26号考形式语言与自动机。这几天基本都在复习。 形式语言与自动机 dfa极小化 1.先删去不可达状态和陷阱态。 2.假如状态有q1,q2,q3,q4,q5,q6,q7,q8,先将所有终止状态取出分为一组比如{q6,q8},然后在另一组中找到无法区分的状…

大型能源电力集团需要什么样的总部数据下发系统?

能源电力集团的组织结构是一个复杂的系统,包括多个职能部门和子分公司。这些子分公司负责具体的电力生产、销售、运维等业务。这些部门和公司协同工作,确保电力生产的顺利进行,同时关注公司的长期发展、市场拓展、人力资源管理、财务管理和公司治理等方面。由于大型能源电力…

ros slam microros之H电桥电机驱动原理介绍

一、电机驱动原理介绍正式编写代码前,我们先了解下电机驱动的原理,以便于我们了解我们如何才能通过代码控制电机的转速和正反转。1.1 H桥电路让电机动起来只需要通电就行,比如我们用的额定电压为12V 130RPM的电机,当给到12V的电压时可以达到额定转速130转/分,但如果我们给…

ros slam 之移动机器人常用传感器

本节我们对移动机器人底盘结构进行简单的介绍,并着重介绍FishBot基础版的组成结构。 对于一个移动底盘来说,所要提供的核心功能有两个-感知和执行能力,我们分别进行介绍。一、感知-传感器所谓感知即通过给类传感器获取环境信息的能力。在移动机器人中,我们常用的传感器有 距…

VMware ESXi 8.0U3 macOS Unlocker OEM BIOS HPE (慧与) 定制版

VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS HPE (慧与) 定制版VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS HPE (慧与) 定制版 ESXi 8.0U3 标准版,Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科)、Hitachi (日立)、Fujitsu (富士通)、NEC…

day33-Django3.2(二)

四、视图 django的视图主要有2种,分别是函数视图和类视图.现在刚开始学习django,我们先学习函数视图(FBV),后面再学习类视图[CBV]. 4.1、请求方式 web项目运行在http协议下,默认肯定也支持用户通过不同的http请求发送数据来。django支持让客户端只能通过指定的Http请求来访问到…

为什么单元测试不是持续交付的唯一答案

残酷的事实是,大多数企业在持续交付的道路上相当落后。为了让持续集成和持续交付(CI/CD)成为现实,企业必须审查其内部流程,并重新思考如何处理软件交付生命周期。过去的清单和评论根本不是前进的方向。残酷的事实是,大多数企业在持续交付的道路上相当落后。对软件交付过程…

蓝桥杯Java组常用知识点

备战蓝桥杯学习笔记基本数据类型 int的取值范围: -2^31 ~ 2^31-1 -2147483648 ~ 2147483647(约等于10的9次方) long long的取值范围: -2^63 ~ (2^63-1) -9223372036854775808 ~ 9223372036854775807(约等于10的18次方) 输入输出 使用文件流对输入输出的重要性:https://…

Linux内存不够了?看看如何开启虚拟内存增加内存使用量

1、为什么要使用虚拟内存 当我们没有多余的钱去购买大内存的云服务器时,但是当前服务器里面的软件和程序运行的比较多导致内存不够用了。这个时候可以通过增加虚拟内存来扩大内存容量。但是在启用虚拟内存时,需要仔细考虑系统的实际需求和硬件配置,以及权衡虚拟内存的优缺点…

camunda数据库表结构详细说明

本文基于Camunda7.19.0版本,介绍Camunda开源工作流引擎的数据库架构和ER模型,Camunda7.19.0共49张表,包括了BPMN流程引擎、DMN规则引擎、CMMN引擎、历史数据、用户身份等方面的表结构定义,以及表与表之间的关联关系。本文基于Camunda7.19.0版本,介绍Camunda开源工作流引擎…

camunda多租户技术架构介绍和测试验证

多租户考虑的是单个 Camunda 安装应该为多个租户提供服务的情况。对于每个租户,应做出一定的隔离保证。例如,一个租户的流程实例不应干扰另一租户的流程实例。 多租户可以通过两种不同的方式实现。一种方法是每个租户使用一个流程引擎。另一种方法是仅使用一个流程引擎并将数…

IEEE 8802-3 以太网标准解读

PHY: CarrierSense 载波侦听 ReceveDataValid 接受数据有效 CollisionDetect 碰撞检测 Transmitting 传输中 TransmitBit 传输比特 SFD 10101011 开始 ReceiveBit 接受比特 Wait 等待1、MA_DATA.request 定义了MAC客户端访问单独实体或者z在组地址的前提下访问多个实体 MA…

在C#中使用RabbitMQ做个简单的发送邮件小项目

在C#中使用RabbitMQ做个简单的发送邮件小项目 前言 好久没有做项目了,这次做一个发送邮件的小项目。发邮件是一个比较耗时的操作,之前在我的个人博客里面回复评论和友链申请是会通过发送邮件来通知对方的,不过当时只是简单的进行了异步操作。 那么这次来使用RabbitMQ去统一发…