2021年人工神经网络第四次作业-第五题:危险品识别
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021年人工神经网络第四次作业-第五题:危险品识别相关的知识,希望对你有一定的参考价值。
简 介: 通过对于物品X射线数据集合的整理,挑选出15类体积比较大的物品,训练LeNet网络进行识别。
关键词
: X射线,危险品识别,LeNet,Paddle
§01 作业准备
1.1 作业要求
由 2021年人工神经网络第四次作业 对于第五题的要求:
① 构造合适的神经网络,对于数据库中物品X射线图片进行识别分类。可以根据物品不同的大小,在训练网络之前对于图片进行预处理。
② 讨论实验结果中,造成识别错误的因素包括哪些。
③ 探讨如何利用图频的序列信息完成物品的识别的方法。根据自己的时间和经验,选做是否可以通过LSTM网络来利用图频的不同角度序列信息提高识别的精度。
④ 可以根据自己的时间和经验,选做一些目标定位的神经网络:比如YOLO3,SSD等来进行实验。
1.2 数据库准备
1.2.1 原始数据文件下载
从网络学堂下载第四次作业的附加数据文件“ANN-DATASET”下载到自己电脑本地目录。将ZIP文件加压缩之后,形成如下数据目录:
├─CIFAR-10
├─FORBIDDEN
├─FruitAnimal
│ ├─动物
│ │ └─动物
│ └─水果
│ └─水果
├─MNIST
└─ROTATEDIGIT
在FORBIDDEN 子目录中存在如下三个MATLAT数据文件。
xraydata-120-100.mat
xraydata-240-200.mat
xraydata-96-80.mat
这三个数据文件承载的都是相同的常见物品的X射线图片,只是相应的尺寸不同。在文件名称后面的两个数字表示这些数据图片的尺寸分别为:(120,100)、(240,200)、(96,80)。下面介绍对于xraydata-96-80.mat的操作,对于另外两个数据文件操作是相同的。
1.2.2 Studio中加载数据文件
在AI Studio的 BML CodeLab环境下,领用界面左边管理界面,通过上载文件将xraydata-96-80.mat加载到工程的主目录下。
注意,只有文件存储在项目主目录(/home/aistudio)下,下次启动的时候,该文件还是存在的。如果将文件存储在 data,work中,这两个目录都是临时目录,下次启动之后,其中的临时文件都会被清除。
▲ 图1.2.1 利用文件上载功能,将数据库文件上传到主目录下
1.2.3 安装mat4py
根据 在Python中读取MATLAB的数据文件 介绍,通过mat4py 可以读取MATLAB的数据文件。在使用改软件包之前需要在当前的AI Studio中安装mat4py。
在Notebook中执行下面的命令,安装mat4py软件包。
! pip install mat4py
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting mat4py
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e8/56/41b3ffd7b5f3eb3056979e0dc37de184c6e5dacd1a353e5de42323e7d138/mat4py-0.5.0-py2.py3-none-any.whl
Installing collected packages: mat4py
Successfully installed mat4py-0.5.0
1.2.4 加载数据
执行下面代码片段,将xraydata-96-80.mat加载到Notebook环境中。
import sys,os,math,time
import matplotlib.pyplot as plt
from numpy import *
from mat4py import loadmat
datazipfile = '/home/aistudio/xraydata-96-80.mat'
data = loadmat(datazipfile)
printf(data.keys())
dict_keys(['images', 'labels', 'labeldir', 'imagesize'])
在读入的data中包括有四个数据表格:
- images : 物品X射线数据,个数:6401,数据长度 7680=98×80
- labels:物品标签,个数:6401
- labeldir :标签对于的字符形态;
- imagesize:图片大小:98×80
将图片数据和标号分别加载到数据 imgdata,labels中。
imgdata = data['images']
labels = data['labels']
print(type(imgdata), shape(imgdata))
print(type(labels), shape(labels))
<class 'list'> (6401, 7680)
<class 'list'> (6401,)
(1)图片种类
在 labels 给出了图片的种类。
print(set(labels), "\\n\\n", 'Tatal Item :%d'%len(set(labels)))
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 600, 601, 602, 603, 604, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 500, 501, 502, 503, 504, 505, 506
Tatal Item :145
总共有145个物品的图片。
1.2.5 显示数据图片
(1)随机挑选图片
随机挑选6401个数据中24图片进行显示。
imgindex = list(range(len(labels)))
random.shuffle(imgindex)
PIC_ROW = 4
PIC_COL = 6
plt.figure(figsize=(12,8))
for j in range(PIC_ROW):
for i in range(PIC_COL):
id = i + j*PIC_COL
img = array(imgdata[imgindex[id]]).reshape(80,96)
plt.subplot(PIC_ROW, PIC_COL, id+1)
plt.imshow(img, cmap=plt.cm.gray)
▲ 图1.2.2 数据库中的24个随机挑选图片
(2)显示特定种类物品
itemlabels = list(set(labels))
imgid = where(array(labels) == itemlabels[0])[0]
print(imgid)
PIC_ROW = 7
PIC_COL = 10
plt.figure(figsize=(12,8))
for j in range(PIC_ROW):
for i in range(PIC_COL):
id = i + j*PIC_COL
if id >= len(imgid): break
img = array(imgdata[imgid[以上是关于2021年人工神经网络第四次作业-第五题:危险品识别的主要内容,如果未能解决你的问题,请参考以下文章