python-LeNet卷积神经网络目标检测

LeNet网络

lenet卷积神经网络是比较早的目标检测网络,今天复现一下,数据集采用mnist,在网络中加入了参数量和计算量和网络结构查看代码,而且将网络结构与训练代码进行分离,这样可以在设计网络结构时,可以将lenet网络改为你想设计的网络。出创新点。

代码结构

在这里插入图片描述
其中,LeNet为网络结构模块,summary是网络结构查看模块,xunlian模块是训练网络模块,utils是设计支持summary的模块

LeNet网络

from keras.models import Sequential
from keras.layers.convolutional import Conv2D,MaxPooling2D
from keras.layers.core import Dense,Activation,Flatten


class lenet():
    @staticmethod
    def net(input_shape,classes):
        model = Sequential()

        model.add(Conv2D(32 , (3,3) , padding = 'same' , input_shape=input_shape,data_format = 'channels_first'))
        model.add(Activation('relu') )
        model.add(MaxPooling2D(pool_size = (2,2) , strides = (2,2)))

        model.add(Conv2D(50, (5,5) , padding = 'same' , input_shape=input_shape,data_format = 'channels_first'))
        model.add(Activation('relu'))
        model.add(MaxPooling2D(pool_size = (2,2),strides = (2,2)))

        model.add(Flatten())
        model.add(Dense(500))
        model.add(Activation ('relu'))

        model.add(Dense(classes))
        model.add(Activation ('softmax'))

        return model

可以在该代码的基础上,进行网络改进,改为自己想要的网络结构

summary

from LeNet import lenet

from utils import net_flops

if __name__ == "__main__":
    input_shape = [28,28]
    classes = 10

    model = lenet.net([input_shape[0],input_shape[1],3],classes)
    #查看网络结构
    model.summary()
    #计算网络的flops
    net_flops(model,table = False)

用于查看设计好的网络结构和参数、计算量,lenet的网络结构如下所示
在这里插入图片描述
在这里插入图片描述

xunlian网络

from keras.datasets import mnist
from keras.optimizers import nadam
from LeNet import lenet
from keras import backend as K
import matplotlib.pyplot as plot
from keras.utils import np_utils
import numpy as np
#参数设置
eproch = 40
batch_size = 128
verbose = 1
optimizer = nadam()
val_spilt = 0.2
r,w = 28,28
Class = 10
input_shape = (1,r,w)

#输入数据处理
(x_train,y_train),(x_test,y_test) = mnist.load_data()

x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /=255
x_test /=255
x_train = x_train[:, np.newaxis, :, :]
x_test = x_test[:, np.newaxis, :, :]
print(x_train.shape[0], "train sample")
print(x_test.shape[0], "test sample")

y_train = np_utils.to_categorical(y_train,Class)
y_test = np_utils.to_categorical(y_test,Class)

#建立的模型导入
model = lenet.net(input_shape = input_shape,classes = Class)
#编译
model.compile(loss = 'categorical_crossentropy',optimizer=optimizer,metrics=["accuracy"])
history = model.fit(x_train,y_train,batch_size=batch_size,epochs=eproch,verbose=verbose,validation_split=val_spilt)
score = model.evaluate(x_test,y_test,verbose=verbose)
print(f"test score:{score[0]}")
print(f"test accuracy:{score[1]}")
print(history.history.keys())

plot.plot(history.history["acc"])
plot.plot(history.history["val_acc"])
plot.title("model accuracy")
plot.ylabel("accuracy")
plot.xlabel("epoch")
plot.legend(["train","test"],loc="upper left")
plot.show()

plot.plot(history.history["loss"])
plot.plot(history.history["val_loss"])
plot.title("model loss")
plot.ylabel("loss")
plot.xlabel("epoch")
plot.legend(["train","test"],loc="upper left")
plot.show()

训练结果

在这里插入图片描述

训练的是自带的mnist数据集,下一个博客将介绍训练自己的数据集

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
卷积神经网络目标检测任务中有广泛的应用。通过卷积层和池化层的组合,卷积神经网络可以有效地识别图像中的物体。在Python中,可以使用TensorFlow等深度学习框架来实现卷积神经网络目标检测。 具体来说,可以使用TensorFlow的相关概念和工具,如数据流图、会话、张量、tensorboard可视化等来构建卷积神经网络。可以通过定义输入层、卷积层、池化层和全连接层等结构来设计网络。然后,可以使用数据集对网络进行训练,并使用softmax函数来实现输出。 此外,在目标检测任务中,卷积神经网络可以通过直接作用于输入样本,用样本来训练网络并最终实现检测任务。与传统的人脸检测方法不同,卷积神经网络可以更加准确地识别和定位物体。 因此,要在Python中实现卷积神经网络目标检测,可以先学习和掌握TensorFlow的基本概念和工具,然后按照深度学习的基本工作流程,设计并训练卷积神经网络模型,最后应用于目标检测任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [卷积神经网络Python实现,python卷积神经网络训练](https://blog.csdn.net/super67269/article/details/126332124)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值