实战了解AlexNet网络:实战演练

第一个实战是利用AlexNet网络识别图片中的动物是猫还是狗。这里准备了两万多张猫和狗的图片(一张图片中仅有猫或仅有狗)

这个仅仅是第三轮训练的结果,可以见得效果还是可以的。

 

   然后又利用AlexNet网络对烧结图片进行瑕疵识别。(可能会有人疑问,什么是矿石烧结。铁矿粉在一定的高温作用下.部分颗粒表面发生软化和熔化,产生一定量的液相,并与其它末熔矿石颗粒作用,冷却后,液相将矿粉颗粒藏结成块,这个过程称为烧结。)以下为矿石烧结图片(上无瑕疵,下有瑕疵)

这个是帮助大家了解瑕疵的图片。其实数据集分成了五个不同程度的瑕疵(五个标签)

 虽然分成了五个不同的标签,但是代码最终是每两个一组进行训练和验证。

 同样也是进行了20轮次的训练,并且保存了效果最好(精度最高)和最后一轮次的训练好的模型。

 在没有经过调参的情况下,AlexNet网络对瑕疵识别判断的效果还是比较不错的,以下为对比图。

为了更直观的感受AlexNet网络的识别效果,我们来用保存的已经训练好的效果最好的模型进行一个现场识别,对10张图片进行识别:

由上图可见,实际效果还是不错的(在当前的情况来看)

 

   看完结果,下面我们来详解一下代码。

这个Python文件写的是AlexNet网络的框架,其中使用的是ReLU激活函数。这里没有什么好说的,有固定的搭建方式,这里不做过多解说。

 这个Python文件是一个数据分类小脚本,可以帮助我们快速的把数据集分成训练集和验证集两部分。使用的时候只需要把下面标识的位置的路径换一下。

然后调整一下训练集和验证集的比例以便于获得我们想要的

这个Python是写的一个训练数据的脚本,这里包含了对图像数据的处理工作。

先对其进行归一化,然后再调用resize()函数,将大小不一的图片,缩小成 224×224 的尺寸。事实上不做归一化处理也是可以的(归一化有如下好处,即(1)归一化后消除奇异样本数据导致的不良影响,加快了梯度下降求最优解的速度,也即加快训练网络的收敛性;(2)归一化有可能提高精度)。

这是我们当前训练脚本的一个参数的设置情况。

 

 

 

 

注意:博主还没有写完该文章,会尽快更新。

 

posted @ 2023-04-21 22:59  从0到1再到10  阅读(33)  评论(0)    收藏  举报