当前位置: 首页 > article >正文

解决Corrupt JPEG data: premature end of data segment

本文不生产技术,只做技术的搬运工!!!

前言

最近在训练yolo的过程中发现大批量警告Corrupt JPEG data: premature end of data segment,之前也出现过,但一直没当回事,但这次数量较大,已经严重影响到模型指标,因此决心解决它。

解决过程

1. 这个问题其实是由于jpg图像损坏导致的,网上有人通过jpg图像的16进制文件来进行分析。判断文件头和文件尾的特征,但是在我这里没有用

2.通过询问大模型,给出的代码都是获取警告等途径,但是该问题并不属于python警告或者错误,而是c++代码中的警告,因此无法抓取

3.使用PIL也无法校验

解决思路

通过pycharm的打印结果来定位图像

1.在pycharm里新建test.py文件,编写代码

import os
import cv2
import time
def getFileList(dir, Filelist, ext=None):
    """
    获取文件夹及其子文件夹中文件列表
    输入 dir:文件夹根目录
    输入 ext: 扩展名
    返回: 文件路径列表
    """
    newDir = dir
    if os.path.isfile(dir):
        if ext is None:
            Filelist.append(dir)
        else:
            if ext in dir:
                Filelist.append(dir)

    elif os.path.isdir(dir):
        for s in os.listdir(dir):
            newDir = os.path.join(dir, s)
            getFileList(newDir, Filelist, ext)

    return Filelist

path = r'/home/workspace/temp/images'
img_list = []
img_list = getFileList(path,img_list,ext='.jpg')
corrupted_images = []
with open('/home/workspace/temp/images/break/test.log','r') as f:
    lines = f.readlines()
    count_lines_old = len(lines)
old_img_path = ""
for img_path in img_list:
    img = cv2.imread(img_path)
    time.sleep(0.01) #这段代码的灵魂在这里,不要删除,不然拿到的图像路径不对
    with open('/home/workspace/temp/images/break/test.log', 'r') as f:
        lines = f.readlines()
        count_lines = len(lines)
        if count_lines != count_lines_old:
            count_lines_old=count_lines
            corrupted_images.append(img_path)
print(corrupted_images)

2.点击右上角,切换文件至test

3.点击菜单栏运行(run),找到编辑配置

4.点击日志,勾选保存到文件,填写日志路径,注意,这个路径一定要和代码里的路径保持一致

设置完成后右键执行,日志文件里就可以拿到所有的问题图像路径了,然后大家就可以编写脚本根据这些图像路径将问题图像剔除出去。


http://www.kler.cn/a/379453.html

相关文章:

  • DFS求解迷宫最长移动路线
  • 鸿蒙ArkTS中的面向对象编程
  • 【STM32】STM32G431RBT6单片机的BOOT引脚位置及功能
  • 线程基础知识、jmm(Java内存模型)
  • 动态切换策略模式在Spring Boot项目中的实践与应用
  • 闪存学习_2:Flash-Aware Computing from Jihong Kim
  • Oracle视频基础1.3.5练习
  • 操作系统(9) (并发-----原子性/互斥临界区/生产者消费者问题/临界区问题三条件/互斥性/进展性/公平性)
  • Linux(centOS)的安全命令
  • 鸿蒙移动应用开发-------前篇
  • 泛微开发修炼之旅--52关于ecology首页待办修改源码位置记录
  • Windows Qt 6安装Oracle QOCI SQL Driver插件
  • No.24 笔记 | WEB安全 - 任意文件包含漏洞 part 6
  • Flutter使用share_plus是提示发现了重复的类
  • 为什么https先非对称加密,然后对称加密?
  • Conmi的正确答案——在Kibana中搜索Elasticsearch的索引
  • CSS--两列网页布局,三列布局和多行多列布局
  • 堆heap的讨论、习题与代码
  • Backtrader-Broker05
  • SpringKafka生产者、消费者消息拦截
  • 算法设计题(树和二叉树)
  • 自然语言处理研究方向在跨语言处理方面有哪些新的创新思路?
  • 【c++日常刷题】两个数字的交集、点击消除、最小花费爬楼梯
  • 架构师备考-软件工程相关补充
  • Android使用scheme方式唤醒处于后台时的App场景
  • Python复习2