读取 mjsynth 数据集图像的问题

problem in reading the images of mjsynth dataset

最近我正在尝试训练一个文本识别网络。我试图通过将 mjsynth dataset 馈送到网络来开始训练。但是,数据集中似乎有一些图像是空白的。因此,在训练时,如果我直接将数据提供给网络,它会在读取图像时产生错误,并且由于这个错误,训练停止。有谁知道 mjsynth 数据集中空白图像的列表。这样我就可以从数据集中删除那些空白图像。

在尝试了很多事情之后,我结束了 运行 一个相当长的实验,读取了 mjsynth 数据集的近 900 万张图像,并收集了损坏或空白的图像。我发现当 mjsynth 数据直接馈送到模型进行训练时,有 12 个损坏的图像停止模型训练而没有任何变化。这是代码和创建的无效图像。因此,您可以在开始模型训练之前从 mjsynth 数据集中删除这些图像。

import os
import cv2
import numpy as np
rootdir = './mjsynth/mnt/ramdisk/max/90kDICT32px'

invalid_images = []
for subdir, dirs, files in os.walk(rootdir):
    for file in files:
        im_path = os.path.join(subdir, file)
        im = cv2.imread(im_path)
        if type(im) != np.ndarray:
            invalid_images.append(im_path)

print('invalid_images = {}'.format(invalid_images ))

# output
invalid_images = 
['./mjsynth/mnt/ramdisk/max/90kDICT32px\1863/4/223_Diligently_21672.jpg',
'./mjsynth/mnt/ramdisk/max/90kDICT32px\913/4/231_randoms_62372.jpg',
'./mjsynth/mnt/ramdisk/max/90kDICT32px\2025/2/364_SNORTERS_72304.jpg',
'./mjsynth/mnt/ramdisk/max/90kDICT32px\495/6/81_MIDYEAR_48332.jpg',
'./mjsynth/mnt/ramdisk/max/90kDICT32px\869/4/234_TRIASSIC_80582.jpg',
'./mjsynth/mnt/ramdisk/max/90kDICT32px\173/2/358_BURROWING_10395.jpg',
'./mjsynth/mnt/ramdisk/max/90kDICT32px\2013/2/370_refract_63890.jpg',
'./mjsynth/mnt/ramdisk/max/90kDICT32px\368/4/232_friar_30876.jpg',
'./mjsynth/mnt/ramdisk/max/90kDICT32px\1881/4/225_Marbling_46673.jpg',
'./mjsynth/mnt/ramdisk/max/90kDICT32px\1817/2/363_actuating_904.jpg',
'./mjsynth/mnt/ramdisk/max/90kDICT32px\275/6/96_hackle_34465.jpg',
'./mjsynth/mnt/ramdisk/max/90kDICT32px\2069/4/192_whittier_86389.jpg']