论文学习——《Learning to Compose with Professional Photographs on the Web》 (ACM MM 2017)
总结
1.这篇论文的思路基于一个简单的假设:专业摄影师拍出来的图片一般具备比较好的构图,而如果从他们的图片中随机抠出一块,那抠出的图片大概率就毁了。也就是说,原图在构图方面的分数应该高于抠出来的图片。而这种比较的方式,可以很方便地用 Siamese Network 和 hinge loss 实现,如下图所示。
2.另外,这篇论文另一个讨人喜欢的地方在于,它几乎不需要标注数据,只需要在网上爬取很多专业图片,再随机抠图就可以快速构造大量训练样本,因此成本近乎为零,即使精度不高也可以接受,其中作者将数据保存在了dataset.pkl里。
这篇论文的训练方式只能让网络知道哪种图片的构图好,而无法自动从原图中抠出构图好的图块,因此,在抠图方面,采用的是sliding window search strategy滑动窗口策略,并根据网络输出的分数决定哪个窗口最好。
细节
1.dataset.pkl是数据集信息,来自Flickr website,它是一个长度为294644的列表,包含了21046张原图的14个裁剪图,其中scale为0.5、0.6的border crops各4个,scale为0.7、0.8的square crops各3个,作者公开的代码里,目的就是从这14个裁剪图中,选出裁剪效果最好的一个,dataset.pkl数据结构如下面两个图所示;
2.VFN(View Finding Network)结构
VFN的网络结构如下图所示,VFN的卷积层采用了AlexNet,然后,将卷积层的输出送入两个全连接层,然后是一个排列层(ranking layer)。该排列层是无参数的,且仅用于评估图像对的hinge loss。在训练过程中,模型更新其参数,使得Φ(·)最小化式(2)中的总排名损失。一旦网络被训练,我们抛弃了排名层,简单地使用Φ(·)将给定的图像I映射到一个美学评分,这个评分将I与其他视觉上相似的视图区分开来。在最后一个卷积层的顶部,附加了一个空间金字塔池(SPP)层。并且该文在VFN中使用固定大小的输入图像(例如,输入图像/patch首先被调整为227)。简单地应用SPP技术来实现对卷积激活特性的数据聚合。
该文选择了3*3、5*5、7*7的池化尺寸池,且步幅stride要小于池化层尺寸。多分辨率池过滤器以不同的尺度保留组合信息。另外,该文通过实证发现,如果没有SPP,模型的特征空间越大,越容易出现过拟合。该文在实验中同时使用了最大池和平均池。
池化层特征是12,544维,然后送入第一个全连接层;fc1后面是ReLU,其输出维度为1,000。由于排序问题不像物体分类那么复杂,所以我们选择相对较小的特征维数;此外,卷积激活特征可以在压缩时不造成较大的信息丢失,而宽的全连接层往往会出现过拟合。fc2只有一个神经元,只输出最终的排名分数。
为了训练网络,使用了带动量momentum的随机梯度下降算法。从在ImageNet ILSVRC2012数据集上预先训练的AlexNet开始,随机初始化全连接层。动量设置为0.9,学习速率从0.01开始,经过10,000次迭代后降低到0.002,每个小批量包含100个图像对。总共运行15,000次迭代用于训练,每1,000次迭代评估验证集。选择验证误差最小的模型进行测试。为了对抗过拟合,训练数据通过随机水平翻转以及亮度和对比度的轻微随机扰动来增强。使用TensorFlow框架来实现和训练我们的模型。
3.评价标准
(1)average intersection-over-union (IoU)
- def overlap_ratio(x1, y1, w1, h1, x2, y2, w2, h2):
- intersection = max(0, min(x1 + w1, x2 + w2) - max(x1, x2)) * max(0, min(y1 + h1, y2 + h2) - max(y1, y2))
- union = (w1 * h1) + (w2 * h2) - intersection
- return float(intersection) / float(union)
(2)average boundary displacement
- boundary_displacement = (abs(best_x - x) + abs(best_x + best_w - x - w))/float(width) + (abs(best_y - y) + abs(best_y + best_h - y - h))/float(height)
参考博客:
“Learning to Compose with Professional Photographs on the Web" 论文解读(一)(附代码与详细注释)
“Learning to Compose with Professional Photographs on the Web”论文解读(二)(附代码与详细注释)
论文学习——《Learning to Compose with Professional Photographs on the Web》 (ACM MM 2017)的更多相关文章
- 排序学习(learning to rank)中的ranknet pytorch简单实现
一.理论部分 理论部分网上有许多,自己也简单的整理了一份,这几天会贴在这里,先把代码贴出,后续会优化一些写法,这里将训练数据写成dataset,dataloader样式. 排序学习所需的训练样本格式如 ...
- Faster RCNN论文学习
Faster R-CNN在Fast R-CNN的基础上的改进就是不再使用选择性搜索方法来提取框,效率慢,而是使用RPN网络来取代选择性搜索方法,不仅提高了速度,精确度也更高了 Faster R-CNN ...
- 《Explaining and harnessing adversarial examples》 论文学习报告
<Explaining and harnessing adversarial examples> 论文学习报告 组员:裴建新 赖妍菱 周子玉 2020-03-27 1 背景 Sz ...
- 论文学习笔记 - 高光谱 和 LiDAR 融合分类合集
A³CLNN: Spatial, Spectral and Multiscale Attention ConvLSTM Neural Network for Multisource Remote Se ...
- Apache Calcite 论文学习笔记
特别声明:本文来源于掘金,"预留"发表的[Apache Calcite 论文学习笔记](https://juejin.im/post/5d2ed6a96fb9a07eea32a6f ...
- Docker技术入门与实战 第二版-学习笔记-9-Docker Compose 项目-3-Django项目实例
使用 Django 我们现在将使用 Compose 配置并运行一个 Django/PostgreSQL 应用.在此之前,先确保 Compose 已经安装. 1.通过编辑 Dockerfile文件来指定 ...
- Node学习笔记(三):基于socket.io web版你画我猜(一)
经过惨淡的面试,也是知道了自己的不足,刚好最近在学习node,心中便有了做一个web版的你画我猜的想法 首先说下思路,在做准备工作的时候,有两个大概的思路: 1.规定一块div,捕捉鼠标事件,动态生成 ...
- Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目
Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目 Spring Tool Suite 是一个带有全套的Spring相关支持功能的Eclipse插件包. ...
- Java EE 学习(9):IDEA + maven + spring 搭建 web(5)- 博客文章管理
转载:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生) . 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 web(1) Jav ...
随机推荐
- H2数据库做单测数据库时踩到的坑
H2数据库用来做单测数据库,可以自定义初始化数据,不用担心数据库内容更改造成单测跑不过问题,不过H2数据库跟实际使用的Mysql还是有一定区别. 1. H2数据库不支持Mysql的批量更新功能,支持批 ...
- python 读 xlsx
前言 xlsx写方法参考此连接:http://www.cnblogs.com/whf191/p/5482485.html xlrd是用来读的,使用前需安装 pip install xlrd 例子 fn ...
- 十二、结构模式之门面(Facade)模式
什么是门面模式 门面模式(也有翻译为外观模式)是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面进行.其为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子 ...
- maven打包出现 Error assembling JAR: java.lang.reflect.InvocationTargetException
如果项目的包名使用中文,会反射找不到,idea设置Editor->File Encodings 改utf-8试试
- MAS(转)
1.为什么要使用微服务? 要说为什么要使用微服务,我们要先说下传统的企业架构模式-垂直架构/单块架构模式,简单点说:我们一般将系统分为三层架构,但是这是逻辑上的三层,而非物理上的三层,这就意味着经过编 ...
- openwrt增加密码及ssh的方法
openwrt增加密码及ssh的方法 1.进入openwrt系统源码的顶层目录,然后执行 make menuconfig命令进入 Network--> SSH--> <*>o ...
- Steup factory 面板介绍
2 安装软件信息 注册码 过期时间等一些设置 3 4 5
- apue 第10章 信号signal
每种信号都有名字,都是以SIG开头 信号机制最简单的接口是signal函数 #include <signal.h> typedef void (*sighandler_t)(int); s ...
- TIM4定时器功能设置
一.初始化过程 /*********************************************************************** 利用TIM4定时器作为计时,每个0.1 ...
- tomcat的stratup小黑框名字修改
Tomcat的bin目录下:catalina.out文件, TITLE就是Tomcat startup窗口的名称,282行默认是:Tomcat.这里建议改成“服务名+端口号”的方式,看起来一目了然.因 ...