chenkang455 / TRMD

[TMM 2024] Motion Deblur by Learning Residual from Events
13 stars 0 forks source link

Color training problems. #3

Open qiaobendong opened 1 month ago

qiaobendong commented 1 month ago

您好,训练彩色图像的数据集还是这个吗?怎么训练彩色图像数据?

chenkang455 commented 1 month ago

@qiaobendong 你好,提供的GOPRO数据集包含彩色的模糊图、清晰图和对应的事件流信息,运行 python train_GoPro.py --rgb True --save_path Model/RE_Net_RGB.pth 即可。

qiaobendong commented 1 month ago

谢谢您的回答,训练彩色图像的话请问代码里面有哪些地方需要修改?

chenkang455 commented 1 month ago

谢谢您的回答,训练彩色图像的话请问代码里面有哪些地方需要修改?

不需要的,我们已经在数据读入阶段和模型处理阶段进行了相关处理:

To train our model from scratch on GRAY-GOPRO: python train_GoPro.py --rgb False --save_path Model/RE_Net_GRAY.pth To train our model from scratch on RGB-GOPRO: python train_GoPro.py --rgb True --save_path Model/RE_Net_RGB.pth

数据部分彩色图像的修改代码见 https://github.com/chenkang455/TRMD/blob/d2a5c9d51994ad49ed421e10d3094bde84c6edb4/dataset_h5.py#L62C1-L63C1

原理部分彩色图像的修改代码见https://github.com/chenkang455/TRMD/blob/d2a5c9d51994ad49ed421e10d3094bde84c6edb4/train_GoPro.py#L78

qiaobendong commented 1 month ago

非常感谢您,我想请问一下,在数据集中的对应的事件流信息中的事件帧只有灰度图吗?不是您论文中的那种红蓝点图?

chenkang455 commented 1 month ago

非常感谢您,我想请问一下,在数据集中的对应的事件流信息中的事件帧只有灰度图吗?不是您论文中的那种红蓝点图?

数据集里的是经过SCER处理之后得到的事件体素,事件体素是对正负事件强度进行叠加得到的结果,只包含灰度信息。

qiaobendong commented 1 month ago

谢谢,你好,我把您的数据集转化为图片格式了,为什么彩色图片很不真实?很多颜色都不显示,好多不真实的颜色,和真实的gropro彩色图不一样,而且经过模型训练之后的去模糊图也是这样,我看您论文里的彩色图是真实的,是有什么地方需要设置还是?谢谢您!

chenkang455 commented 1 month ago

谢谢,你好,我把您的数据集转化为图片格式了,为什么彩色图片很不真实?很多颜色都不显示,好多不真实的颜色,和真实的gropro彩色图不一样,而且经过模型训练之后的去模糊图也是这样,我看您论文里的彩色图是真实的,是有什么地方需要设置还是?谢谢您!

你可以提供一下你的图片吗?

qiaobendong commented 1 month ago

1 好的,就是这样的,您看下

chenkang455 commented 1 month ago

1

好的,就是这样的,您看下

这应该是你的rgb通道错了,opencv默认读入是bgr方式,不知道你保存图片如何保存的,可以把最后一维通道倒置一下[:,:,-1]

qiaobendong commented 1 month ago

好的,谢谢您!

qiaobendong commented 1 month ago

您好,关于代码中的保存事件图像代码:https://github.com/chenkang455/TRMD/blob/d2a5c9d51994ad49ed421e10d3094bde84c6edb4/utils.py#L258 我尝试保存red-blue事件图像,出现这样的错误,我是按照保存图像的方法一样进行保存,请问是我把保存的方式还是代码哪里需要修改?(save_event_image(np.array(voxel[j,:].detach().cpu()),f'{epoch}/{str(i).zfill(4)}event{j}')) 报错: b[voxel > 0] = 255 IndexError: too many indices for array: array is 2-dimensional, but 3 were indexed

chenkang455 commented 1 month ago

您好,关于代码中的保存事件图像代码:

https://github.com/chenkang455/TRMD/blob/d2a5c9d51994ad49ed421e10d3094bde84c6edb4/utils.py#L258

我尝试保存red-blue事件图像,出现这样的错误,我是按照保存图像的方法一样进行保存,请问是我把保存的方式还是代码哪里需要修改?(save_event_image(np.array(voxel[j,:].detach().cpu()),f'{epoch}/{str(i).zfill(4)}event{j}')) 报错: b[voxel > 0] = 255 IndexError: too many indices for array: array is 2-dimensional, but 3 were indexed

这里输入的voxel shape为[h,w],大于1的voxel为红,小于-1的voxel为蓝。

qiaobendong commented 1 month ago

我看在您数据集里面的voxe的size为【1,6,360,640】,使用您这个数据集怎么修改可以保存red-blue事件图像?感谢

chenkang455 commented 1 month ago

保存voxel[0,0]即可

qiaobendong commented 1 month ago

好的谢谢您,但是保存之后背景是黑色的,和您论文里的事件图好像不一样,是哪里需要修改一下代码还是?感谢 3ab05803bed15a2d19efdf9dda321b1 image

chenkang455 commented 1 month ago

https://github.com/chenkang455/TRMD/blob/d2a5c9d51994ad49ed421e10d3094bde84c6edb4/utils.py#L300

这个代码呢,把之前的注释了。

def save_event_image(voxel, title,mode='red-blue'):
    if mode == 'red-blue':
        # Red-blue mode
        # positive events: blue, negative events: red
        event_preview = np.zeros((voxel.shape[0], voxel.shape[1], 3), dtype=np.uint8)
        b = event_preview[:, :, 0]
        g = event_preview[:, :, 1]
        r = event_preview[:, :, 2]
        event_preview.fill(255)
        b[voxel > 0] = 255
        g[voxel > 0] = 0
        r[voxel > 0] = 0

        b[voxel < 0] = 0
        r[voxel < 0] = 255
        g[voxel < 0] = 0

    else:
        # Grayscale mode
        # normalize event image to [0, 255] for display
        m, M = voxel.min(), voxel.max()
        event_preview = np.clip((255.0 * (voxel - m) / (M - m)).astype(np.uint8), 0, 255)
    cv2.imwrite('Result/' + title + '.png', event_preview)
qiaobendong commented 1 month ago

作者您好,请问我想用您的这个模型跑EFNet不经过插帧公开的数据集,我应该怎么修改代码才可以,感谢!

chenkang455 commented 1 month ago

作者您好,请问我想用您的这个模型跑EFNet不经过插帧公开的数据集,我应该怎么修改代码才可以,感谢!

具体是哪个数据集?只要把对应的事件流转换成voxel的形式就可以跑了,具体你可以参考一下REBlur数据集的代码,这个数据集是EFNet论文中提出的真实场景数据集。

qiaobendong commented 1 month ago

EFNet论文中的GoPro数据集,您论文里是经过帧插值的GoPro数据集,然后我想尝试一下EFNet论文中的GoPro数据集,但是我一直尝试都不成功,不知道怎么修改才能对的上EFNet论文中的GoPro数据集,非常感谢!

chenkang455 commented 1 month ago

EFNet论文中的GoPro数据集,您论文里是经过帧插值的GoPro数据集,然后我想尝试一下EFNet论文中的GoPro数据集,但是我一直尝试都不成功,不知道怎么修改才能对的上EFNet论文中的GoPro数据集,非常感谢!

你可以参考一下REBlur数据集的实现,这个和EFNet数据集中的GOPRO数据集格式应该是类似的。

qiaobendong commented 1 month ago

作者您好,我想问一下怎么能把EFNet论文中的GoPro数据集的存储形式,修改为和您论文中的GoPro的一样,然后可以正常输入到这个的模型中,最近一直在搞这个,但是一直搞不成,希望作者能提供一些思路,非常感谢

chenkang455 commented 1 month ago

作者您好,我想问一下怎么能把EFNet论文中的GoPro数据集的存储形式,修改为和您论文中的GoPro的一样,然后可以正常输入到这个的模型中,最近一直在搞这个,但是一直搞不成,希望作者能提供一些思路,非常感谢

用SCER的方式将GOPRO数据集的event构建成voxel,voxel的channel等于6即可。

qiaobendong commented 1 month ago

作者您好,我在使用EFNet公开的GoPro数据集跑了一下这个模型,发现和在您这个数据集中的跑的效果相差甚远,PSNR:31; SSIM:0.91; lpips0.08:不知道为什么效果这么不好,是因为对数据集进行插针处理的结果导致的您论文中的效果吗?

chenkang455 commented 1 month ago

作者您好,我在使用EFNet公开的GoPro数据集跑了一下这个模型,发现和在您这个数据集中的跑的效果相差甚远,PSNR:31;

SSIM:0.91; lpips0.08:不知道为什么效果这么不好,是因为对数据集进行插针处理的结果导致的您论文中的效果吗?

psnr和ssim这类指标对数据图像的强度比较敏感,你看看lpips指标对比呢。有一部分原因可能是事件流的阈值包括噪声等因素不同。

qiaobendong commented 1 month ago

lpips的值很高,0.08,想问一下,你用您的模型跑过公开的不经过帧插值的GoPro数据集吗?

chenkang455 commented 1 month ago

lpips的值很高,0.08,想问一下,你用您的模型跑过公开的不经过帧插值的GoPro数据集吗?

暂时还没有,你可以尝试重新训练一遍。

qiaobendong commented 1 month ago

谢谢您,但是我训练了好多次,结果一直很不好,不知道为什么,现在很困惑

chenkang455 commented 1 month ago

谢谢您,但是我训练了好多次,结果一直很不好,不知道为什么,现在很困惑

这两个gopro数据集可能有部分差异,你可以试试在我的gopro数据集上训练EFNet然后对比一下两种方法的差异。EFNet数据集只包含成对模糊-清晰图,可能无法用于训练本文的方法。