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

news2024/12/24 12:57:39

使用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 main
    meta=meta)
  File "/home/ma/mmrotate/mmrotate/apis/train.py", line 144, in train_detector
    runner.run(data_loaders, cfg.workflow)
  File "/root/anaconda3/envs/mmrotate/lib/python3.7/site-packages/mmcv/runner/epoch_based_runner.py", line 136, in run
    epoch_runner(data_loaders[i], **kwargs)
  File "/root/anaconda3/envs/mmrotate/lib/python3.7/site-packages/mmcv/runner/epoch_based_runner.py", line 49, in train
    for 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_data
    return self._process_data(data)
  File "/root/anaconda3/envs/mmrotate/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 1359, in _process_data
    data.reraise()
  File "/root/anaconda3/envs/mmrotate/lib/python3.7/site-packages/torch/_utils.py", line 543, in reraise
    raise 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_loop
    data = fetcher.fetch(index)
  File "/root/anaconda3/envs/mmrotate/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 58, in fetch
    data = [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_img
    return 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 Image

def 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_files

def 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.coloradmin.cn/o/1718657.html

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

相关文章

nacos连接异常did not find the Leader node;

目录 问题描述解决过程持久化节点真的是存在数据库吗&#xff1f; 问题描述 我搭建的是nacos伪集群&#xff0c;然后主要想着看看集群情况下&#xff0c;临时节点和持久节点的区别。 如果使用临时节点项目能够正常起来&#xff0c;一旦添加ephemeral: false项目就起不来了。 …

【linux】自定义快捷命令/脚本

linux自定义快捷命令 场景自定义命令自定义脚本 场景 深度学习经常要切换到自己环境&#xff0c;conda activate mmagic&#xff0c;但是又不想每次重复打这么多字&#xff0c;想使用快捷命令直接切换。 自定义命令 使用别名&#xff08;alias&#xff09;或自定义脚本来创建…

打造你的首个QT 5计算器应用

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;QT 5的力量与我们的计算器 二、QT 5基础&#xff1a;理解UI设计与文件…

Go微服务: 基于Docker搭建Kong网关环境

概述 在当今的微服务架构中&#xff0c;API网关扮演着至关重要的角色&#xff0c;它作为系统的统一入口负责处理所有内外部请求&#xff0c;实现路由转发、负载均衡、安全控制、限流熔断等多种功能Kong&#xff0c;作为一个开源、高性能、可扩展的API网关&#xff0c;凭借其强…

vscode 远程连接出现问题

终端太小了&#xff0c; 因为终端中有换行符&#xff0c;如果 终端太小会出现问题

【AI+知识库问答】沉浸式体验了解 AI知识库问答fastGPT

之前写过一篇文章 【AI本地知识库】个人整理的几种常见本地知识库技术方案 &#xff0c; 由于当时主要是针对AI本地知识库&#xff0c; 所以没列fastGPT。 最近经常刷到fastGPT&#xff0c;这里单独水一篇。 FastGPT 是一个基于 LLM 大语言模型的知识库问答系统&#xff0c;…

基于Cloudflare/CloudDNS/GitHub使用免费域名部署NewBing的AI服务

部署前准备&#xff1a; Cloudflare 账号 https://dash.cloudflare.com/login CloudDNS 账号 https://www.cloudns.net/ GitHub 账号 https://github.com/Harry-zklcdc/go-proxy-bingai Cloudflare 部署 Worker CloudDNS 获取免费二级域名 GitHub New Bing Ai 项目 https://git…

C++ 快排算法

今天看到一种清爽的快速算法&#xff0c;复习一下~ 快速排序算法的平均时间复杂度是O(n log n)&#xff0c;最坏情况下的时间复杂度是O(n^2)。 快速排序的最佳情况是每次分割都平均分配元素&#xff0c;这种情况下时间复杂度可降至O(n log n)。 快速排序的基本步骤如下&#…

qwen-moe

一、定义 qwen-moe 代码讲解&#xff0c; 代码qwen-moe与Mixtral-moe 一样&#xff0c; 专家模块qwen-moe 开源教程Mixture of Experts (MoE) 模型在Transformer结构中如何实现&#xff0c;Gate的实现一般采用什么函数&#xff1f; Sparse MoE的优势有哪些&#xff1f;MoE是如…

【智能算法】三角拓扑聚合优化算法(TTAO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;S Zhao受到数学相似三角形拓扑结构启发&#xff0c;提出了三角拓扑聚合优化算法&#xff08;Triangulation Topology Aggregation Optimizer, TTAO&#xff09;。 2.算…

Unity中的MVC框架

基本概念 MVC全名是Model View Controller 是模型(model)-视图(view)-控制器(controller)的缩写 是一种软件设计规范&#xff0c;用一种业务逻辑、数据、界面显示 分离的方法组织代码 将业务逻辑聚集到一个部件里面&#xff0c;在改进和个性化定制界面及用户交互的同时&#x…

ch4网络层---计算机网络期末复习(持续更新中)

网络层概述 将分组从发送方主机传送到接收方主机 发送方将运输层数据段封装成分组 接收方将分组解封装后将数据段递交给运输层网络层协议存在于每台主机和路由器上 路由器检查所有经过它的IP分组的分组头 注意路由器只有3层(网络层、链路层、物理层) 网络层提供的服务 一…

无人售货机零售业务成功指南:从市场分析到创新策略

在科技驱动的零售新时代&#xff0c;无人售货机作为一种便捷购物解决方案&#xff0c;正逐步兴起&#xff0c;它不仅优化了消费者体验&#xff0c;还显著降低了人力成本&#xff0c;提升了运营效能。开展这项业务前&#xff0c;深入的市场剖析不可或缺&#xff0c;需聚焦消费者…

命令模式(行为型)

目录 一、前言 二、命令模式 三、总结 一、前言 命令模式&#xff08;Command Pattern&#xff09;是一种行为型设计模式&#xff0c;命令模式将一个请求封装为一个对象&#xff0c;从而可以用不同的请求对客户进行参数化&#xff1b;对请求排队或记录请求日志&#xff0c;以…

【C++】C++入门2.0

各位读者老爷好&#xff0c;本鼠最近浅学了一点C的入门知识&#xff01;利用本博客作为笔记的同时也希望得到各位大佬的垂阅&#xff01; 目录 1. 引用 1.1.引用的概念 1.2.引用的特性 1.3.引用的使用场景 1.4.引用的易错点 1.5.引用的优势 1.6.引用和指针 2.内联函数 …

B端UI设计,演绎高情逸态之妙

B端UI设计&#xff0c;演绎高情逸态之妙

汽车IVI中控开发入门及进阶(二十三):i.MX8

前言: IVI市场的复杂性急剧增加,而TimeToMarket在几代产品中从5年减少到2-3年。Tier1正在接近开放系统的模型(用户可以安装应用程序),从专有/关闭源代码到标准接口/开放源代码,从软件堆栈对系统体系结构/应用层/系统验证和鉴定的完全所有权,越来越依赖第三方中间件和平…

STM32自己从零开始实操03:输出部分原理图

一、继电器电路 1.1指路 延续使用 JZC-33F-012-ZS3 继电器&#xff0c;设计出以小电流撬动大电流的继电器电路。 &#xff08;提示&#xff09;电路需要包含&#xff1a;三极管开关电路、续流二极管、滤波电容、指示灯、输出部分。 1.2数据手册重要信息提炼 联系排列&…

Rainbond 携手 TOPIAM 打造企业级云原生身份管控新体验

TOPIAM 企业数字身份管控平台&#xff0c; 是一个开源的IDaas/IAM平台、用于管理账号、权限、身份认证、应用访问&#xff0c;帮助整合部署在本地或云端的内部办公系统、业务系统及三方 SaaS 系统的所有身份&#xff0c;实现一个账号打通所有应用的服务。 传统企业 IT 采用烟囱…

NSS题目练习5

[NISACTF 2022]babyupload 打开后尝试上传php&#xff0c;jpg&#xff0c;png文件都没成功 查看源代码发现有个/source文件 访问后下载压缩包发现有一个python文件 搜索后知道大致意思是&#xff0c;上传的文件不能有后缀名&#xff0c;上传后生成一个uuid&#xff0c;并将uuid…