当前位置:   article > 正文

猫狗分类——yolo模型_猫狗分类模型

猫狗分类模型

一、神经网络结构

一般的神经网络包括输入层(Input Layer)、隐藏层(Hidden Layer)、输出层(Output Layer),层数大于等于2的神经网络称为多层神经网络(Multi-Layer Neural Network),一般是在隐藏层进行扩展。如图2中a是最基本的2层结构神经网络,b是在a的基础上对隐藏层进行扩展,变成3层神经网络。

在这里插入图片描述

相关的数学推导:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、特征学习

线性模型简单高效,且易于求解。但是它有个明显的缺陷:模型的能力被局限在线性函数中,因此它无法理解任意两个输入变量间的非线性相互作用 。
解决线性模型缺陷的方法是:采用核技巧,将线性模型作用在 上,而不是原始输入 上。其中 是一个非线性变换。
当 具有足够高的维数,则总是有足够的能力来适应训练集,但是对于测试集的泛化往往不佳。

三、训练

训练一个深度前馈网络和训练一个线性模型的选项相同:选择优化算法、代价函数、输出单元的形式。
除此之外还需要给出下列条件:
由于深度前馈网络引入了隐层的概念,因此需要选择适用于隐层的激活函数。激活函数接受隐层的输入值,给出了隐层的输出值。
深度前馈网络的网络结构也需要给出,其中包括:有多少层网络、每层网络有多少个单元、层级网络之间如何连接。
深度神经网络训练时需要计算复杂函数的梯度,通常这采用反向传播算法(back propagation)和它的现代推广来完成。

四、损失函数

损失函数是在机器学习中用于衡量模型预测值与真实值之间差异的一种函数。其作用是指导模型通过调整参数以最小化预测误差。以下是损失函数的一些关键内容:

  1. 目标:损失函数的目标是衡量模型输出与真实标签之间的差异。通常,损失函数越小,模型的预测越准确。
  2. 常见类型:有多种不同类型的损失函数,常见的包括均方误差(MSE)、交叉熵(Cross-Entropy)、对数损失(Log Loss)等。
  3. 回归问题:在回归问题中,损失函数通常使用MSE,它计算预测值和真实值之间的平方差。其他的回归损失函数还包括平均绝对误差(MAE)、Huber损失等。
  4. 分类问题:在分类问题中,常用的损失函数包括交叉熵和对数损失函数。交叉熵主要用于多分类问题,对数损失函数适用于二分类问题。
  5. 正则化项:有时会在损失函数中添加正则化项,以避免模型过拟合。常见的正则化方法包括L1正则化和L2正则化。
  6. 优化:损失函数是优化算法的核心,通过最小化损失函数来调整模型参数。常用的优化算法包括梯度下降(Gradient Descent)和其变种,如随机梯度下降(SGD)和Adam。
    总之,损失函数在机器学习中起着重要作用,帮助模型了解其预测与真实值之间的误差,并通过优化算法来提高模型的准确性和泛化能力。

项目实验

以上是本次实习的一些基本的内容,在本次实习过程中我们跟随老师的带领,完成了各种项目和实验,老师带着我们分析了代码,告诉我们卷积神经网络的相关算法通过代码可以怎么实现,在老师的带领下,我们完成了,图像的二值化处理,gif动态图的倒放,手写体识别,口罩识别等实验项目。
在完成口罩识别项目后,我们根据口罩识别项目完成了猫狗识别分类的项目。

项目相关步骤

在进行项目之前我们需要配置相关的实验环境,结合我的实验经历,我推荐使用anaconda3并在anaconda3中配置好虚拟环境,虚拟环境的版本最好在3.7及以下,不然在实验过程中会出现很多问题。
在这里插入图片描述

在安装好虚拟环境后,我们可以通过以上命令进入虚拟环境,然后开始安装其他依赖包。
首先我们需要安装labelimg,labelimg建议在虚拟环境中安装,安装使用以下命令:
pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple
在这里插入图片描述

在anaconda3中打开虚拟环境然后输入labelimg可以打开标注软件。
在这里插入图片描述

创建好图片文件夹和label文件夹就可以开始打标签了。
在这里插入图片描述

在images文件夹中放入我们需要进行标注的数据
在这里插入图片描述

将标注好的文件进行打包处理把数据拆成训练集、测试集、验证集,我们为了方便,就只需要拆分成训练集和验证集就可以了。在YOLO2COCO\dataset文件下建立一个yolo_mask文件夹,然后将数据移动到此文件夹下。
在这里插入图片描述

生成数据集
在这里插入图片描述

打开ai studio开始创建项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建好项目后点开创建好的项目

在这里插入图片描述
在这里插入图片描述

点击启动环境
在这里插入图片描述

由于我们进去之后需要配置一些环境,所以我们可以选择1算力的进入,后面切换为8算力进行模型训练会快点。
在这里插入图片描述

我们需要安装这个东西,建议可以在网上直接下载相关的依赖包,然后上传至环境中,这样会快很多,如果不想找可以通过以下方法安装:
在这里插入图片描述
在这里插入图片描述

在数据集存放好,然后我们可以开始训练我们的模型了
在这里插入图片描述

代码需要根据实际情况进行修改。
将导出的模型进行剪枝处理后我们就基本可以正常使用了然后我们需要进行模型转化,将该模型转化成openvino模型

推理代码:

from openvino.runtime import Core
import openvino.runtime as ov
import cv2 as cv
import numpy as np
import tensorflow as tf

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

OpenVINO 模型推理器(class)

class Predictor:
    """
    OpenVINO 模型推理器
    """
    def __init__(self, model_path):
        ie_core = Core()
        model = ie_core.read_model(model=model_path)
        self.compiled_model = ie_core.compile_model(model=model, device_name="CPU")
    def get_inputs_name(self, num):
        return self.compiled_model.input(num)
    
    def get_outputs_name(self, num):
        return self.compiled_model.output(num)
    
    def predict(self, input_data):
        return self.compiled_model([input_data])
    
    def get_request(self):
        return self.compiled_model.create_infer_request()


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

图像预处理

def process_image(input_image, size):
    <
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/718384
推荐阅读
相关标签
  

闽ICP备14008679号