图像识别
图像识别技术的定义为利用计算机对图像进行处理、分析和理解,以识别不同模式的目标和对象的
技术。
模式识别
计算机的图像识别技术就是模拟人类的图像识别过程。在图像识别的过程中进行模式识别
是必不可少的。
模式识别就是对数据进行分类,它是一门与数学紧密结合的科学,其中所用的
思想大部分是概率与统计
分类与检测
图像中物体分类与检测
使用卷积层代替全连接
卷积层和全连接层的区别:卷积层为局部连接;而全连接层则使用图像的全局信息。可以想象一
下,最大的局部是不是就等于全局了?这首先说明全连接层使用卷积层来替代的可行性。
卷积层和全连接层都是进行了一个点乘操作,它们的函数形式相同。因此全连接层可以转化为对
应的卷积层。我们只需要把卷积核变成跟输入的一个feature map大小(h,w)一样就可以了,这
样的话就相当于使得卷积跟全连接层的参数一样多。
简而言之, 全连接层转化为卷积层的规则是:将卷积核大小设置为输入的空间大小
全卷积神经网络FCN : 可以接受可变输入
1*1卷积的作用
实现特征通道的升维和降维
通过控制卷积核的数量达到通道数大小的放缩。而池化层只能改变高度和宽度,无法改变通道数。
VGG
VGG的经典在于,首次将深度学习做的非常深,16-19层,同时用了非常小的卷积核(3x3)
from nets import vgg16
import tensorflow as tf
import numpy as np
import utils
# 读取图片
img1 = utils.load_image("./test_data/dog.jpg")
# 对输入的图片进行resize,使其shape满足(-1,224,224,3)
inputs = tf.placeholder(tf.float32,[None,None,3])
resized_img = utils.resize_image(inputs, (224, 224))
# 建立网络结构
prediction = vgg16.vgg_16(resized_img)
# 载入模型
sess = tf.Session()
ckpt_filename = './model/vgg_16.ckpt'
sess.run(tf.global_variables_initializer())
saver = tf.train.Saver()
saver.restore(sess, ckpt_filename)
# 最后结果进行softmax预测
pro = tf.nn.softmax(prediction)
pre = sess.run(pro,feed_dict={
inputs:img1})
# 打印预测结果
print("result: ")
utils.print_prob(pre[0], './synset.txt')
残差
Residual net(残差网络):将靠前若干层的某一层数据输出直接跳过多层引入到后面数据层的输入
部分。
残差神经单元:假定某段神经网络的输入是x,期望输出是H(x),如果我们直接将输入x传到输出作
为初始结果,那么我们需要学习的目标就是F(x) = H(x) - x,这就是一个残差神经单元,相当于将
学习目标改变了,不再是学习一个完整的输出H(x),只是输出和输入的差别 H(x) - x ,即残差。
Resnet
ResNet有很多旁路的支线将输入直接连到后面的层,使得后面的层可以直接学习残差,这种结构也
被称为shortcut或skip connections。
用特殊结构解决了层数不能过深的问题。
. 减少了信息丢失、损耗;减少了过拟合;简化了学习目标和难度。
BatchNormalization归一化
BatchNormalization:减均值除方差
• 所有输出保证在0~1之间。
• 所有输出数据的均值接近0,标准差接近1的正太分布。使其落入激活函数的敏感区,避免梯度
消失,加快收敛。
• 加快模型收敛速度,并且具有一定的泛化能力。
• 可以减少dropout的使用
Resnet50
ResNet50有两个基本的块,分别名为Conv Block和Identity Block
代码:
#-------------------------------------------------------------#
# ResNet50的网络部分
#-------------------------------------------------------------#
from __future__ import print_function
import numpy as np
from keras import layers
from keras.layers import Input
from keras.layers import Dense,Conv2D,MaxPooling2D,ZeroPadding2D,AveragePooling2D
from keras.layers import Activation,BatchNormalization,Flatten
from keras.models import Model
from keras.preprocessing import image
import keras.backend as K
from keras.utils.data_utils import get_file
from keras.applications.imagenet_utils import decode_predictions
from keras.applications.imagenet