DRIVE数据集介绍
1.1st_manual:手工标记的标签(2st可以暂时不管,与1st只有细微差别)
2.images:需要识别的图片
3.mask:需要识别的区域(1为感兴趣的区域)
图像处理
读取1st_manual中的图像,前景的像素值为1,背景像素值为0(归一化)
读取mask中的文件,感兴趣的区域像素变为0,这样在后面计算损失的时候可以直接忽略掉像素为255的
最后使得前景区域像素为1,背景像素为0,不感兴趣的区域像素255
Dice similarity coefficient
用于度量两个集合的相似性
X, Y数值都在0-1之间
举例:
计算每个类别的GT后,将图中需要忽略的区域的像素设置为0,再把标签都转化为one-hot编码
转为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
结构
训练
实验1
数据集:DRIVE数据集
lr = 0~1e4(warmup)
batch_size= 4
epoch=200
loss:cross_entropy
实验结果
注意:train的效果没有val的好,原因可能是:1.数据集太小 2.train val使用的预处理方式不同
改进后:(使用了同样的预处理方法)
target
predict
注意一个问题:
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
实验结果
实验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可以用于二分类,也可以用于多分类。
实验结果
MAE平均绝对误差
F1精确率和召回率的调和均值