华为云暑期实习面试(软件算法)之解答
原帖:https://www.nowcoder.com/feed/main/detail/b6011f7ef29b419fb939c61e5738f634
3.除了提到的上采样还有什么方法可以应对数据不平衡:
4.YOLO每个版本的变化是什么:以前看过,随便讲了讲先验框和backbone的变化。
YOLO 意思是 You Only Look Once,创造性的将候选区和对象识别这两个阶段合二为一,看一眼图片(不用看两眼哦)就能知道有哪些对象以及它们的位置。YOLO 将图片划分为 7x7=49 个网格(grid),每个网格允许预测出 2 个边框(bounding box,包含某个对象的矩形框),总共 49x2=98 个 bounding box。可以理解为 98 个候选区,它们很粗略的覆盖了图片的整个区域。
创新点:1. 将整张图作为网络的输入,直接在输出层回归 bounding box 的位置和所属的类别。2. 速度快,one stage detection 的开山之作。
YOLOv2 相对 v1 版本,在继续保持处理速度的基础上,从预测更准确(Better),速度更快(Faster),识别对象更多(Stronger)这三个方面进行了改进。其中识别更多对象也就是扩展到能够检测 9000 种不同对象,称之为 YOLO9000。YOLOv2 主要就是加入了很多新技术,如 BN、WordTree,不再赘述。最主要的是引入了 Faster R-CNN 中使用的 **Anchor**,作者通过在所有训练图像的所有边界框上运行 k-means 聚类来选择锚的个数和形状(k = 5,因此它找到五个最常见的目标形状)
- Yolov3 backbone 部分由 Yolov2 时期的 Darknet-19 进化至 Darknet-53,加深了网络层数,引入了 Resnet 中的跨层加和操作。
- Yolov3 借鉴了金字塔特征图思想,小尺寸特征图用于检测大尺寸物体,而大尺寸特征图检测小尺寸物体。
- 针对 anchor box 采用聚类的方法获取合适的尺寸。
Yolov3 的整个网络,吸取了 Resnet、Densenet、FPN 的精髓,可以说是融合了目标检测当前业界最有效的全部技巧。
YOLOv4是YOLO系列目标检测算法的一次改进,相比于之前的版本,YOLOv4引入了许多改进点,包括:
- 骨干网络改进:YOLOv4采用了CSPDarknet53作为新的骨干网络,相比于之前的Darknet,CSPDarknet在准确性和速度上都有所提升。
- 特征金字塔网络:YOLOv4引入了特征金字塔网络(FPN),用于在不同尺度上提取特征并融合,使得算法可以更好地处理不同大小的目标。
- PANet结构:为了进一步增强多尺度特征的融合,YOLOv4引入了PANet结构,通过自顶向下和自底向上的方式进行特征融合,提升了目标检测的准确性。
- 更强的数据增强策略:YOLOv4采用了一系列更强大的数据增强策略,包括CutMix、Mosaic等,以增加模型的鲁棒性和泛化能力。
- 新的损失函数:YOLOv4使用了改进的损失函数,如CIoU损失函数和Focal损失函数,可以更好地处理目标的回归和分类问题,提高检测性能。
后续YOLO无非就是trick的堆叠,不再赘述。
5.除了yolo还有什么目标检测模型:rcnn那一类的,rcnn是两阶段,yolo是一阶段
目标检测可以分为两种类型:“两阶段(Two-stage)检测方法”和“单阶段(One-stage)检测方法”,前者将检测定义为“从粗到精”的过程,而后者将检测定义为“一步走”的过程。如**基于两阶段的SPPNet、Fast RCNN、Faster RCNN,这些算法首先生成图像中目标物体的建议候选区域,其次再对候选区域做进一步的分类和坐标框回归,得出最后的目标检测结果**;而基于单阶段的YOLO、SSD和RetinaNet等,**这些算法直接通过回归的方式进行图像中目标物体的检测**,即分类和回归同时进行。
两阶段检测精度高但速度慢;单阶段检测精度稍低但速度快,one-stage算法对小目标检测效果较差。
6.目标检测和分割的loss有什么区别:检测的loss是cls loss和bboxloss ,分割的loss不太清楚
在目标检测中,常用的损失函数包括:
- 边界框回归损失:用于预测目标边界框的位置和尺寸,常用的损失函数包括平均平方误差(MSE)损失或平滑L1损失。
- 分类损失:用于预测目标的类别,常用的损失函数包括交叉熵损失(Cross-Entropy)或者逻辑损失(Logistic Loss)。
- 目标置信度损失:用于判断目标是否存在,通常使用二分类损失函数,如交叉熵损失或者逻辑损失。
在分割任务中,常用的损失函数包括:
- 像素级分类损失:用于对每个像素进行分类,常用的损失函数是交叉熵损失或者softmax损失。
- 像素级回归损失:用于预测每个像素的特定属性,如目标的边界框或者关键点位置,常用的损失函数包括平均平方误差(MSE)损失或平滑L1损失。
总体而言,目标检测的损失函数更侧重于目标的定位和分类,而分割的损失函数则更注重像素级的分类和预测。
以上面经答案均来自本人机器学习面经专栏,感兴趣的同学可以关注牛客专栏 机器学习面试题汇总与解析+蒋豆芽
包含300多道面试题,讲解+答案。
#机器学习面试#这个专栏专门用于为牛友解答面经,希望能帮助到大家。