JointBoost+CRF+GraphCut做手绘草图的分割

  研究生做的稍微有点水平的就这两个项目了:一个是利用SVM做手绘草图的分类,另一个是利用JointBoost+CRF做手绘草图的分割。总得得出的经验是做研究的方法就是将别人大神的代码看懂然后改成适合自己项目的代码,而且要至少找一个适合的同伴一起做项目这样才会有思维的碰撞。上几篇随笔已经记录了SVM的数学推导,然后看了点点LIBSVM的源代码,因为最近寒假也没怎么看书(堕落),所以也打算暂时搁置一下LIBSVM的记录(也比较难~)。转而这次记录的是另一个项目就是利用JointBoost+CRF做手绘草图的分割。

 手绘草图的分割就是语义上的分割,如下面两个图:

JointBoost+CRF+GraphCut做手绘草图的分割_第1张图片  JointBoost+CRF+GraphCut做手绘草图的分割_第2张图片

左图是未标记的"手绘草图",右图是人工标记了的手绘草图,我们想训练一个分类模型能够对手绘草图上的样点进行语义分类,即判断某点所属类别(头、脚、身体或者尾巴)。而我们采用的方法就是Conditional Random Field 称为条件随机场。虽然名字高大上,但是思想还是很简单的,而这个方法的实现是来自一篇论文,见参考文献1。借用该论文的一段话,来将手绘草图分割的任务具体化:

Many tasks in computer vision involve assigning a label (such as disparity) to every pixel. A common constraint is that the labels should vary smoothly almost everywhere while preserving sharp discontinuities that may exist, e.g., at object boundaries. These tasks are naturally stated in terms of energy minimization.

上面英文翻译就是:在机器视觉中的许多任务都要涉及到为每一块像素加标签。一个常规的约束就是所加的标签要尽可能的平滑,然而在物体边界上所加标签的要保留较强的不连续性,然后这样的任务(要求)通常可以用能量函数的最小化表示。我的理解就是如上右图,我们既需要保持同一标签的样点的内部不会突然出现其他标签(smoothly),也要保持在不同标签边界处的标签混淆更少(sharp discontinuities)。上面这段话总结来说就是要解决两个问题:这个能量函数怎么设计,和能量函数怎么最小化。

 今天太晚了,明天继续写~~

 

 

你可能感兴趣的:(JointBoost+CRF+GraphCut做手绘草图的分割)