本文是课程大作业《某城市老城区生活指数研究》的一部分,主要是为课程论文做准备写的Note,记录一下自己写这个作业的思路。
最开始做了一个很简单的分工,按照交通、餐饮、街景和旅游四个角度去做。从中期到期末,被老师问到最多的问题就是:分成这四部分的依据是什么。事实上我们这样区分的依据就只是拍脑袋,选题本身的目的就不明确(或者说目的就是写完作业),所以最后也没办法好好回答这个问题,这个问题也就成为了这个作业水平的天花板。
(其实十分懒得更新这个日志,毕竟已经考完了,报告也交了…
过程
我自己写的部分主要是通过街景图片的内容识别结果,对街景进行打分。另外三部分的主力军是SheepSu同学,比较创新的部分是对路网进行了处理,做出了一个通达度的评分。
这一部分使用的图片已经用内容识别的方法处理过了,所以这一部分的起点是已经识别过内容的数据。图像内容识别的具体方法在数据中没有说明,不过我猜测是Farabet的那篇文章中的方法,具体可以参考: Yann LeCun's Publications。
我的工作主要是实现了以下步骤(至于为什么这样做…emmm…说实话大部分没写原因的地方就是拍脑袋啦hhh):
预处理:首先对街景图片进行内容识别,内容识别得到的街景图片分为12个维度,如图{fig:SVOrigin}所示。由于这些维度之间有一定的关联性,导致图片的特征不够显著,影响后续的处理效果。因此需要对内容识别的数据进行预处理,将其内容由12个维度归纳为5个维度,即:自然(天空、植物)、不可移动人类要素(建筑、栏杆、路标)、流动要素(车流、人流)、可通过要素(道路)和其他(噪声点或不感兴趣的内容),如图{fig:SVdataSample}所示。图{SVSample}给出了进行预处理前后的街景图片聚类效果图,可以看到进行预处理后,街景图片的聚类数随着图片数量的增加是收敛的,而归纳前则是发散的。
赋值:由于一条街道上往往有超过1张的街景图片,因此在整合时,用街道上所有图片的5个维度的均值和方差,来表征街道的特征。即,假设一条街道上有N张街景图片,那么原始数据为5×N维,整合到街道上的数据为5×2维。
聚类:将街景图片赋值给街道后,用阶梯聚类法对要素进行学习分析,估计出聚类的个数。把这个聚类个数作为聚类数,利用Kmeans方法进行最终的聚类。这样处理是为了避免人工估计Kmeans的聚类数,干扰聚类的结果。
- 激活:完成聚类后,需要对每一个“类”所对应的值进行估计。将问卷调查的结果,整合成与预处理后的街景图片相同格式的数据。整合后的调查问卷结果如图{fig:Survey}所示。激活需要构造插值函数。本文认为,插值函数必须满足:(a)在插值阈上连续;(b)在峰值处导数为0;(c)在距离峰值较远处迅速衰减,以避免插值结果对调研结果过于敏感。图{fig:Intercept}所示的双抛物线函数,是能够满足上述条件的一个比较简单的函数。
通过以上步骤得到的北京市老城区街景指数分布见图{fig:SVresult}。街景指数显示较为宜居的区域分布在二环靠外围的区域,整体呈现外围较好,中心较差;东南较好,西北较差的趋势。
总结
最后回看这个作业,感觉做得有点水了,有种强行拼凑结果的感觉。其实其中的任何一部分单独拿出来深入做,都能做出比较漂亮的结果,强行拼到一起连自己都不知道做了什么(跪
结果
推荐一下极海GeoHey这个工具。注册之后可以免费使用,并且可以方便地进行共享。会一点点编程的话,极海+Python基本上就可以替代ArcGis了,对于对ArcGis的一些高级功能依赖度不是很高的同学们还是很有用的。
我们的结果也共享在了极海上:GeoHey:某城市老城区街景指数评估
最后提交的报告共享在Overleaf上:OverLeaf:某城市老城区街景指数评估报告