论文学习——《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 ...
随机推荐
- WPFの触发器详解
例子1 简单触发器Triggers——满足简答的条件,触发 <Window x:Class="Styles.SimpleTriggers" xmlns="http: ...
- windows自动关机(任务计划程序 + exe文件)
需求:windows系统自动关机 的需求: 相关工具:win10系统中,使用windows自带的任务计划程序 和 windows自带的关机 exe文件 完成此需求 exe文件位置:C:\Windows ...
- Linux 核心编译与管理
一般情况下,不需要重新编译核心,除非以下特有的用途 [root@localhost ~]# wget ftp://ftp.twaren.net/pub/Unix/Kernel/linux/kernel ...
- OpenCV常用基本处理函数(7)图像金字塔和直方图
高斯金字塔 高斯金字塔的顶部是通过将底部图像中的连续的行和列去除得到的.顶部图像中的每个像素值等于下一层图像中 5 个像素的高斯加权平均值. 这样操作一次一个 MxN 的图像就变成了一个 M/2xN/ ...
- cookieUtils.js
cookieUtils.js export default { data () { return { } }, created () { }, methods: { arrayContain (arr ...
- python用户名密码限定次数登录
""" 1. 用户输入帐号密码进行登陆 2. 用户信息保存在文件内 3. 用户密码输入错误三次后锁定用户"""" test.txt ...
- String path = request.getContextPath();报错
String path = request.getContextPath();报错 1. 右击该项目 - Build Path - Configure Build Path , 在 Libraries ...
- 阿里巴巴下一代云分析型数据库AnalyticDB入选Forrester Wave™ 云数仓评估报告 解读
前言近期, 全球权威IT咨询机构Forrester发布"The Forrester WaveTM: CloudData Warehouse Q4 2018"研究报告,阿里巴巴分析型 ...
- Qt 无法连接mysql数据库的问题
错误信息: QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL ...
- 在树莓派3B上搭建LAMP
一.安装apache2 sudo apt-get install apache2 在电脑上输入树莓派的网址会有如下显示 二.安装Mysql sudo apt-get install mysql-ser ...