论文地址:https://arxiv.org/pdf/1807.10165.pdf
代码地址:https://github.com/MrGiovanni/UNetPlusPlus
知乎上作者的讲解:https://zhuanlan.zhihu.com/p/44958351
人体解析数据集:http://sysu-hcp.net/lip/overview.php
1. 网络结构
在看Unet++的网络结构之前,先看看Unet的网络结构。Unet的网络结构如下:是一个编码、解码的过程,先下采样,然后上采样。
与Unet相比,Unet++的网络结构增加了密集的跳层链接,如图所示:
与Unet网络结构相比,Unet++有两点不同,如上图中的(a)所示:
(1)增加了“绿色”部分的连接。
(2)增加了“蓝色”部分的链接。
作者在论文中的试验中证明,这种密集的跳层连接能使网络学到更好的特征,涨点明显。
2. Deep supervision
在这里我就把Deep supervision翻译成深度监督吧!深度监督:即Loss函数不仅要监督最后的结果,同时监督中间分支的结果。如上图(a)中红色的标注,是不是有点像最初googlenet的监督方式?^_^
这种监督方式有两点好处:
(1) 这种方式能使最终的分割结果更好,作者论文中的实验可以证明;
(2) 对于复杂度不同的任务,剪枝更加方便。例如:对于比较简单的分割任务,训练完模型后,通过剪枝之后,只留下UNet++L1(如上图c所示),对于很复杂的的分割任务,可以采用UNet++L4。
3. 实验
注:推理时间是10K张图片所需要的前想传播推理时间。
4. 我在公开数据上训练测试的结果
点评:(1)我对比了UNet和UNet++,UNet++的效果确实要好不少;
(2)我目前在做人体解析(即人体各个部位的分割),现在只跑了一个baseline, 后期持续优化,估计优化的空间还比较大。