Google Inceptionism:通过class获取图像
Google Inceptionism: obtain images by class
在著名的 Google Inceptionism 文章中,
http://googleresearch.blogspot.jp/2015/06/inceptionism-going-deeper-into-neural.html
他们显示为每个 class 获得的图像,例如香蕉或蚂蚁。我想对其他数据集做同样的事情。
文章确实描述了它是如何获得的,但我觉得解释不够。
有相关代码
https://github.com/google/deepdream/blob/master/dream.ipynb
但它所做的是产生一个随机的梦幻图像,而不是指定一个class并学习它在网络中的样子,如上文所示。
谁能给出更具体的概述,或者code/tutorial 如何为特定 class 生成图像? (最好假设caffe框架)
我认为 this code 是重现 Google 团队发布的图像的良好起点。程序看起来很清楚:
- 从纯噪声图像和 class(比如 "cat")
开始
- 执行正向传递并反向传播错误 wrt 强加的 class 标签
- 使用在数据层计算的梯度更新初始图像
其中涉及一些技巧,可以在 original paper 中找到。
似乎主要区别在于 Google 人们试图获得更多 "realistic" 图片:
By itself, that doesn’t work very well, but it does if we impose a prior constraint that the image should have similar statistics to natural images, such as neighboring pixels needing to be correlated.
在著名的 Google Inceptionism 文章中, http://googleresearch.blogspot.jp/2015/06/inceptionism-going-deeper-into-neural.html 他们显示为每个 class 获得的图像,例如香蕉或蚂蚁。我想对其他数据集做同样的事情。
文章确实描述了它是如何获得的,但我觉得解释不够。
有相关代码 https://github.com/google/deepdream/blob/master/dream.ipynb
但它所做的是产生一个随机的梦幻图像,而不是指定一个class并学习它在网络中的样子,如上文所示。
谁能给出更具体的概述,或者code/tutorial 如何为特定 class 生成图像? (最好假设caffe框架)
我认为 this code 是重现 Google 团队发布的图像的良好起点。程序看起来很清楚:
- 从纯噪声图像和 class(比如 "cat") 开始
- 执行正向传递并反向传播错误 wrt 强加的 class 标签
- 使用在数据层计算的梯度更新初始图像
其中涉及一些技巧,可以在 original paper 中找到。
似乎主要区别在于 Google 人们试图获得更多 "realistic" 图片:
By itself, that doesn’t work very well, but it does if we impose a prior constraint that the image should have similar statistics to natural images, such as neighboring pixels needing to be correlated.