(ACCV 2014) Hand segmentation with structured convolutional learning
这篇文章虽然有Hand的字眼,但是主要讨论的内容不局限于hand的方向。
本文概要:数据对于现代算法来说有时候要高于算法本身,尤其是大面积推广深度学习以后,因此数据的多样性对模型最终精度和稳定性提供了一定的保障。但是庞大的数据标定却是一个非常痛苦的事情。尤其是网络越大,需要的数据就越多,动辄几十上百万,对于classification分分类估计还可以标一标,但是对于segmentation来说,要像素级别的标定上百万张图片,那就是不可能的。
但是对于手势识别这样的变化非常大的任务来说,要想handle尽可能多的情况,样本会需要的更多。因此如何解决数据标定是一个难题。
目前的解决方法是:使用合成数据,从微软的Human Pose那篇文章展现了合成数据的强大优势以来,合成数据的确是一个不错的选择,使用3D模型,天然精确标定,然后仿照现实中的情况添加一些噪声,然后就可以得到大量的标定数据。
但是问题又来了,虽然有了大量数据,和现实的数据还是出入很大,并且对模型的人为设定变换很难覆盖自然环境下的变化情况。因此兜了一个大圈子,最后引入本文的核心贡献之一:Firstly, contextual information is extracted from local context in unlabelled samples through a learned trained on synthetic labelled examples. (通过合成数据训练的模型提取context信息从而完成自动标定unlabelled样本)。
但是如果一个分类器能够足够好的分辨真实样本,那目的不就达到了吗?为何还需要接下来的步骤?所以作者认为合成数据能给出一个不错的效果,但是还需要通过另一个方式来进行更精确的完善,因此就用到了
auto-context的方法。这个方法就是使用迭代的思想,将原始的context信息和每次迭代都更新的possibility map作为输入得到越来越准确的分割图。那么会有人问?既然可以这样,直接在测试的时候用这个方法就好了啊,作者则认为这是另一个重要贡献:The main contribution of this paper is the way in which structural information is treated in the learning process. 在训练的时候就用这样的方法处理了未标注的数据,那么在进行之后的训练时可以直接使用这些数据。
下面是本文的示意图:一个direct learner 和 context learner
一些额外的观点:
- In practice, this places all of the burden on the classifier, which needs to learn a highly complex prediction model from a limited amount of training data, most frequently leading to poor performance. An elegant alternative is to apply multi-scale approaches.在实际中,的确直接将丰富的context信息交给分类器,然后期待它能自然学到所有信息这是不太现实的,这需要一个非常复杂的模型,而现在对这样的设计思路也是未知的。因此最好的办法是帮助分类器,尽可能给它一些提炼好的可靠的信息。作者认为可以用多尺度的方案。
对于本文,我个人觉得
- 合成数据学到的分类器很大程度已经具备了分类效果,对于常规情况的实际样本进行处理以后并且将这些实际样本作为新样本来训练,我觉得会有一定的效果,但是对于一些复杂情况或者未知情况,如果合成数据训练的模型的效果不好,反而起到不好的作用,因此我觉得这个方法只是起到了一些修修补补的作用,如文中效果图所示,更像是起到了平滑,剔除独立错分区域的作用。