补丁级别:VGG
在补丁级别的训练中,我们将image和ground-truth64×64像素)进行了网格化处理,每个补丁的面积为4096像素。当ground-truth中的像素值之和大于2048时,我们给相应的原始图像patch加上正的标签。否则我们就给它加上一个负号。然而,如果我们这样处理,正的图像补丁比负的图像补丁要少。为了在训练过程中平衡数据,我们通过翻转和垂直方向增加正图像patch,并在训练集中旋转90、180、270度。同时,我们通过fl增加正图像patch
在patch-level,我们在Vgg-16, incep - v3, ResNet-50网络中进行transfer learning,得到3个patch-一元分割结果和3个patch-二进制分割结果。然后我们得到了加权的补丁-一元分割结果和加权的补丁-二元分割结果。
今晚看了挺多代码有个感悟,如果想简便一些,用keras真的挺好,更多封装好的库。tf的话需要的代码行数多,不过可以根据不同需求选择吧。
- 关于Application
Keras 的应用模块(keras.applications)提供了带有预训练权值的深度学习模型,这些模型可以用来进行预测、特征提取和微调(fine-tuning)。当你初始化一个预训练模型时,会自动下载权值到 ~/.keras/models/ 目录下。
- keras内置的Model
在 ImageNet 上预训练过的用于图像分类的模型:
VGG16
VGG19
Xception
ResNet50
InceptionV3
InceptionResNetV2
MobileNet
DenseNet
NASNet
例子
使用 VGG16 提取特征
from keras.applications.vgg16 import VGG16
from keras.preprocessing import image
from keras.applications.vgg16 import preprocess_input
import numpy as np
model = VGG16(weights='imagenet', include_top=False)
img_path = 'elephant.jpg'
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
features = model.predict(x)
来自官方文档
模型默认输入尺寸是 224x224。
参数
include_top: 是否包括顶层的全连接层。
weights: None 代表随机初始化, ‘imagenet’ 代表加载在 ImageNet 上预训练的权值。
input_tensor: 可选,Keras tensor 作为模型的输入(即 layers.Input() 输出的 tensor)。
input_shape: 可选,输入尺寸元组,仅当 include_top=False 时有效,否则输入形状必须是 (244, 244, 3)(对于 channels_last 数据格式),或者 (3, 244, 244)(对于 channels_first 数据格式)。它必须拥有 3 个输入通道,且宽高必须不小于 32。例如 (200, 200, 3) 是一个合法的输入尺寸。
pooling: 可选,当 include_top 为 False 时,该参数指定了特征提取时的池化方式。
None 代表不池化,直接输出最后一层卷积层的输出,该输出是一个四维张量。
‘avg’ 代表全局平均池化(GlobalAveragePooling2D),相当于在最后一层卷积层后面再加一层全局平均池化层,输出是一个二维张量。
‘max’ 代表全局最大池化
classes: 可选,图片分类的类别数,仅当 include_top 为 True 并且不加载预训练权值时可用。
返回
Keras Model 对象
Model模型的属性官方文档
给学长代码做了标注
来源:CSDN
作者:S.T.A.R.
链接:https://blog.csdn.net/weixin_44886683/article/details/103604298