B站项目-基于Pytorch的ResNet垃圾图片分类

基于Pytorch的ResNet垃圾图片分类

项目链接
数据集下载链接

1. 数据集预处理

1.1 画图片的宽高分布散点图
import osimport matplotlib.pyplot as plt
import PIL.Image as Imagedef plot_resolution(dataset_root_path):image_size_list = []#存放图片尺寸for root, dirs, files in os.walk(dataset_root_path):for file in files:image_full_path = os.path.join(root, file)image = Image.open(image_full_path)image_size = image.sizeimage_size_list.append(image_size)print(image_size_list)image_width_list = [image_size_list[i][0] for i in range(len(image_size_list))]#存放图片的宽image_height_list = [image_size_list[i][1] for i in range(len(image_size_list))]#存放图片的高plt.rcParams['font.sans-serif'] = ['SimHei']#设置中文字体plt.rcParams['font.size'] = 8plt.rcParams['axes.unicode_minus'] = False#解决图像中的负号乱码问题plt.scatter(image_width_list, image_height_list, s=1)plt.xlabel('宽')plt.ylabel('高')plt.title('图像宽高分布散点图')plt.show()if __name__ == '__main__':dataset_root_path = "F:\数据与代码\dataset"plot_resolution(dataset_root_path)

运行结果:
运行结果

注: os.walk详细解释参考

1.2 画出数据集的各个类别图片数量的条形图

文件组织结构:
在这里插入图片描述

def plot_bar(dataset_root_path):file_name_list = []file_num_list = []for root, dirs, files in os.walk(dataset_root_path):if len(dirs) != 0 :for dir in dirs:file_name_list.append(dir)file_num_list.append(len(files))file_num_list = file_num_list[1:]#去掉根目录下面的文件数量(0) [0, 20, 1, 15, 23,  25, 22, 121, 7, 286, 233, 22, 27, 5, 6, 4]#[20, 1, 15, 23, 25, 22, 121, 7, 286, 233, 22,27, 5, 6, 4]mean = np.mean(file_num_list)print("mean= ", mean)bar_positions = np.arange(len(file_name_list))fig, ax = plt.subplots()ax.bar(bar_positions, file_num_list, 0.5)# 柱间的距离, 柱的值, 柱的宽度ax.plot(bar_positions, [mean for i in bar_positions], color="red")#画出平均线plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置中文字体plt.rcParams['font.size'] = 8plt.rcParams['axes.unicode_minus'] = False  # 解决图像中的负号乱码问题ax.set_xticks(bar_positions)#设置x轴的刻度ax.set_xticklabels(file_name_list, rotation=98) #设置x轴的标签ax.set_ylabel("类别数量")ax.set_title("各个类别数量分布散点图")plt.show()

运行结果
运行结果

1.3 删除宽高有问题的图片
import os
import PIL.Image as ImageMIN = 200
MAX = 2000
ratio = 0.5def delete_img(dataset_root_path):delete_img_list = [] #需要删除的图片地址for root, dirs, files in os.walk(dataset_root_path):for file in files:img_full_path = os.path.join(root, file)img = Image.open(img_full_path)img_size = img.sizemax_l = img_size[0] if img_size[0] > img_size[1] else img_size[1]min_l = img_size[0] if img_size[0] < img_size[1] else img_size[1]# 把图片宽高限制在 200~2000 这里可能会重复添加图片路径if img_size[0] < MIN or img_size[1] < MIN:delete_img_list.append(img_full_path)print("不满足要求", img_full_path, img_size)elif img_size[0] > MAX or img_size[1] > MAX:delete_img_list.append(img_full_path)print("不满足要求", img_full_path, img_size)#避免图片窄长elif min_l / max_l < ratio:delete_img_list.append(img_full_path)print("不满足要求", img_full_path, img_size)for img in delete_img_list:print("正在删除", img)os.remove(img)if __name__ == '__main__':dataset_root_img = 'F:\数据与代码\dataset'delete_img(dataset_root_img)

再次运行1.1 和1.2的代码得到处理后的数据集宽高分布和类别数量
处理后的宽高分布

处理后的类别数量

1.4 数据增强

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

实验室储样瓶耐强酸强碱PFA材质试剂瓶适用新材料半导体

PFA&#xff0c;全名可溶性聚四氟乙烯&#xff0c;试剂瓶又叫取样瓶、样品瓶、广口瓶、储样瓶等。主要用于痕量分析、同位素分析等实验室&#xff0c;广泛应用于新兴的半导体、新材料、多晶硅、硅材、微电子等行业。 规格参考&#xff1a;30ml、60ml、100ml、125ml、250ml、30…

使用keil移植freerots简结

1.安装keil 5.0 2.安装 keil device 软件包&#xff1a;具体单片机软件包下载地址&#xff1a; Arm Keil | Deviceshttps://www.keil.arm.com/devices/ &#xff0c;选择自己单片机所属型号.下载后导入即可. 3.新建工程时选择对应device&#xff1a; 选择CMISIS的CORE即可.其…

ABBYY FineReader16文档转换、PDF管理与文档比较功能介绍

ABBYY FineReader 16作为一款OCR和PDF一体化程序&#xff0c;其强大的功能使得文档处理变得简单高效。在众多功能中&#xff0c;文档转换、PDF管理和文档比较这三大功能尤为突出&#xff0c;成为了众多企业和个人用户的首选工具。 ABBYY Finereader 16-安装包下载如下&#xff…

kafka学习笔记三

第二篇 外部系统集成 Flume、Spark、Flink、SpringBoot 这些组件都可以作为kafka的生产者和消费者&#xff0c;在企业中非常常见。 Flume官网&#xff1a;Welcome to Apache Flume — Apache Flume Flink&#xff1a;Apache Flink_百度百科 Spark&#xff1a;Apache Spark…

openEuler2203 LTS环境下docker容器的配置与应用

一、说明 本文配置环境为VMware虚拟机&#xff08;4核CPU&#xff0c;8 GB内存&#xff0c;40GB磁盘&#xff09;&#xff0c;OS为openEuler 22.03 LTS &#xff0c;虚拟机要求能联网。 二、安装docker 1、安装docker软件包 [rootnode1 ~]# dnf -y install docker2、查看do…

高性能API云原生网关 APISIX安装与配置指南

Apache APISIX是Apache软件基金会下的顶级项目&#xff0c;由API7.ai开发并捐赠。它是一个高性能的云原生API网关&#xff0c;具有动态、实时等特点。 APISIX网关可作为所有业务的流量入口&#xff0c;为用户提供了丰富的功能&#xff0c;包括动态路由、动态上游、动态证书、A…

autocrlf和safecrlf

git远程拉取及提交代码&#xff0c;windows和linux平台换行符转换问题&#xff0c;用以下两行命令进行配置&#xff1a; git config --global core.autocrlf false git config --global core.safecrlf true CRLF是windows平台下的换行符&#xff0c;LF是linux平台下的换行符。…

SpringBoot源码解读与原理分析(三十三)SpringBoot整合JDBC(二)声明式事务的生效原理和控制流程

文章目录 前言10.3 声明式事务的生效原理10.3.1 TransactionAutoConfiguration10.3.2 TransactionManagementConfigurationSelector10.3.3 AutoProxyRegistrar10.3.4 InfrastructureAdvisorAutoProxyCreator10.3.5 ProxyTransactionManagementConfiguration10.3.5.1 Transactio…

基于springboot+vue的抗疫物资管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

C 嵌入式系统设计模式 12:去抖动模式

本书的原著为&#xff1a;《Design Patterns for Embedded Systems in C ——An Embedded Software Engineering Toolkit 》&#xff0c;讲解的是嵌入式系统设计模式&#xff0c;是一本不可多得的好书。 本系列描述我对书中内容的理解。本文章描述访问硬件的设计模式之五&…

(undone) 如何计算 Hessian Matrix 海森矩阵 海塞矩阵

参考视频1&#xff1a;https://www.bilibili.com/video/BV1H64y1T7zQ/?spm_id_from333.337.search-card.all.click 参考视频2&#xff08;正定矩阵&#xff09;&#xff1a;https://www.bilibili.com/video/BV1Ag411M76G/?spm_id_from333.337.search-card.all.click&vd_…

【Datawhale组队学习:Sora原理与技术实战】Sora技术原理

Sora能力边界探索 最大支持60秒高清视频生成&#xff0c;以及基于已有短视频的前后扩展&#xff0c;同时保持人物/场景的高度一致性如奶茶般丝滑过渡的视频融合能力同一场景的多角度/镜头的生成能力具有动态摄像机运动的视频。随着摄像机的移动和旋转&#xff0c;人和其 他场景…

SpaceX 首次通过星链 从太空向社交平台 X 上发帖

2 月 26 日&#xff0c;伊隆马斯克旗下太空探索技术公司 SpaceX 宣布&#xff0c;该公司已成功地通过「星链」卫星网络&#xff0c;从太空向社交平台 X 上发布了第一个帖子。 这一次的发布&#xff0c;是通过手机卫星服务——「卫星直连蜂窝网络」&#xff08;Direct to Cell&…

vscode不能远程连接ubuntu18.04.6

目录 问题解决Portable Mode 安装vscode 补充说明学习资料 问题 vscode远程ssh连接ubuntu18.04.6时&#xff0c;出现如下提示框&#xff0c;单击Learn More后&#xff0c;定位到问题。Can I run VS Code Server on older Linux distributions? 原始是&#xff1a;需要glibc …

递归和迭代【Py/Java/C++三种语言详解】LeetCode每日一题240218【树DFS】LeetCode 589、 N 叉树的前序遍历

有LeetCode算法/华为OD考试扣扣交流群可加 948025485 可上全网独家的 欧弟OJ系统 练习华子OD、大厂真题 绿色聊天软件戳 od1336了解算法冲刺训练 文章目录 题目描述解题思路代码方法一&#xff1a;递归法PythonJavaC时空复杂度 方法二&#xff1a;迭代法PythonJavaC时空复杂度 …

北邮毕业论文Latex模板使用教程(Windows)

1latex模板下载 下载地址&#xff1a; https://github.com/rioxwang/BUPTGraduateThesis2安装编译环境 TEX Live 2014 或者CTEX 2.9.2.164&#xff0c;以及更高的版本. 下载其中一个即可 &#xff08;1&#xff09;TEX Live下载地址&#xff1a; https://tug.org/texlive/acq…

JAVA学习笔记12

1.键盘输入语句 1.1 介绍 ​ *在编程中&#xff0c;需要接收用户输入的数据&#xff0c;就可以使用键盘输入语句来获取。 1.2 步骤 ​ 1.导入该类的所在包&#xff0c;java.util.* ​ 2.创建该类对象&#xff08;声明变量&#xff09; ​ 3.调用里面的功能 import java.…

Aigtek前置微小信号放大器在传感器检测中的应用有哪些

传感器是将物理量转换为电信号的装置&#xff0c;其精度和灵敏度直接影响到检测系统的性能。而传感器的输出信号通常都非常微弱&#xff0c;需要进行放大处理才能得到可靠的测量结果。前置微小信号放大器&#xff0c;作为一种重要的传感器检测元件&#xff0c;在传感器检测中发…

游戏服务器租用价格大比拼,腾讯云阿里云京东云疯狂比价!

游戏服务器租用多少钱一年&#xff1f;1个月游戏服务器费用多少&#xff1f;阿里云游戏服务器26元1个月、腾讯云游戏服务器32元&#xff0c;华为云26元&#xff0c;游戏服务器配置从4核16G、4核32G、8核32G、16核64G等配置可选&#xff0c;游戏专业服务器公网带宽10M、12M、15M…

CentOS7 Hive2.3.8安装

CentOS7 Hive2.3.8 安装 建议从头用我的博客&#xff0c;如果用外教的文件到 一、9)步骤了&#xff0c;就用他的弄完&#xff0c;数据库不一样&#xff0c;在9步骤前还能继续看我的 一、 安装MySQL 0.0&#xff09;查询mariadb,有就去0.1&#xff09;&#xff0c;没有就不管…