YOLO算法学习总结

    之前在吴恩达的课程上接触到了YOLO的原理及简单实现,上一周对YOLO算法进行了学习,现将个人的学习心得及学习结果记录如下。

1.YOLO简介:

    人类视觉系统快速且精准,只需瞄一眼(You Only Look Once)即可识别图像中物品及其位置。作者用了You Only Look Once的首字母YOLO来表示其算法,相当有趣。YOLO为一种新的目标检测方法,该方法的特点是实现快速检测的同时还达到较高的准确率。作者将目标检测任务看作目标区域预测和类别预测的回归问题。该方法采用单个神经网络直接预测物品边界和类别概率,实现端到端(end to end)的物品检测。同时,该方法检测速非常快,基础版可以达到45帧/s的实时检测;FastYOLO可以达到155帧/s。与当前最好系统相比,YOLO目标区域定位误差更大,但是背景预测的准确性优于当前最好的方法。

YOLO的网络结构:模型采用卷积神经网络结构。开始的卷积层提取图像特征,全连接层预测输出概率。模型结构类似于GoogleNet,如图3所示。作者还训练了YOLO的快速版本(fast YOLO)。Fast YOLO模型卷积层和filter更少。最终输出为7×7×30的tensor。


2.参考源码及运行环境:

这里用到的YOLO算法的实现代码源于https://github.com/hizhangp/yolo_tensorflow

运行环境:Windows+显卡MX150+python3.6.5+tensorflow1.8

3.项目详解:

最近被安利了一个好用的IDE——Pycharm,先用他看看我们的项目文件结构:


  在作者贴出的链接处下载权重文件,两次解压后得到YOLO_small.ckpt的权重文件,放到weights文件夹中,完成准备工作。由于本人笔记本的渣渣配置,用CPU或者MX150进行训练的过程会非常地长,故直接跳过train的过程,直接运行test.py。准备工作和运行过程出现了若干错误,在baidu的帮助下一一解决了。

下面看看运行结果:

首先是作者给出的两张照片:


and

可以看到,算法能够较准确地检测出真实图片的人物或者动物;突发奇想测试一下动漫人物:


可以看到,虽然也能识别,但是效果不如刚才。对作者的代码稍加改动,看看算法对摄像头实时检测的效果:


由于显卡性能问题,无法做到实时检测,每秒只有2.5帧。


4.代码分析:

  1. config.py 这部分程序主要是用来定义网络中的一些整体结构参数
  2. yolo_net.py 这部分的主要作用是利用 cfg 文件对网络参数进行初始化,计算 Loss,计算两个 bounding box 之间的 IoU,实现了 yolo 网络模型的构成,可以清楚的看到网络的组成,而且为了使程序更加简洁,构建网络使用的是 TensorFlow 中的 slim 模块。
  3. train.py 这部分代码主要实现的是对已经构建好的网络和损失函数利用数据进行训练,在训练过程中,对变量采用了指数平均数(exponential moving average (EMA))来提高整体的训练性能。同时,为了获得比较好的学习性能,对学习速率同向进行了指数衰减,使用了 exponential_decay 函数来实现这个功能。
  4. test.py 这部分的主要内容就是利用训练好的权重进行预测,得到预测输出后利用 OpenCV 的相关函数进行画框等操作。同时,还可以利用 OpenCV 进行视频处理,使程序能够实时地对视频流进行检测。

5.At Last

yolo_v1 虽然已经能够对物体进行实时检测,但是整体上来说,检测的效果并不是特别好,检测的类别也比较少,针对这些问题,作者之后还提出了 yolo_v2,以此来对这些问题进行改进。这周的总结就到这里,下周计划是FCN网络。

  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
YOLO算法是一种用于对象检测的深度学习算法。它的全称是You Only Look Once,意思是只需要一次前向传播就可以完成整个对象检测过程。相比于传统的基于区域的方法,YOLO算法具有更快的检测速度。然而,由于每个网格预测的边界框数量有限,当一个网格内出现多个物体时,YOLO算法只能预测出IOU最高的物体,导致对小目标物体的检测效果不好,容易发生漏检现象。此外,YOLO模型的尾部采用全连接层,导致模型的参数量多、计算量大。\[1\] YOLO系列算法在人工智能领域非常常见,它提供了许多实用的技巧和思路,可以帮助解决论文找不到创新点、实际项目没有提升思路的问题。掌握YOLO系列算法的基础知识,并结合自己的扩展和总结理解,可以清晰地表达观点、形成共鸣和讨论,从而在人工智能领域获得更好的认可和记忆。\[2\] 总的来说,YOLO框架是一种以不同方式处理对象检测的算法,它将整个图像放在一个实例中,并预测边界框的坐标和所属类别概率。YOLO算法的最大优点是速度极快,每秒可处理大量帧,并且能够理解一般的对象表示。\[3\] #### 引用[.reference_title] - *1* *3* [Yolo目标检测算法属于深度学习吗?yolo算法是什么?](https://blog.csdn.net/gu1857035894/article/details/125073851)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [深度学习目标检测YOLO算法,带你快速了解](https://blog.csdn.net/weixin_43802971/article/details/129332745)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值