深度学习:
深度学习、强化学习的底层都是神经网络架构。 但是他比机器学习高的地方在于自动化,
他帮你省事,不用从头去构建 神经网络架构 他基于机器学习, 所以深度学习一定是框架。
框架帮你写一些机器学习基础的东西。
违规图片识别
(进行了改进 使用深度学习框架 tensorflow )
tensorflow 国歌开源的
第三方也提供了响应的接口 比如 百度云、 腾讯云 、 阿里云 、但是这些接口每次调用是需要收费的
由于 公司预算不足。 我们选择自研应用,自己造轮子
虽然解决了OpenCV的线性问题,但是他也存在一定是缺陷: 问题在于多元素识别有问题,就是一张原始诊图出现很多元素,很难识别,精细化识别要对图片进行裁剪。
具体流程:和OpenCV一样: 第一步先加载图像 区别是后面就是为深度学习做数据量的处理, 然后转化为特征矩阵,再转换形状,然后转化为向量也就是张量(张量就是把图像的像素或因素转化为0到1之间的浮点数,因为他要计算),然后加载模型我们没有走模型训练这一步原因是:需要输入大量的物体的特征,这个数据没必要搞,因为我们有现成的模型: imagenet 神经网络图形,他列属于ResNet50 的这个库( 这个数据集包含超过 100 万张图片)。 加载后模型之后就可以进行预测,我们需要转换标签 (将矩阵的计算结果 和 实际的物品标签进行匹配) 即可展示识别结果。
import os import PIL.Image import numpy as np import tensorflow as tf import re from machine_learning.img_react import Vido_ def predict_images(image_paths): # 加载模型 model = tf.keras.applications.ResNet50(include_top=True, weights='imagenet') # 转化为人能理解的标签 labels_path = '../machine_learning/labels.txt' with open(labels_path) as f: labels = f.read().splitlines() results = [] # 循环读取每张图片并进行预测 for image_path in image_paths: # 打开图片 image = PIL.Image.open(image_path) # 转换为矩阵 image_array = np.array(image.convert("RGB")) # 将矩阵转换为相同形状 image_array = tf.image.resize(image_array, size=(224, 224)) # 转化为张量 image_tensor = tf.convert_to_tensor(image_array) # 修改形状 image_tensor = tf.expand_dims(image_tensor, axis=0) # 预测 predictions = model.predict(image_tensor) # 获取预测结果的标签 result_label = labels[np.argmax(predictions)] # 将本次预测结果添加到总结果列表中 results.append(result_label) return results