我想在 UCF_CC_50 数据集上训练 CSRNet 模型,该数据集的图像总数为 50。并面临类似的问题

Posted

技术标签:

【中文标题】我想在 UCF_CC_50 数据集上训练 CSRNet 模型,该数据集的图像总数为 50。并面临类似的问题【英文标题】:I want to train the CSRNet model on UCF_CC_50 dataset which has total number of images 50. and face a problem like 【发布时间】:2021-08-21 05:50:34 【问题描述】:

我想在 UCF_CC_50 数据集上训练 CSRNet 模型,但出现了这个问题

KeyError  Traceback (most recent call last)    <ipython-input-11-78e054690de5> in <module>  
     4     img= plt.imread(img_path)
     5     k = np.zeros((img.shape[0],img.shape[1]))
***----> 6     gt = mat["image_info"][0,0][0,0][0]***
     7     for i in range(0,len(gt)):
     8         if int(gt[i][1])<img.shape[0] and int(gt[i][0])<img.shape[1]:

**KeyError: 'image_info'**
----------

enter for img_path in img_paths:
    print (img_path)
    mat = io.loadmat(img_path.replace('.jpg','.mat').replace('images','ground_truth').replace('IMG_','GT_IMG_'))
    img= plt.imread(img_path)
    k = np.zeros((img.shape[0],img.shape[1]))
    gt = mat["image_info"][0,0][0,0][0]
    for i in range(0,len(gt)):
        if int(gt[i][1])<img.shape[0] and int(gt[i][0])<img.shape[1]:
            k[int(gt[i][1]),int(gt[i][0])]=1
    k = gaussian_filter_density(k)
    with h5py.File(img_path.replace('.jpg','.h5').replace('images','groundtruth'), 'w') as hf:
            hf['density'] = kcode here

---------

文件路径是

C:\Users\Gigabyte pc\Desktop\COUNTING\CSRNet-pytorch-master\UCF_CC_50\part_A_final/train_data\images\IMG_1.jpg

【问题讨论】:

【参考方案1】:

您正在读取与图像'...\IMG_1.jpg' 对应的matfile '...\ground_truth\GT_IMG_1.mat'。在处理此数据点时,您尝试访问存储在您读取的 matfile 中的变量 'image_info'。 正如您收到的错误消息所述:

KeyError: 'image_info'

matfile 不包含这个变量,'image_info'

要调试,请阅读 matfile 并查看存储在那里的变量的名称。请注意,命名它们区分大小写。

【讨论】:

其实我想在 UCF_CC_50 中生成 50 个图像的 ground truths 值并读取 mat 文件但找不到变量名“image_info” 这里的变量名是IMG_1,代表第一张只存储img的图片,尺寸为409*614*3 unint8 @Akbar (a) 请不要在 cmets 中发布私有代码。 (b) 您需要更改数据集代码以符合您要读取的 matfiles 如何更改数据集代码以及需要更改哪些参数 如何更改数据集代码以及需要更改的参数。谢谢【参考方案2】:

您的代码不符合您尝试读取的注释文件的结构。 UCF-50 中的注释 通过获取键“annPoints”的值,可以简单地读取 CC 数据集。

您可以对代码应用以下更改以读取逐点人头注释的 x 和 y 坐标:

4 img= plt.imread(img_path)
5 k = np.zeros((img.shape[0],img.shape[1]))
6 gt = mat["annPoints"]
7 for i in range(0,len(gt)):

【讨论】:

非常感谢您的热心帮助,让我明白如何生成基本事实。尊重你

以上是关于我想在 UCF_CC_50 数据集上训练 CSRNet 模型,该数据集的图像总数为 50。并面临类似的问题的主要内容,如果未能解决你的问题,请参考以下文章

修改 resnet 模型中的图层

如何准备 imagenet 数据集以运行 resnet50(来自官方 Tensorflow 模型花园)培训

如何在 Object Detection API 中同时训练和评估?

管道和网格搜索的 SKLearn 错误

SKLearn 线性回归,但在开始之前设置某些系数

如何在大数据集上训练分词器?