CNN卷积神经网络实战(1)

CNN卷积神经网络的由来:

CNN卷积神经网络是基于MLP模型上解决图片像素很大的时候,训练参数很多时,如何减少训练参数的数量的问题上衍生的。对于上述问题的解决办法是提取出图像中的关键信息(或关键轮廓),提取后再建立MLP模型进行训练。

图像卷积运算

图像卷积运算:

对图像矩阵与滤波器矩阵进行对应相乘然后再求和的运算,转化得到新的矩阵。

作用:可以快速定位图像中某些边缘特征

例如:图像矩阵A,滤波器矩阵F,A和F进行卷积后得到A*F

卷积神经网络的核心---寻找合适的轮廓过滤器

计算机根据样本图片,自动寻找合适的轮廓过滤器,对新的图片进行轮廓匹配

在有些情况,一个过滤器是不够的,需要寻找很多过滤器。比如彩色图像

RGB图像的卷积:对R/G/B 3个通道分别求卷积再相加。

卷积的目的是提取图像特征和轮廓

卷积后得到的训练数据参数,如何对训练数据参数进行进一步的减少,这里需要引入池化。

池化

池化的概念:按照一个固定规则对图像矩阵进行处理,其目的是为了将其转化成更低维度的矩阵。分为2种池化类型,最大法池化(Max-pooling)和平均值池化

池化的前提条件是保留核心信息的前提条件下,对训练参数进行降维。

卷积神经网络的概念

将卷积,池化,mlp先后连接在一起,组成卷积神经网络。

在卷积神经网络中还有一个激活函数,比如Relu函数:f(x) = max(x,0)

其作用是使部分神经元为0,防止过拟合,还有一种作用是有助于模型求解。

卷积神经网络的特征

  1. 参数共享:同一个过滤特征器可以适用于整张图片。
  2. 稀疏连接:生成的特征图片每个节点只与原图片中特定节点连接。

卷积神经网络实战

训练数据图片的预处理

复制代码
from keras.src.legacy.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale=1./255)
training_set = train_datagen.flow_from_directory('/Users/zc/PyCharmMiscProject/dataset/',target_size=(500,500),batch_size=32,class_mode='binary')
print(training_set.class_indices)

卷积神经网络模型的建立

复制代码
from keras.models import Sequential
from keras.layers import Conv2D,MaxPool2D,Flatten,Dense
model = Sequential()
#增加卷积层
model.add(Conv2D(32,(3,3),input_shape=(500,500,3),activation='relu'))
#增加池化层
model.add(MaxPool2D(pool_size=(2,2)))
#增加卷积层
model.add(Conv2D(32,(3,3),activation='relu'))
#增加池化层
model.add(MaxPool2D(pool_size=(2,2)))
#增加Flatten
model.add(Flatten())
#增加FC layer
model.add(Dense(units=128,activation='relu'))
model.add(Dense(units=1,activation='sigmoid'))
model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])
model.summary()

模型训练和模型评估

model.fit(training_set,epochs=8)
train_accuracy = model.evaluate(training_set)
print("train accuracy:",train_accuracy)

网上下载图片进行猫狗预测

pic_dog = '/Users/zc/PyCharmMiscProject/4.jpg'
pic_dog = load_img(pic_dog,target_size=(500,500))
pic_dog = img_to_array(pic_dog)
# print(pic_dog)
pic_dog = pic_dog/255
print(pic_dog)

pic_dog.reshape(1,500,500,3)
print(type(pic_dog))
print(pic_dog)
result1 = model.predict(pic_dog)
print(result1)

从网上下载图片进行预测,预测结果为none,没有到达实战的效果,现在暂时没有定位出具体哪里出现了问题,后续再定位。网上各位好友有思路请告诉我,非常感激。

相关推荐
会飞的老朱1 小时前
医药集团数智化转型,智能综合管理平台激活集团管理新效能
大数据·人工智能·oa协同办公
聆风吟º2 小时前
CANN runtime 实战指南:异构计算场景中运行时组件的部署、调优与扩展技巧
人工智能·神经网络·cann·异构计算
Codebee4 小时前
能力中心 (Agent SkillCenter):开启AI技能管理新时代
人工智能
聆风吟º5 小时前
CANN runtime 全链路拆解:AI 异构计算运行时的任务管理与功能适配技术路径
人工智能·深度学习·神经网络·cann
uesowys5 小时前
Apache Spark算法开发指导-One-vs-Rest classifier
人工智能·算法·spark
AI_56785 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
User_芊芊君子5 小时前
CANN大模型推理加速引擎ascend-transformer-boost深度解析:毫秒级响应的Transformer优化方案
人工智能·深度学习·transformer
智驱力人工智能6 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
qq_160144876 小时前
亲测!2026年零基础学AI的入门干货,新手照做就能上手
人工智能
Howie Zphile6 小时前
全面预算管理难以落地的核心真相:“完美模型幻觉”的认知误区
人工智能·全面预算