CNN 算法使用基于密度的估计算法来保留空间信息以便在局部和整体进行计数,同时,CNN 也可以准确地提取全局和局部特征。影响人群计数的因素主要包括:遮挡物、密度差异、透视扭曲和相机角度。
Kesari 讨论了三种商业案例:大型商场的人群数量、从照片中统计南极企鹅的数量以及显微镜图像中的生物细胞数量。企鹅数量统计的数据来源于超过 100 个摄像头在 16 个不同的场景中历经一年时间拍摄的图像。研究人员使用了开源工具Crowd-sourced annotations对图像中的企鹅进行了标注。
InfoQ 邀请了 Kesari 对他大会期间的讲话进行了采访,深入地讨论了深度学习技术如何被用于密集人群计数的案例。
InfoQ:您能谈一下什么是深度学习,以及它与传统机器学习的区别吗?
Ganes Kesari:机器学习(ML)的目的是让程序学习如何去解决问题,而不是简单地执行预定的逻辑。通过这种学习,程序可以在未见过的场景下获得预期的输出。例如,通过对过去六个月股票数据的分析可以预测明天的股价。或者判断下个月是否会有大的波动。
当深度学习被归入机器学习方法的大家庭中时,它与传统机器学习方法是有很大区别的。拿一个人脸检测系统举例。使用传统的机器学习方法,我们可以识别并提取关键特征(眼镜、鼻子和下巴等)。然后让软件只对这些关键部位的特征进行夸身份的匹配。
但是在深度学习中,我们向模型展示数百张只有身份信息标注的人脸图像,然后让机器明白真正独一无二的点是什么(面颊的曲率或者其他人类无法注意到的细微的部分)。机器会决定哪些属性对于人脸识别是足够重要的(这一过程也称为特征检测),并且整个数据流经模型的过程会迭代成百数千次(称为 Epoch)。
深度学习技术使得机器学习在过去的十年大规模的席卷全球,尤其是在图像、视频和音频领域有效地解决了大量的问题。它被用于结构化的数据处理,并且已经与我们的生活息息相关,例如 Facebook 的好友推荐以及很多新闻推送程序的文章推荐系统。
InfoQ:您能简要介绍一下人群计数案例以及你们在该方面使用的算法和技术吗?
Kesari:人群计数可以被广泛地用于多种实际场景,例如统计人群、动物、物体或其他实体的数量。我们展示了其中的三种案例:
统计人数:人群计数在零售行业有巨大的潜力,它可以有效地分析零售店中的顾客数量、预测销售情况估计营销活动的成功。
统计企鹅数量:南极的研究人员正在研究全球气候变暖以及人类活动对企鹅数量的影响。得益于人群计数算法,数百万张通过隐藏式相机捕捉到的图像都可以用于统计数量。
统计生物细胞数量:药物特性描述是新药研发过程中的关键步骤,科学家需要通过对显微图像分析得到不同类型细胞的数量。这一痛苦地手动过程可以被自动化的计数算法所代替。
在人群计数方面有一些已发表的工作。传统算法使用基于检测的方法,例如,通过扫描图像来识别人群或他们的头。通过在所有匹配的目标周围绘制边界框来预测总数。
上述的这类方法会被很多不利因素影响:1)被遮挡或者背对摄像头的人数无法被统计,2)透视扭曲或前后位置的人脸大小不一致,3)在同一幅图中,人群密度的分布不均匀(例如有些区域人群密度异常地高),4)针对不同摄像机角度的模型需要独立地训练。
基于密度的算法通过将不同大小的人近似为不同的簇,可以解决上述的这些挑战。已发表的论文中的实验证明了这种算法的优越性,这些实验使用了一些主流框架,例如级联 CNN、多列 CNN 等。
InfoQ:您能简述一下级联卷积神经网络(Cascade CNN)为何有助于解决人群计数这类问题的吗?
Kesari:我们使用了级联 CNN 模型解决上述的三种案例中遇到的多种不利因素。级联 CNN 结构的两个关键阶段是:1)第一阶段也称为“高层级先验阶段”,这一阶段在大范围内给出整张图像人数的粗略估计。2)第二阶段进行密度估计,同时使用前一阶段的结果生成更加细粒度的密度图。(如下图所示)
这些密度图可以帮助预测图像中目标的数量。级联 CNN 的结构可以无差别地用于统计人、动物甚至是具有自定义外形的实体的数量。更多的技术细节可以参阅论文原文:https://arxiv.org/pdf/1707.09605.pdf
InfoQ:您能更详细地讨论一下企鹅跟踪案例中的技术细节吗?你们都遇到了什么样的挑战以及其解决方案?
Kesari:当然。在这个案例中,我们需要对不同时间点拍摄的企鹅图像数量进行统计。这是一项由牛津大学提出的项目,Penguin watch 网站发布了这个项目的众包以获取数据的标注。世界各地的志愿者们对这个数千张图像进行了标注以帮助我们的模型学习企鹅看起来究竟是什么样的。现在,这个项目的挑战是模型需要对不同曝光率下的企鹅照片进行识别,一些图片中企鹅是高密度聚集的,一些图片中企鹅是很难被发现的。
Gramener 与微软AI地球进行了合作来解决这个挑战。我们使用了Pytorch来建立级联 CNN 框架。在选取 Adam 优化器的情况下,我们使用了很低的学习率和动量。我们使用均值绝对误差(MAE)和均方误差(MSE)。我们在配备了 V100 的 NC6 V3 上训练了 3-4 天共 200 个 epoch。最终模型的 MAE 约等于 10,我们将模型配置为了微软地球 AI 的一个 API。
InfoQ:在您的报告中提到了生物细胞数量案例。这和其他 AI 模型有什么不同吗?
Kesari:我们为制药客户提供了生物细胞计数问题的解决方案。虽然程序的技术部分使用了与企鹅类似的模型结构,但是在一些细节方面有几点不同。首先,数据量为数百级,这与人或企鹅可用的数万或数十万级的标记数据不同。大多数标注工作必须从头开始,以使机器可以理解。
另一方面,细胞的形状使得这一问题更难处理。任何看起来接近圆形的东西都有可能被认为是相同的细胞类型。尽管这对人类来说是一种主观的意见,对机器而言这是非常具有挑战性的。并且,显微图像具有无法计数的无关部分,因此我们必须进行异常值检测以排除这些区域。
为了使这个方法可行,模型的结果必须经过审核并可以通过人为纠正。一个很大的挑战是找到从密度图统计的每个形状的想坐标(x,y)。我们使用轮廓检测方法来找到模型统计的细胞,然后将它们显示在 UI 上以供进一步手动纠错。
InfoQ:关于您项目中的更多细节,读者们应该如何在自己的开发环境中尝试呢?
Kesari:我们和微软 AI 地球的大部分工作都使用了开放 API 和笔记的形式公开,以方便 NGO 和研究人员直接重用模型。关于企鹅计数的项目还没有产品化,但是在物种分类方面有其他类似的深度学习工作。
我们最近刚完成了一个开源数据科学平台——Gramex。这个可视化分析平台包括数据处理库、计算组件库、可视化图表库,它可以帮助使用者快速高效建立数据应用。
查看英文链接:Convolutional Neural Network Deep Learning Techniques for Crowd Counting
评论