楼主: 时光永痕
616 0

[数据挖掘新闻] 构建端到端图像分类/识别应用程序 [推广有奖]

  • 0关注
  • 14粉丝

svip3

学术权威

12%

(VIP/贵宾)四级

17%

威望
0
论坛币
26 个
通用积分
49.8622
学术水平
4 点
热心指数
4 点
信用等级
4 点
经验
34070 点
帖子
2731
精华
0
在线时间
317 小时
注册时间
2020-7-21
最后登录
2024-5-13

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
构建端到端图像分类/识别应用程序
近年来,人脸识别应用已被大规模开发。图像分类和识别已经发展,并已在许多地方得到使用。我最近读了一篇文章,其中在一个机场中部署了人脸识别应用程序以实现完全自动化的签入流程。
影像分类
这将减轻对人工干预的需求,并通过技术提供无缝的端到端检查流程。对于普通人来说,这看起来像是一个神奇的应用程序,但是我将讨论您在自己的手机上构建此类应用程序所需的条件。
应用领域
人脸识别–手机摄像头使用人脸识别来解锁手机。人脸识别系统可以部署在办公大楼的入口处。
图像分类–用于区分多个图像集。汽车,零售,游戏等行业正在将其用于多种目的。
图像识别– 安全公司使用图像识别来检测机场行李箱中的各种物品,图像扫描仪等。
构建应用程序的步骤
获取数据
资料准备
资料建模
设计用户界面
集成用户界面和建模
获取数据
数据将采用图像即图片的形式。图片是像素矩阵。为了构建整个端到端应用程序,将需要大量映像。数据将在组织内部可用,或者必须从开放的Internet中获取。根据应用程序的类型,所需的数据类型将有所不同。如果是人脸识别应用程序,我们甚至可以通过收集各个人的图像来创建数据。如果要从开放的互联网上获取图片,我们可以从网上抓取图片。
捕获的图像需要具有高分辨率,并且可能会略微失真。图像中可能存在一定数量的噪声,因此算法能够对图像进行正确分类。
网页在网页上抓取图片的示例–
从硒导入webdriver
选项= webdriver.ChromeOptions()
options.add_argument('-ignore-certificate-errors')
options.add_argument(“-test-type”)
options.binary_location =“ / usr / bin / chromium”
驱动程序= webdriver.Chrome(chrome_options =选项)
driver.get('https://imgur.com/')
图片= driver.find_elements_by_tag_name('img')
用于图像中的图像:
    打印(image.get_attribute('src'))
driver.close()
资料准备
需要调整图像的大小,以便所有图像的大小相同
图像可以清晰,高分辨率,并且有点模糊和嘈杂
应该应用诸如平移,旋转和缩放之类的变换操作,以使捕获的图像以所有角度出现
图像可能会失真或被剪断,因此泛化效果很好
如果不存在图像,则引入噪点
在每个类别中均应显示图像数量的均匀分布
“如果Kindle升级了面部识别和生物识别传感器,它就能知道是什么使您发笑,是什么使您难过以及是什么使您生气。很快,书籍就会在您阅读的同时阅读。”
Yuval Noah Harari –智人的作者
用于调整图像大小的代码-
img = cv2.imread('/ home / img / python.png',cv2.IMREAD_UNCHANGED)
print('原始尺寸:',img.shape)
scale_percent = 60
宽度= int(img.shape [1] * scale_percent / 100)
高度= int(img.shape [0] * scale_percent / 100)
昏暗=(宽度,高度)
#调整图片大小
调整大小= cv2.resize(img,暗,插值= cv2.INTER_AREA)
资料建模
获取所有图像后,将它们放入每个类的正确文件夹中。确保为训练,验证和测试数据集分配适当的图像。对于图像分类和识别,我们将不得不使用神经网络。卷积神经网络架构最适合与矩阵一起使用的图像。
卷积神经网络具有不同的层,有助于对图像执行数学运算。这些层包括卷积层,池化层,批处理规范化层,激活功能和完全连接的层。转移学习使您能够使用与标准数据集图像配合使用的预训练网络模型架构。因此,首先编写您自己的网络,但是您会发现经过预先训练的网络将为您带来更好的性能。
从一些基本的预训练模型开始,例如:
VGG16
起始时间
Xception
移动网
ResNet50
您可以使用Tensorflow或Keras库来使用这些模型,这些模型在库中具有其实现。这将使您更轻松地更改体系结构不同层的参数。您可以解决超参数调整问题,以提高性能。训练模型时,请确保您保存了模型的系数值或权重。您保存的这些值可用于预测将来将提供给应用程序的图像。
VGG16型号代码-
image_size = 224
从keras.applications导入VGG16
从keras导入模型
从keras导入图层
来自keras导入优化器
#加载VGG模型
vgg_conv = VGG16(权重='imagenet',include_top = False,input_shape =(224,224,3))
用于vgg_conv.layers [:-4]中的层:
    layer.trainable = False
对于vgg_conv.layers中的图层:
    打印(layer,layer.trainable)
模型= models.Sequential()
#添加vgg卷积基本模型
model.add(vgg_conv)
#添加新图层
model.add(layers.Flatten())
model.add(layers.Dense(1024,activation ='relu'))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(29,activation ='softmax'))
#显示模型摘要。检查可训练参数的数量
model.summary()
Keras库为您提供了一种使用以下方法保存模型系数的简便方法:
model.save('filename.h5')
设计用户界面
一旦准备好使用模型,就需要在用户界面上进行操作。如果要设计Android应用程序,则可以在Kotlin或Flutter的帮助下设计用户界面。用户界面应易于阅读和解释。它的设计方式应能满足应用程序的主要目标。
如果要设计Web应用程序,则可以将Flask或Django用于相同的目的。可以使用Tkinter等Python库来设计GUI。
集成用户界面和建模
对于Android应用程序,Flutter可让您借助名为Tensorflow Lite的库来集成分类模型。tensorflow lite实现只需要两个文件即可进行图像分类,即类标签文本文件和模型系数或权重文件。将这两个文件放置在文件夹结构中后,Android应用程序即已完成并可以进行测试。使用Flutter创建的相机小部件可用于拍摄输入图像。
包括两个文件的代码–
loadModel()异步{
  等待Tflite.loadModel(
    型号:“ assets / model_unquant.tflite”,
    标签:“ assets / labels.txt”,
  );
}
这里的.tflite文件是从模型创建的系数文件,labels.txt是用新行分隔的图像类的名称。将其嵌入到android结构中。
对于Web应用程序,Flask允许您集成Tensorflow库,并允许您使用模型权重对输入图像进行正确的预测。
通过逐步执行此过程,您将能够立即构建自己的分类模型。
题库
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:应用程序 Applications Certificate Application Activation

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-22 17:46