关于U-Net相关论文模型知识基础

写在前面:

1在tensorflow中:如果你想要输出等于输入,padding="SAME"即可,如果你想要输出别的尺寸的特征图,使用padding=VALID',conv2d会自动计算输出特征图大小。

  

通过卷积和池化等技术可以将图像进行降维,因此,一些研究人员也想办法恢复原分辨率大小的图像。

1、Upsampling(上采样)

 2、上池化

两者的区别在于UnSampling阶段没有使用MaxPooling时的位置信息,而是直接将内容复制来扩充Feature Map,UnPooling的过程,特点是在Maxpooling的时候保留最大值的位置信息,之后在unPooling阶段使用该信息扩充Feature Map,除最大值位置以外,其余补0。

 3、反卷积

反卷积的具体操作
原图输入尺寸为【1,3,3,3】对应【batch_size,channels,width,height】

反卷积tconv = nn.ConvTranspose2d(3,3,3,stride=2,padding=1)

求反卷积的输出尺寸?

第一步:对输入的特征图做插值,在原先高宽方向的每两个相邻中间插上(Stride−1)列0,如下图所示,原来的尺寸为3*3,因为stride=2,则是在相邻行(列)之间插入(2-1)行(列)0

插入后的尺寸为为:height = height+(height-1)*(stride-1),这里也就是h=3+(2-1)(3-1)=5,即插值过后的 特征图为5*5

第二步:求新的卷积核设置

新卷积核的kernel_new不变为3,stride_new恒为1,padding_new =(kernel_size - padding - 1) = 1

第三步:用新的卷积核在新的特征图上做常规的卷积,得到的结果就是逆卷积的结果。

即在5*5的特征图上执行nn.conv(1,3,3,stride = 1,padding = 1),最后输出的特征图尺寸为:(5-3+2*1)/1+1=5

反卷积核的确定
卷积核的确定方式主要有两种,一是通过双线性插值固定卷积核的参数,不随着学习过程更新;二是随机初始化,并随着学习过程更新。

4.关于ModelCheckpoint参数问题

keras.callbacks.ModelCheckpoint(filepath, 
                                monitor='val_loss', 
                                verbose=0, 
                                save_best_only=False, 
                                save_weights_only=False, 
                                mode='auto', 
                                period=1)

作用:
该回调函数将在每个epoch后保存模型到filepath

参数:
filename:字符串,保存模型的路径,filepath可以是格式化的字符串,里面的占位符将会被epoch值和传入on_epoch_end的logs关键字所填入。
例如:
filepath = “weights_{epoch:03d}-{val_loss:.4f}.h5”
则会生成对应epoch和验证集loss的多个文件。

monitor:需要监视的值,通常为:val_acc 或 val_loss 或 acc 或 loss

verbose:信息展示模式,0或1。为1表示输出epoch模型保存信息,默认为0表示不输出该信息,信息形如:
Epoch 00001: val_acc improved from -inf to 0.49240, saving model to /xxx/checkpoint/model_001-0.3902.h5

save_best_only:当设置为True时,将只保存在验证集上性能最好的模型

mode:‘auto’,‘min’,‘max’之一,在save_best_only=True时决定性能最佳模型的评判准则,例如,当监测值为val_acc时,模式应为max,当检测值为val_loss时,模式应为min。在auto模式下,评价准则由被监测值的名字自动推断。

save_weights_only:若设置为True,则只保存模型权重,否则将保存整个模型(包括模型结构,配置信息等)

period:CheckPoint之间的间隔的epoch数

(关于一些回调函数点击查看)


5.model.fit以及model.fit_generator区别及用法

6.(有可能错误)

1.HDF5格式文件保存的是 : Model weights
2.H5 格式文件保存的是: Model stucture 和 Model weights
3.JSON 和 YAML 格式文件保存的是: Model stucture

细节:1.drop4 = Dropout(0.5)(conv4) # 将部分隐藏层神经元丢弃,防止过于细化而引起的过拟合情况;

2.

在concatenate中,axis=1代表列合并, axis=2代表行合并,axis=3代表层合并,这里需要特别说明一下axis=-1的操作,可能对python不熟悉的人会不理解这里的-1是哪个维度。在pyhton中,-1代表倒数第一个,也就是说,假如你的矩阵shape=[3,4,5],那么对这个矩阵来说,axis=-1,其实也就等于axis=2。因为这是个三维矩阵,所以axis可能的取值为0,1,2,所以最后一个就是2。

3.axis是将矩阵进行分组,然后再操作。而分组则意味着可能会降维(看操作)

待续...

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值