MMrotate报错AttributeError: ‘NoneType‘ object has no attribute ‘shape‘

使用MMrotate训练自定义数据集报错:
AttributeError: ‘NoneType’ object has no attribute ‘shape’

2024-05-31 17:48:06,121 - mmrotate - INFO - workflow: [('train', 1)], max: 12 epochs
2024-05-31 17:48:06,121 - mmrotate - INFO - Checkpoints will be saved to /home/ma/mmrotate/work_dirs/opt_plane by HardDiskBackend.
2024-05-31 17:48:32,707 - mmrotate - INFO - Epoch [1][50/154]   lr: 9.967e-04, eta: 0:15:55, time: 0.532, data_time: 0.352, memory: 2920, loss_cls: 1.1560, loss_bbox: 2.4025, loss: 3.5584, grad_norm: 15.9278
2024-05-31 17:48:56,689 - mmrotate - INFO - Epoch [1][100/154]  lr: 1.163e-03, eta: 0:14:43, time: 0.480, data_time: 0.325, memory: 2920, loss_cls: 1.1616, loss_bbox: 1.6778, loss: 2.8393, grad_norm: 15.6813
libpng error: IDAT: CRC error
Traceback (most recent call last):File "tools/train.py", line 194, in <module>main()File "tools/train.py", line 190, in mainmeta=meta)File "/home/ma/mmrotate/mmrotate/apis/train.py", line 144, in train_detectorrunner.run(data_loaders, cfg.workflow)File "/root/anaconda3/envs/mmrotate/lib/python3.7/site-packages/mmcv/runner/epoch_based_runner.py", line 136, in runepoch_runner(data_loaders[i], **kwargs)File "/root/anaconda3/envs/mmrotate/lib/python3.7/site-packages/mmcv/runner/epoch_based_runner.py", line 49, in trainfor i, data_batch in enumerate(self.data_loader):File "/root/anaconda3/envs/mmrotate/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 628, in __next__data = self._next_data()File "/root/anaconda3/envs/mmrotate/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 1333, in _next_datareturn self._process_data(data)File "/root/anaconda3/envs/mmrotate/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 1359, in _process_datadata.reraise()File "/root/anaconda3/envs/mmrotate/lib/python3.7/site-packages/torch/_utils.py", line 543, in reraiseraise exception
AttributeError: Caught AttributeError in DataLoader worker process 0.
Original Traceback (most recent call last):File "/root/anaconda3/envs/mmrotate/lib/python3.7/site-packages/torch/utils/data/_utils/worker.py", line 302, in _worker_loopdata = fetcher.fetch(index)File "/root/anaconda3/envs/mmrotate/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 58, in fetchdata = [self.dataset[idx] for idx in possibly_batched_index]File "/root/anaconda3/envs/mmrotate/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 58, in <listcomp>data = [self.dataset[idx] for idx in possibly_batched_index]File "/root/anaconda3/envs/mmrotate/lib/python3.7/site-packages/mmdet/datasets/custom.py", line 220, in __getitem__data = self.prepare_train_img(idx)File "/root/anaconda3/envs/mmrotate/lib/python3.7/site-packages/mmdet/datasets/custom.py", line 243, in prepare_train_imgreturn self.pipeline(results)File "/root/anaconda3/envs/mmrotate/lib/python3.7/site-packages/mmdet/datasets/pipelines/compose.py", line 41, in __call__data = t(data)File "/root/anaconda3/envs/mmrotate/lib/python3.7/site-packages/mmdet/datasets/pipelines/loading.py", line 76, in __call__results['img_shape'] = img.shape
AttributeError: 'NoneType' object has no attribute 'shape'

解决措施

并非路径加载问题
并非配置文件问题

害我找老半天,看错误信息似乎是开始训练了一两条之后才报错,那么有没有可能是图片加载问题?或者是图片文件损坏?

于是写了以下文件检查python:

import os
from PIL import Imagedef check_images_in_directory(directory):# 记录损坏的图像文件corrupted_files = []# 遍历目录中的所有文件for root, _, files in os.walk(directory):for file in files:# 生成文件的完整路径file_path = os.path.join(root, file)try:# 尝试打开图像文件with Image.open(file_path) as img:# 尝试加载图像内容img.verify()except (IOError, SyntaxError) as e:# 如果图像损坏或无法读取,则记录文件路径corrupted_files.append(file_path)print(f"Corrupted image file: {file_path}, error: {e}")return corrupted_filesdef main():train_images_dir = "/home/ma/dataset/Opt_plane/train/images"val_images_dir = "/home/ma/dataset/Opt_plane/val/images"print("Checking training images...")corrupted_train_images = check_images_in_directory(train_images_dir)print("Checking validation images...")corrupted_val_images = check_images_in_directory(val_images_dir)# 输出损坏的图像文件列表if corrupted_train_images:print("\nCorrupted training images:")for img in corrupted_train_images:print(img)else:print("\nNo corrupted training images found.")if corrupted_val_images:print("\nCorrupted validation images:")for img in corrupted_val_images:print(img)else:print("\nNo corrupted validation images found.")if __name__ == "__main__":main()

执行 python check_images.py,检查文件是否损坏

pip install Pillow
python check_images.py

运行结果如下:
在这里插入图片描述
果然是有一个图像文件出错了,把这个文件删除,再次训练,正常了

困扰我两天的问题终于解决了!!!

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

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

相关文章

记录【KVM更改br0网卡IP后,原来ip地址仍在问题】

问题描述 KVM桥接方式创建的虚拟机&#xff0c;因为修改了ifcfg网卡配置文件导致之前的ip地址仍存在&#xff0c;route -n后&#xff0c;默认网关仍是之前的配置 解决 virt-manager进入控制台 ip addr flush dev 网卡名启动网卡 systemctl start Networkmanager systemctl…

相同的树(oj题)

一、题目链接https://leetcxode-cn.com/problems/same-tree/ 二、题目思路 遍历整颗树&#xff0c;判断两棵树的每个位置的结点都相同。 每个结点的左右孩子结点都要综合判断 三、题解代码 bool isSameTree(struct TreeNode* p, struct TreeNode* q) {//如果两颗树的根结点…

Qt实现窗口失去焦点抖动功能

一、失去焦点检测 当窗口失去焦点时会发出FocusOut事件&#xff0c;具体实现如下&#xff1a; 首先给窗口安装事件过滤器&#xff1a; this->installEventFilter(this);然后在事件过滤器函数中判断有没有失去焦点 bool MessageDialog::eventFilter(QObject *object, QEve…

golang中一个优雅的开发和使用命令行工具的库 cobra

在go语言的命令行工具开发中&#xff0c;我们可以使用go官方的flags来解析用户输入参数实现命令行的开发&#xff0c; 但是如果是有涉及二级命令这类的开发用官方的这个flags就比较麻烦了&#xff0c; 今天给大家介绍一个可用帮助我们快速优雅的开发和使用命令行工具的库cobra&…

汇舟问卷:国外问卷调查两小时赚28美金?

现在的年轻人不愿意打工的原因不只是因为累&#xff0c;而且赚的钱也不多。有些人开玩笑地说&#xff0c;摆个摊儿卖点小商品都比上班赚得多&#xff0c;这确实是事实。 打工只能勉强维持生计&#xff0c;不能致富。因此&#xff0c;如果我们想赚大钱&#xff0c;首先需要改变…

炫云亮相第二十届中国国际动漫节国际动漫游戏商务大会!

5月28日-29日&#xff0c;备受瞩目的第二十届中国国际动漫节国际动漫游戏商务大会(iABC2024)在杭州滨江开元名都大酒店隆重召开&#xff01;本届大会以动漫IP为核心&#xff0c;从源头到全系列数字内容&#xff0c;探索创新协同、融合发展、价值转化&#xff0c;并对重点作品和…

IDEA 常用技巧

1、代码块整体移动 选中&#xff0c;tab整体右移选中&#xff0c;shifttab整体左 移 2、统一修改变量 3.方法分割线 seting >> editor >> apperance >> show method separators 4、快捷键 构造器、set与get方法、方法重写、toString 等快捷操 鼠标停留在…

人工智能在消化道肿瘤中的最新研究【24年五月|顶刊速递·05-31】

小罗碎碎念 2024-05-31|医学AI顶刊速递 今天分享的六篇文章,主题是AI+结肠癌。但是,并非所有的文章都是直接与结直肠癌相关,比如第一篇研究的就是肝癌。 我其实想关注的是消化道肿瘤的医学AI研究——消化道由口腔、食管、胃、小肠、大肠和直肠组成,而肝脏虽然不直接参与食…

java海滨学院班级回忆录源码(springboot)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的海滨学院班级回忆录。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 海滨学院班级回忆录的…

运维开发.Kubernetes探针与应用

运维系列 Kubernetes探针与应用 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263…

量子计算:未来技术的变革与应用

量子计算&#xff1a;未来技术的变革与应用 引言 量子计算是近年来科学技术领域的一个前沿话题&#xff0c;它有潜力彻底改变我们处理信息的方式。通过利用量子力学的独特性质&#xff0c;量子计算机可以在某些问题上超越传统计算机的性能&#xff0c;带来计算能力的巨大飞跃…

2024 江苏省大学生程序设计大赛 2024 Jiangsu Collegiate Programming Contest(FGKI)

题目来源&#xff1a;https://codeforces.com/gym/105161 文章目录 F - Download Speed Monitor题意思路编程 G - Download Time Monitor题意思路编程 K - Number Deletion Game题意思路编程 I - Integer Reaction题意思路编程 写在前面&#xff1a;今天打的训练赛打的很水&…

电商物流查询解决方案助力提升消费者体验

截至2023年12月&#xff0c;中国网络购物用户规模达9.15亿人&#xff0c;占网民整体的83.8%。这一庞大的数字不仅展现了电子商务的蓬勃发展&#xff0c;也标志着数字零售企业营销战略的转变——从以产品和流量为核心&#xff0c;到用户为王的新阶段。因此&#xff0c;提升消费者…

探索 Android Studio 中的 Gemini:加速 Android 开发的新助力

探索 Android Studio 中的 Gemini&#xff1a;加速 Android 开发的新助力 在 Gemini 时代的下一篇章中&#xff0c;Gemini融入了更多产品中&#xff0c;Android Studio 正在使用 Gemini 1.0 Pro 模型&#xff0c;使 Android 开发变得更快、更简单。 Studio Bot 现已更名为 And…

广告联盟项目:广告收益小游戏app开发

开发一个基于广告联盟项目的广告收益小游戏APP涉及多个关键步骤和考虑因素。以下是一个大致的开发流程和要点&#xff1a; 市场调研与定位&#xff1a; 深入了解目标用户群体&#xff0c;包括他们的游戏偏好、使用习惯以及广告接受度1。 分析市场上类似产品的成功与失败案例&…

js中的遍历(for、forEach、map、filter、reduce、every、some、includes、find)

js中的遍历 1. for 和 forEach性能上的比较&#xff1a;for性能更优异步同步化的支持度&#xff1a;for支持&#xff0c;forEach不支持 2. map用法1&#xff1a;将数组内每个元素2后&#xff0c;获取新数组用法2&#xff1a;将数组对象内每个元素的名称拿出来&#xff0c;作为一…

Linux服务升级:Twemproxy 升级 Redis代理

目录 一、实验 1.环境 2.多实例Redis部署 3.Twemproxy 升级Redis代理 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 系统版本软件IP备注CentOS7.9Twemproxy192.168.204.200 Redis代理 Redis127.0.0.1:6379第一个Redis实例 Redis127.0.0.1:6380第二个…

微信小程序-页面导航-导航传参

1.声明式导航传参 navigator组件的url属性用来指定将要跳转到的页面的路径&#xff0c;同时&#xff0c;路径的后面还可以携带参数&#xff1a; &#xff08;1&#xff09;参数与路径之间使用 ? 分割 &#xff08;2&#xff09;参数键与参数值用 相连 &#xff08;3&…

Ubuntu开机提示fsck exited with status code 4的解决办法

目录 Ubuntu开机提示fsck exited with status code 4的解决办法 这是因为关机不当导致磁盘内的数据损坏 U

五星级可视化大屏(02):再发一波,纯数据图表也跟效果杠杠的。

这是第一期&#xff0c;分享纯数据图表的&#xff0c;请大家仔细观看。