极本穷源:YOLO篇Ⅰ

本文最后更新于:2022年2月15日 上午

极本穷源:YOLO篇Ⅰ

  • 总听到神经网络
    • 什么是神经网络? 1.1.1 什么是神经网络 - 床长人工智能教程 (captainbed.net)
      • 人工神经网络是受到人类大脑结构的启发而创造出来的,这也是它能拥有真智能的根本原因。在我们的大脑中,有数十亿个称为神经元的细胞,它们连接成了一个神经网络。
      • 层数越多那么构造的神经网络就越复杂,训练深度神经网络的过程就叫做深度学习
    • AI”炼丹”是啥
      • 深度学习就像炼丹,没啥理论,纯靠实验,要有很多比较好的显卡等设备,动不动就要训练好几天的数据模型。
    • 这段时间在学习YOLO算法,相信很多小伙伴和我一样,机器学习深度学习,傻傻分不清楚。
    • 遇到这种情况怎么说,旋即打开浏览器搜索“机器学习”,wdnmd,“学习”居然分了这么多的类:机器学习、监督学习、非监督学习、强化学习、迁移学习、深度学习(DNN、CNN、RNN、LSTM、GAN)。脑瓜子嗡嗡的,这种感觉就像…“马肾么妹,马冬梅啊,大爷!”。世上无难事,只要肯放弃。从入门到放弃只需轻轻一点,关闭浏览器冷静一下。
    • 重新来会会这些“牛鬼蛇神”,一张图了解下它们的关系
      • 传统机器学习的模型结构
        • 线性回归
        • 逻辑回归
        • 决策树
        • 支持向量机
        • 贝叶斯模型
        • 正则化模型
        • 集成模型
        • 神经网络
      • 机器学习
        • 监督学习
        • 非监督学习
        • 强化学习
        • 迁移学习
        • 深度学习
      • 千呼万唤始出来,“YOLO”与机器学习的关系可谓是千丝万缕。
      • 语义分割与实例分割
      • 图像分类、目标检测、语义分割、实例分割和全景分割的区别
        • 全景分割 (全景分割是语义分割和实例分割的结合。跟实例分割不同的是:实例分割只对图像中的object进行检测,并对检测到的object进行分割,而全景分割是对图中的所有物体包括背景都要进行检测和分割。)
          • 语义分割 通常意义上的目标分割指的就是语义分割 语义分割(下图左)就是需要区分到图中每一点像素点,而不仅仅是矩形框框住了。但是同一物体的不同实例不需要单独分割出来。对下图左,标注为人,羊,狗,草地。而不需要羊1,羊2,羊3,羊4,羊5等。
          • 实例分割 实例分割:其实就是目标检测和语义分割的结合。相对目标检测的边界框,实例分割可精确到物体的边缘;相对语义分割,实例分割需要标注出图上同一物体的不同个体(羊1,羊2,羊3…) 目前常用的实例分割算法是Mask R-CNN。
            • 目标检测 目前常用的目标检测算法有Faster R-CNN和基于YOLO的目标检测的算法
            • 图像分类 图像分类:就是对图像判断出所属的分类,比如在学习分类中数据集有人(person)、羊(sheep)、狗(dog)和猫(cat)四种,图像分类要求给定一个图片输出图片里含有哪些分类,比如下图的例子是含有person、sheep和dog三种。
    • 揭开“YOLO”的神秘面纱
    • 从2018年Yolov3年提出的两年后,在原作者声名放弃更新Yolo算法后,俄罗斯的Alexey大神扛起了Yolov4的大旗,然后不久又出现了Yolov5,而到了2021年,就在大家质疑Yolo系列该如何改进时?旷视科技又发布了Yolox算法,感兴趣的可以参考这篇博客了解。
    • 2020年2月份YOLO之父Joseph Redmon宣布退出计算机视觉的研究的时候,很多人都以为目标检测神器YOLO系列就此终结。
    • 没想到的是, 2020年4月份曾经参与YOLO项目维护Alexey Bochkovskiy带着论文《Optimal Speed and Accuracy of Object Detection》和代码在Github上重磅开源!YOLOv4正式发布!
    • 令我们更没想到的是!!!2020年6月份,短短两个月!Ultralytics LLC 公司的创始人兼 CEO Glenn Jocher 在 GitHub 上发布了 YOLOv5 的一个开源实现,标志着YOLOv5的到来!
  • 现如今的YOLO算法在各位大佬的神奇改造下,在保持算法准确性的前提下轻量化网络模型,使其能够部署到像树莓派、RK3399等低算力的设备上并得到比较不错的检测速度与准度。
  • 那么这些大佬们平时在自己的岗位上都需要干些啥呢?
    • 1.基于提出需求设计组合算法即策略解决问题,不限于深度学习,传统视觉,算法策略,大部分需求都是组合算法解决的,例如检测分类姿态等多模态模型组合并配合一些传统算法解决问题(pytorch/caffe opencv)
    • 2.训练数据采集方案的设计,标注规则的指定以及数据审核
    • 3.快速实现算法demo并验证算法逻辑策略部分以及评估自测(Python)
    • 4.模型实际部署平台的性能资源占用和效率评估,评估ok走下一步,否则返回3步骤针对优化验证,
    • 4.基于c/c++完成算法sdk库开发,其中涉及到模型多平台移植部署(涉及到后端nn推理框架的选用,前后处理部分代码的编写),代码高性能优化(simd cuda openc,openmpl…)
    • 5.算法库文档编写,外发sdk库 (…..算法岗不是调参侠)机器学习算法工程师都要干些啥
  • 那么YOLO是如何实现目标的识别检测?下一篇接着总结!

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!