DRIVE数据集介绍

1.1st_manual:手工标记的标签(2st可以暂时不管,与1st只有细微差别)

2.images:需要识别的图片

3.mask:需要识别的区域(1为感兴趣的区域)

图像处理

读取1st_manual中的图像,前景的像素值为1,背景像素值为0(归一化)

读取mask中的文件,感兴趣的区域像素变为0,这样在后面计算损失的时候可以直接忽略掉像素为255的

最后使得前景区域像素为1,背景像素为0,不感兴趣的区域像素255

Dice similarity coefficient

用于度量两个集合的相似性

UNet训练 - 图1

X, Y数值都在0-1之间

举例:

UNet训练 - 图2

UNet训练 - 图3

计算每个类别的GT后,将图中需要忽略的区域的像素设置为0,再把标签都转化为one-hot编码

UNet训练 - 图4

转为one-hot之后,再把之前255(需要忽略的地方)的地方重新再设为255

接下来在进行loss计算,遍历每一个类别的预测值,计算dice(上面公式那样的计算),相加后除以通道数(类别数)

UNet

参考论文

U-Net: Convolutional Networks for Biomedical

Image Segmentation

Olaf Ronneberger, Philipp Fischer, and Thomas Brox

Computer Science Department and BIOSS Centre for Biological Signalling Studies,

University of Freiburg, Germany

结构

UNet训练 - 图5

训练

实验1

数据集:DRIVE数据集

lr = 0~1e4(warmup)

batch_size= 4

epoch=200

loss:cross_entropy

实验结果

UNet训练 - 图6

注意:train的效果没有val的好,原因可能是:1.数据集太小 2.train val使用的预处理方式不同

改进后:(使用了同样的预处理方法)

UNet训练 - 图7UNet训练 - 图8

UNet训练 - 图9

target

UNet训练 - 图10

predict

UNet训练 - 图11

注意一个问题:

DRIVE是医学任务,并不能说是完全的语义,所以想跑语义的话就不要跑DRIVE

U2Net

参考论文

U2-Net: Going Deeper with Nested U-Structure for Salient Object Detection

Xuebin Qin, Zichen Zhang, Chenyang Huang, Masood Dehghan, Osmar R. Zaiane and Martin Jagersand

University of Alberta, Canada

结构

训练

实验1:U2Net

数据集:DUTS数据集

lr = 0~1e4(warmup)

batch_size= 16

epoch=360

loss:binary_cross_entropy_with_logits

实验结果

UNet训练 - 图12UNet训练 - 图13UNet训练 - 图14

UNet训练 - 图15

实验2:U2Net_lite

数据集:DUTS数据集

lr = 0~1e4(warmup)

batch_size= 16

epoch=360

loss:binary_cross_entropy_with_logits

binary_cross_entropy_with_logits等价于BCELoss,是Binary CrossEntropyLoss的缩写,BCELoss CrossEntropyLoss的一个特例,只用于二分类问题,而CrossEntropyLoss可以用于二分类,也可以用于多分类。

实验结果

UNet训练 - 图16UNet训练 - 图17UNet训练 - 图18

MAE平均绝对误差

F1精确率和召回率的调和均值

UNet训练 - 图19