数据集和标签怎么读取

我新手,在用 CNN 做一个图像复原的工作。我在一篇论文中看到:“将 CNN 模型应用于模糊去除直观的方法是将模糊图像直接作为网络模型的输入以及对应的清晰图像作为标签”。现在我有模糊图像及对应的清晰图像若干,分别在两个文件夹,那我怎么去训练得到它们之间的映射关系呢(或者说我怎么把它们读取进去进行训练呢)。mnist 数据集中训练集和标签早就做好了,我不知道它是怎么运作的,也就是说我的便签也是图片,我不知道怎么弄。毕设两周没进展了,整个人快炸了,着急啊,再做不出来怕是要凉凉。求大家指教!!

另:不知道 GitHub 上有没有相关的开源项目啊,我找了很久,都是用 CNN 做图像分类的或者用对抗网络做的,有知道的小伙伴也请告知于我啊。

感激不尽!


bitxrj,发表于 2018-4-22 15:55:20

你这个问题太大了哈。建议把你具体的疑惑说出来。不难很难得到回复~


舟 3332 ,发表于 2018-4-25 16:04:41

是这样,我要做的就是用 CNN 将模糊图像复原为清晰图像,论文上说将模糊图像做输入,相应的清晰图像做标签,但是我不知道这个思路怎么实现。因为我不知道怎么将它们读取进去。


bitxrj(提问人),2018-4-25 16:35:42

我也遇到类似问题了,不知道怎样读取自己的样本和对应标签然后训练模型


M 丶 Sulayman,发表于 2018-4-27 16:06:12

呀,刚看了您的帖子。我现在还没搞清楚我的问题呢,毕设怕是要凉凉。。。。


bitxrj(提问人),发表于 2018-5-2 10:02:29

先上两篇文章和几个相关代码,如果楼主时间紧可以忽略我后面的求教。如果楼主都熟悉了就请恕我多言了(希望其中不是撞上楼主本人了。。。)。
文章 1(主要是降噪):https://arxiv.org/pdf/1608.03981.pdf
代码 1:GitHub - cszn/DnCNN: Beyond a Gaussian Denoiser: Residual Learning of Deep CNN for Image Denoising (TIP, 2017)
文章 2(图像修复):https://arxiv.org/abs/1704.03264
代码 2:GitHub - cszn/IRCNN: Learning Deep CNN Denoiser Prior for Image Restoration (CVPR, 2017) (Matlab)
这两篇都是哈尔滨工业大学张凯的工作,都不是 tensorflow 的实现,不过因为是原作者所以先写出来。第二篇可能更相关,不过第一篇有香港中文大学胡文博的 tensorflow 实现(https://github.com/crisb-DUT/DnCNN-tensorflow),估计最能帮上楼主的忙。

首先声明我是完全不懂这个的,所以想在这里说一下大致想法请楼主指教。从大面上讲,这个问题是一张模糊图对应一张清晰图,保证输入(数据集)和输出(标签)数组的顺序应该就可以了。具体细节取决于你有什么数据,又是怎么读入数据的。一个想法是事先用 numpy 单独处理好,把一对对应的图片数据放在一起,得到的大概形状可能是 [总模糊清晰对数,2,宽,高,通道数],保存为 npy,然后再在 TF 中读入 npy。另外提一点,上面提到的 tensorflow 实现,真正的图片数据只有清晰图,模糊是在程序里加上的,楼主可以试试把模糊图片导出来看看,可能有助于理解输入输出。个人感觉对训练模型来说单一图片加模糊是一种很聪明的做法。


yunhai_luo,发表于 2018-5-2 13:52:03

这两篇论文我都有看过,第二篇正在琢磨。但是由于用途的特殊性,我这个模糊图像并不是随意模糊的,而是清晰图像经过一个相同的模糊核卷积,之后加上不同等级的噪声得到的(也就是一张清晰图像对应着十张不同的模糊图像)。所以不能在程序中加,只能提前准备好。之前有人告诉我可以多张模糊图像对应一张清晰图像。


bitxrj(提问者),2018-5-2 14:17

我也在写论文…我特别赞同一个观点那就是论文写得很赞,实验嘛,大家都清楚咋回事…有时候确实做不出来,只能那啥啥了,大家懂得。我也很想把自己的程序跑出来,折腾了一个多月,怎么感觉提升不大…不过还是要坚持!~加油


M 丶 Sulayman,发表于 2018-5-2 16:23:55

我觉得也是。。就理论我明白,但是一写代码就懵圈。论文我感觉其实也能写出来了,但是代码真的一个月没进展了。。。。


bitxrj(提问者),2018-5-2 16:36:09

感谢。我看了一下那个 TF 的实现。感觉思路还是挺清楚的。

最核心的代码在这里:DnCNN-tensorflow/model.py at 306c30c253455f2dde7ba528f84782c6c65e2023 · wbhu/DnCNN-tensorflow · GitHub

一共这样三个变量 x y 和 y_

x 表示输入,就是有噪声的图像
y 是 dncnn 的输出,就是预测的值
y_ 是期待的结果,也就是无噪声的原图

按照题主数据集的情况,可以把 x 和 y_ 都从文件中读入 放到 nparray 里面。
y 通过 dncnn 算出来
然后用 TF optimizer 去优化 y_ - y 的 l2_loss 即可。


舟 3332,发表于 2018-5-2 17:41:56

谢谢啊,就是你说的那样(x, y, y_)那样的关系了,我看了那篇代码了,目前仍在努力中。


bitxrj(提问者)发表于 2018-5-5 15:58:54

可以看看相似的问题:图像超分辨率、图像去噪,这些 GitHub 上 cnn code 有的是


lytensor,2018-7-3 17:04:19

bitxrj,给你回答了:


M 丶 Sulayman,发表于 2018-5-2 10:08:54