• 【毕业设计】深度学习YOLO图像视频足球和人体检测 - python opencv


    1 前言

    🚩 深度学习YOLO图像视频足球和人体检测

    🥇学长这里给一个题目综合评分(每项满分5分)

    • 难度系数:3分
    • 工作量:3分
    • 创新点:5分

    🧿 选题指导, 项目分享:

    https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md

    1 课题背景

    得益于深度学习技术的飞速发展,基于深度学习的目标检测算法研究成为近几年研究的热门方向。
    本项目基于Yolov5算法实现图像视频足球和人检测。

    2 实现效果

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

    3 卷积神经网络

    卷积神经网络(CNN)是一种包含卷积运算的深层前馈神经网络。传统的神经网络每个神经元权重连接上层的所有神经元,所以会出现大量权重值,增加整个网络的数据量和复杂程度。CNN则具有两个重要特征则是“局部感知”和“权值共享”,可有效提取数据的特征同时降低权值数量。完整的卷积网络通常包括卷积层、池化层、全连接层和输出层。
    卷积神经网络的运行流程就是在卷积层进行特征提取,池化层进行进一步特征概括,最终通过全连接层进行分类的过程,流程见下图。根据数据的特征不同,卷积网络需要构建不同深度的网络结构,越复杂的数据越需要丰富的网络堆叠方式来提取数据的多层特征。

    在这里插入图片描述

    卷积层的提取数据特征的作用方式是通过卷积运算,使相同的卷积核根据固定的步长遍历数据。卷积核每遍历一个位置就和前一层中的神经元执行卷积运算,它是将矩阵中相同位置的元素直接相乘,然后求和的过程。在一维卷积神经网络中按照这个运算逻辑将卷积核矩阵根据步幅值继续向右滑动,直到覆盖整个输入矩阵,如图。

    在这里插入图片描述

    最后,得到卷积后的特征矩阵。在卷积层,输入由一组卷积核卷积得到新的特征映射经过激活函数处理传递至下一层。

    池化层实现的功能则是对输入数据的降维和抽象,通过在空间范围内做维度约减,使模型可以抽取更广范围的特征,同时减少计算量和参数个数。池化采样主要分为两种方法:平均池化采样和最大池化采样。本文采用的是最大池化。池化过程如图。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OLAWidxU-1659541083528)(D:\CSDN_Articles\文章素材\CNN卷积神经网络\3_3.jpg)]

    最终卷积层和池化层提取的所有特征,在全连接层中以非线性地拟合输入数据用于分类。

    4 Yolov5算法

    简介
    下图所示为 YOLOv5 的网络结构图,分为输入端,Backbone,Neck 和 Prediction 四个部分。其中,
    输入端包括 Mosaic 数据增强、自适应图片缩放、自适应锚框计算,Backbone 包括 Focus 结构、CSP
    结 构,Neck 包 括 FPN+PAN 结 构,Prediction 包 括GIOU_Loss 结构。
    在这里插入图片描述
    相关代码

    class Yolo(object):
        def __init__(self, weights_file, verbose=True):
            self.verbose = verbose
            # detection params
            self.S = 7  # cell size
            self.B = 2  # boxes_per_cell
            self.classes = ["aeroplane", "bicycle", "bird", "boat", "bottle",
                            "bus", "car", "cat", "chair", "cow", "diningtable",
                            "dog", "horse", "motorbike", "person", "pottedplant",
                            "sheep", "sofa", "train","tvmonitor"]
            self.C = len(self.classes) # number of classes
            # offset for box center (top left point of each cell)
            self.x_offset = np.transpose(np.reshape(np.array([np.arange(self.S)]*self.S*self.B),
                                                  [self.B, self.S, self.S]), [1, 2, 0])
            self.y_offset = np.transpose(self.x_offset, [1, 0, 2])
    
            self.threshold = 0.2  # confidence scores threhold
            self.iou_threshold = 0.4
            #  the maximum number of boxes to be selected by non max suppression
            self.max_output_size = 10
    
            self.sess = tf.Session()
            self._build_net()
            self._build_detector()
            self._load_weights(weights_file)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    5 数据集

    数据集包含4000多张标注过的球员与足球
    在这里插入图片描述

    6 最后

  • 相关阅读:
    设计模式原则——接口隔离原则
    Linux---Socket
    Python学习基础笔记十九——装饰器
    最新AI创作系统ChatGPT源码+详细搭建部署教程,支持AI绘画/支持OpenAI-GPT全模型+国内AI全模型
    kubernetes(K8S)学习笔记P2:搭建K8s集群2种方式
    python基本操作
    svelte初探-中
    Cholesterol-PEG-Maleimide|胆固醇-聚乙二醇-马来酰亚胺修饰蛋白用
    CompletableFuture异步回调
    Argo CD 保姆级入门教程
  • 原文地址:https://blog.csdn.net/HUXINY/article/details/126656981