Paper基础知识准备(我也很无奈因为要改网络结构)

参考数据集排名:

KITTI

VOC2012


OCR信息汇总

博主都是将ocr的论文:?https://www.cnblogs.com/lillylin/p/8495278.html

ResNet50:

深度学习——残差神经网络ResNet在分别在Keras和tensorflow框架下的应用案例 ღ( ´・ᴗ・` )比心

https://blog.csdn.net/ghw15221836342/article/details/79801627

使用Keras预训练模型ResNet50进行图像分类

代码的理解参照了这里:Residual Network  (笔记和课程都很棒)

有个参数include_top不太明白,猜测。。。

# 这个include_top是什么?
# 参数include_top表示是否包含模型底部的全连接层,
# 如果包含,则可以将图像分为ImageNet中的1000类,如果不包含,则可以利用这些参数来做一些定制的事情。
import numpy as np
from keras.layers import Dense
from keras.models import Model
from keras.preprocessing import image
from keras.applications.resnet50 import ResNet50

# 使用ResNet的结构,不包括最后一层
base_model = ResNet50(include_top = False, pooling = 'avg')

# 定义网络结构最后一层
predictions = Dense(3, activation='softmax')(base_model.output)

# 定义模型
model = Model(inputs=base_model.input, outputs=predictions)

# 加载训练好的模型
model.load_weights('./weights.h5')

image_path = './lena.jpg'

# 加载图像
img = image.load_img(image_path, target_size=(224, 224))

# 图像预处理
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)

# 对图像进行分类
preds = model.predict(x)

# 输出预测概率
print('Predicted:', preds)

 


VGG16:

这里很少有人解释为什么全连接层里有4096 个神经元,其他数行不行?link

其实这里4096只是个经验值,其他数当然可以,试试效果,只要不要小于要预测的类别数,这里要预测的类别有1000种,所以最后预测的全连接有1000个神经元。如果你想用VGG16 给自己的数据作分类任务,这里就需要改成你预测的类别数。

VGG16是D列

 

VGG16整体:

 

 


基础知识:

深度学习图片卷积输出大小计算公式

反卷积(Deconvolution)、上采样(UNSampling)与上池化(UnPooling)

 Conv2DTranspose

   该层是转置的卷积操作(反卷积)。需要反卷积的情况通常发生在用户想要对一个普通卷积的结果做反方向的变换。例如,将具有该卷积层输出shape的tensor转换为具有该卷积层输入shape的tensor。同时保留与卷积层兼容的连接模式。当使用该层作为第一层时,应提供input_shape参数。例如input_shape = (3,128,128)代表128*128的彩色RGB图像。

   图中,我们使用了卷积的倒数,即转置卷积(transposed convolution),从 100 维的噪声(满足 -1 至 1 之间的均匀分布)中生成了假图像。如在 DCGAN 模型中提到的那样,去掉微步进卷积,这里我们采用了模型前三层之间的上采样来合成更逼真的手写图像。在层与层之间,我们采用了批量归一化的方法来平稳化训练过程。以 ReLU 函数为每一层结构之后的激活函数。最后一层 Sigmoid 函数输出最后的假图像。第一层设置了 0.3-0.5 之间的 dropout 值来防止过拟合。具体代码如下。(link

self.G = Sequential() 
dropout = 0.4 
depth = 64+64+64+64 
dim = 7 
# In: 100 
# Out: dim x dim x depth 
self.G.add(Dense(dim*dim*depth, input_dim=100)) 
self.G.add(BatchNormalization(momentum=0.9)) 
self.G.add(Activation('relu')) 
self.G.add(Reshape((dim, dim, depth))) 
self.G.add(Dropout(dropout)) 
# In: dim x dim x depth 
# Out: 2*dim x 2*dim x depth/2 
self.G.add(UpSampling2D()) #扩大一倍14 
self.G.add(Conv2DTranspose(int(depth/2), 5, padding='same')) 
self.G.add(BatchNormalization(momentum=0.9)) 
self.G.add(Activation('relu')) 
self.G.add(UpSampling2D()) #扩大一倍28 
self.G.add(Conv2DTranspose(int(depth/4), 5, padding='same')) 
self.G.add(BatchNormalization(momentum=0.9)) 
self.G.add(Activation('relu')) 
self.G.add(Conv2DTranspose(int(depth/8), 5, padding='same'))  #这层没有上采样 
self.G.add(BatchNormalization(momentum=0.9)) 
self.G.add(Activation('relu')) 
# Out: 28 x 28 x 1 grayscale image [0.0,1.0] per pix 
self.G.add(Conv2DTranspose(1, 5, padding='same')) #卷积核数为1,还原为1张图片 
self.G.add(Activation('sigmoid')) 
self.G.summary() 
return self.G

tensorflow conv2d的padding解释以及参数解释

【实验问题1】如何实现反卷积?由于我自己的实验pooling太多,导致特征图太小,严重影响结果。最后找到了反卷积这种解决办法。代码实现如下,ps.如果我后面成功了,会贴出自己的代码⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄

https://blog.csdn.net/huangshaoyin/article/details/81004301 

# 整体思路:
# 将反卷积分为两个操作,一个是UpSampling2D(),用上采样将原始图片扩大,
# 然后用Conv2D()这个函数进行卷积操作,就可以完成简单的反卷积。
# UpSampling2D(size=(2,2))就可以将图片扩大1倍,比如原来为28*28的图片,就会变为56*56。
keras.layers.convolutional.UpSampling2D(size=(2, 2), data_format=None)
# 进行卷积操作
keras.layers.convolutional.Conv2D(filters, kernel_size, strides=(1, 1), padding='valid', data_format=None, dilation_rate=(1, 1), activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)

另外一种:

Conv2DTranspose: 进行转置的卷积操作(反卷积) https://keras.io/zh/layers/convolutional/

转置卷积

【实验问题2】我想看我图片经过每一次卷积之后输出的特征图大小,用x.shape结果给我显示(?,?,?,512)。只有深度,特征图的长宽呢??如何显示前三个维度,第一个维度batchsize是1,我想知道2,3维度。

没有图片喂进去的时候都是placeholder,所以没有显示出具体的值。(test.py的时候有喂进去啊,也没有显示出值)

查看特征图——卷积神经网络特征图可视化(自定义网络和VGG网络)


汇总:

今天意外收获(但还不清楚原理):

Q:问一下,用gbdt做回归模型对目标值还需要归一化吗?

A:树模型不需要归一化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值