Unet++ 实战

论文地址: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, 后期持续优化,估计优化的空间还比较大。

猜你喜欢

转载自blog.csdn.net/Guo_Python/article/details/112789538