【个人记录 | UNet | 整理ing】

【代码】

麋鹿

读后感:

V1讲框架流程、V2V3狠真实,日常各种报错|预处理|size|格式|维度;“又出错了 狠棒狠棒 T T”

看V1脑袋有个框架,后面两个有较多设计预处理等报错.注意num_classes和weight_path

V1(视频教程)、源码:github、gitee

【个人记录】

data:原jpg=>png——.replace('png','jpg')

utils:预处理——先 max h&w,统一之后再resize

nets:①P2的04:12提到预处理的一个点:用reflect代替全0填充,保证全图都有特征,加强提取特征的能力;②加padding是为了保持形状不变,dim:NCHW=0123:

        Downsample里:nn.conv2d(c,c,3[3x3卷积],2[stride],1[填充为1],paddingmode=reflect);

        Upsample里:interpolate插值法、torch.cat((out,feature),dim=1)

train:思路还是一样,先cude再weightpath实例化;P3路径、图片拼接显示的代码

test:实例化网络、加载权重.input-归一化-升维-送网络-输出

评论区有一些报错及答疑,以及围绕resize的一些讨论

V2重新梳理UNet(视频)、源码github

【个人记录】

官方是有labelme生成mask脚本的

make_mask_data:先取出所有的jason文件temp_data,然后遍历拿到jason文件

        jason坐标显示、Image.new、.polygon画多边形、tuple元组转换、如何显示mask(22min)

get_evaluation:指标MIOU、keep_image_size_open

net.eval()容易忘记[test.py]:唤醒norm和dropout

神经网络输出也是单通道的,所以要有个处理,改成三通道输出

cv2.waikey、torch.permute、.astype(int)

分割的过程/可视化-不同数值赋值、rgb问题、维度问题、尺寸size不一样问题、输出通道问题; 

V3:UNet完结篇

调用One-hot(只在一个通道上为1else均为0),以tensor形式:transform后面再.long()

set(img.reshape(-1)展平.tolist())

以2类别为例:先make_mask生成,再vis_label可视化(可以只打印label,=N+1背景)

function:input->transform预处理-加维度加批次->.eval()/argmax(1)得256/squeeze()、uns...->permute.detach.numpy->result

cv.imshow('out',out*255.0)这里*与显示都要注意位置

评价指标MIOU/Recall/Precision、github代码、CSDN、

混淆矩阵:from sklearn.metrics import confusion_matrix ,miou的计算大概思路↓【个人记录 | UNet | 整理ing】_第1张图片【个人记录 | UNet | 整理ing】_第2张图片以0-0为例:【个人记录 | UNet | 整理ing】_第3张图片

                                                                                                              

Bubbliiiing

Pytorch搭建自己的语义分割平台(视频教程)

源码地址、博客地址(相关连接)

常见问题记录

train.py 

input_shape = [512, 512]
训练分为两个阶段,分别是冻结阶段和解冻阶段。设置冻结阶段是为了满足机器性能不足的同学的训练需求。
由于resnet50中有BatchNormalization层,当主干为resnet50的时候batch_size不可为1

【个人记录 | UNet | 整理ing】_第4张图片

【个人记录 | UNet | 整理ing】_第5张图片

【论文】

基于U-Net的新生儿脑组织图像分割:对UNet和transformer介绍通俗易懂,适合入门

UNet:

【个人记录 | UNet | 整理ing】_第6张图片【个人记录 | UNet | 整理ing】_第7张图片

 注意力机制:

你可能感兴趣的:(实验,医学影像,深度学习,计算机视觉,人工智能)