tianshuichen / Wavelet-like-Auto-Encoder

63 stars 21 forks source link

数据集和测试代码 #2

Closed leigaoyi closed 6 years ago

leigaoyi commented 6 years ago

陈老师好,我刚拜读了您的论文,对您的实验很感兴趣。但这里的caffe代码不太好读,您能提供多种版本的实现代码吗? 论文中的GPU、CPU的测试我也是第一次听说,很好奇,您能上传c++的测试代码,到WAE中来吗?

最后,您的损失函数设计让我想起了Context Encoder: Feature Learning By Inpainting 这篇文章。这篇文章虽然没有将输入分成两部分,但在损失函数设计时,也考虑了reconstruction loss 和 adversarial loss, 两部分,我觉得你们的设计有异曲同工之妙,但还没有思考出内在的联系。

我会尝试用tensorflow在小一些的数据集上,复现老师您的论文的实验,但如果您能提供更多帮助文档和资料,我将不胜感激。谢谢!

leigaoyi commented 6 years ago

实验中任务全放在一个代码文件中,而不是用函数的形式,分成几个实验文件来写,让我有些阅读困难。如果这个代码中有更多注释,也会改善用户的阅读体验。

tianshuichen commented 6 years ago

你好,很感谢对我们工作的关注。

这里放出的是caffe模型的prototxt以及在caffe下训练好的模型,你直接下载一份caffe的代码,然后把prototxt文件以及模型下载下来,就可以直接跑了,测试阶段用的都是比较常见的layer,包括conv layer, deconv layer 以及pooling layer等,caffe都是有实现的,不需要改动代码。

CPU和GPU的测试时间是指在CPU和GPU的环境下,测试一张图片需要的时间,这个在跑实验的时候是可以直接设置的,也不涉及到C++代码。

reconstruction loss用于约束网络的训练是一个比较常用的思路,这个在挺多文件都有的。

我没有在TensorFlow下跑过,不过如果在TensorFlow跑,只需要写一个energy constraint loss,应该是比较简单实现的。

tianshuichen commented 6 years ago

对于你“实验中任务全放在一个代码文件中……”这个问题,我不是很理解。

leigaoyi commented 6 years ago

早上就看到老师的答复,心情真好。首先回答一下‘实验任务全放在一个代码文件中’, 这个问题的描述。我在学习深度学习模型时,参考了若干教程,比如这篇,https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10 。 他们在设计实验时,会将模型的构建、训练、评估放在不同文件中,数据的预处理也不会出现在模型的构建部分。所以我不懂的时候就知道自己是哪一部分没有理解清楚。但是阅读您的代码的时候,只有一个caffe文件,我浏览了六七分钟没有找到loss部分,所以有点头晕。有空补补caffe再来研究。 这就是我所说的代码全在一个文件中的描述。

leigaoyi commented 6 years ago

用Reconstruction loss 来设计的文章我也读了几篇,但是我举出的这篇文章,和老师您的文章都用了不同损失函数的连接。只是老师您的文章,是对两个sub-inputs设计不同频段的损失函数,但是那篇文章,是对同一输入的不同频段设计了两种损失函数。我在思考将输入分解,对这种损失函数的设计是否有影响。 谢谢老师您的回复。

tianshuichen commented 6 years ago

我没有看过你说的那个文章,所以不确定你说的问题。在我们这个文章中,Reconstruction loss是用来约束分解成低分辨率的子图之后,信息尽可能不丢失,我想你提的那个文章应该也是这个目的。

leigaoyi commented 6 years ago

你好,我刚才在尝试用tensorflow在mnist上复现您的实验,在wavelet分解部分,我设计的能量函数经过迭代之后,它的损失值接近于0,这正常吗?后续的实验我正在做。 我担心高频网络会存储不到信息,如果训练太久的话。

leigaoyi commented 6 years ago

您好,我花了一下午加半个晚上,使用tensorflow在mnist上,复现了您的论文实验,并且上传代码到github上,https://github.com/leigaoyi/wavelet-auto-encoder 实验的总体过程很繁琐,我设计了四个小网络来进行实验,完成了mnist图片reconstruction 和分类实验,比正常的分类模型多了很多步骤。然后我对小波变换在其中的作用,没有想清楚。毕竟只是mnist数据集,可能还不能体会更细节的变化。 最后我编写的代码中,许多设计基于我自己的理解,希望没有太大偏差。编的有些累了,我得歇会儿了。

tianshuichen commented 6 years ago

这里WAE的设置是为了在保留原图信息的前提下压缩输入图片,从而达到加速的目的。WAE在这里的作用是保证在压缩图片之后,信息不会丢失太多,以保证精确率不会有太大损失。

其实并没有那么多复杂的步骤,主要是两个,首先训练WAE,然后是训练分类网络,主要是多了WAE的训练。对于一般的图片来说,我们直接用在ImageNet数据集训练好的WAE,去做其他数据集的时候,不需要重新训练WAE,也可以得到一个比较好的结果了,比如文章的CACD数据集。

mnist的数据集,因为其分类网络就比较小,其实做加速的意义不大。我们主要还是在一般的图片上用比较深的网络来做,比较有实践意义。

leigaoyi commented 6 years ago

谢谢您的讲解,我会抽空再思考能不能继续往下做,并且整理我的代码使它更易读。一下午编出来的,我自己读我的第一个project都有些凌乱。我会抽空使它更整洁。 最后,看到WAE重构图片和很好的分辨率,心里还是挺开心的。

发自我的 iPhone

在 2018年1月2日,下午8:43,Tianshui Chen notifications@github.com 写道:

这里WAE的设置是为了在保留原图信息的前提下压缩输入图片,从而达到加速的木得。

其实并没有那么多复杂的步骤,主要是两个步骤,首先训练WAE,然后是分类网络,主要是多了WAE的训练。对于一般的图片来说,我们直接用在ImageNet数据集训练好的WAE,去做其他数据集的时候,不需要重新训练WAE,也可以得到一个比较好的结果了,比如文章的CACD。

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub, or mute the thread.