计算机视觉笔试选择题:题组1
题目(共8小题)
1. (单选)在工业质检场景中,需检测微小缺陷(如芯片划痕)。使用YOLOv7时发现小目标漏检率高,编程优化时应优先调整哪个参数?
A. 降低学习率
B. 减少卷积层深度
C. 增加输入图像尺寸
D. 提高loU阈值
2. (单选)使用OpenCV处理H.264视频流时,硬件解码后出现绿屏的原因是
A. 硬件不支持YUV420P格式
B. 解码器未启用GPU加速
C. 色彩空间转换错误
D. 码流I帧丢失
3. (多选)在卷积神经网络中,以下哪些操作可以减小特征图尺寸?
A. 1*1卷积(stride=1)
B. Dilated Convolution
C. MaxPooling(kernel=2)
D. 3*3卷积(stride=2)
4. (单选)在智能安防系统中,需要实时检测多目标并平衡准确性,哪个深度学习模型最适合边缘计算场景?
A. Faster R-CNN
B. BERT
C. YOLOv5
D. ResNet-50
5. (单选)关于OpenCV的仿射变换函数warpAffine,错误的说法是
A. 旋转变换需配合 cv2.getRotationMatrix2D 生成变换矩阵
B. 透视变换是仿射变换的特例
C. 平移变换可通过矩阵 [[1,0,dx],[0,1,dy]] 实现
D. 仿射变换保持直线平行性,但不保持长度和角度
6. (单选)识别教育试卷中的手写数学公式时,为保留语义结构,最佳识别方案是
A. 分离符号检测与规则重组
B. 端到端Transformer+LaTeX生成
C. CRNN(CNN+RNN+CTC)
D. 基于YOLO的符号定位+OCR
7. (单选)关于卷积神经网络(CNN)的感受野,以下说法正确的是
A. 感受野与输入图像分辨率成正比
B. 堆叠3*3卷积核比直接使用7*7卷积核的感受野更小
C. 空洞卷积(Dilated Convolution)可以增大感受野而不增加参数量
D. 池化层会减小感受野
8. (单选)部署Mask R-CNN模型到嵌入式设备时出现内存溢出,在不显著降低精度的前提下,首选的轻量化改造方案是
A. 使用半精度(FP16)推理
B. 减少RPN候选框数量
C. 替换Backbone为MobileNetV3
D. 裁剪模型输出头
解答
1.【答案】C
【解析】问题核心:小目标(如芯片划痕)漏检率高,通常是因为小目标在原始图像中占据的像素很少,经过多层卷积下采样后,其特征信息在特征图上可能丢失或变得难以识别。
选项分析:
A 降低学习率:主要影响模型训练的收敛速度和稳定性,与解决特征丢失问题关系不大,不是优先选项。
B 减少卷积层深度:这会削弱模型的特征提取能力,虽然可能减少下采样次数,但会严重影响模型整体性能,得不偿失。
C 增加输入图像尺寸:这是最直接有效的办法。增大输入尺寸可以使小目标在输入网络时包含更多的像素,从而在经过下采样后,仍然能在特征图上保留足够的信息以供检测,直接针对了小目标漏检的根源。
D 提高IoU阈值:这会提高预测框与真实框之间的匹配标准,使检测标准更严格,可能会进一步增加漏检(尤其是对于本就难以检测的小目标),而不是降低漏检率。
结论:在YOLO等目标检测算法中,增大输入图像尺寸是公认的提升小目标检测精度最有效的手段之一。因此,编程优化时应优先调整此参数。
2.【答案】C
【解析】绿屏现象通常与视频解码后的色彩空间处理错误相关。H.264视频流通常使用YUV色彩空间(如YUV420P),而OpenCV在处理视频帧时默认期望BGR格式用于显示或处理。如果硬件解码后没有正确进行色彩空间转换(例如从YUV到BGR),会导致颜色失真,出现绿屏。
选项A:硬件不支持YUV420P格式的可能性较低,因为YUV420P是H.264标准的常见格式,大多数现代硬件解码器都支持。
选项B:解码器未启用GPU加速可能导致性能下降,但不会直接引起绿屏;它可能造成卡顿或延迟,但不是根本原因。
选项C:色彩空间转换错误是常见原因。OpenCV中,如果使用
cv2.VideoCapture
读取视频流时没有正确设置色彩转换参数(如使用cv2.CAP_PROP_FORMAT
或后处理转换),就容易出现绿屏。选项D:码流I帧丢失会导致解码错误或花屏,但通常表现为马赛克或 artifacts,而不是单一的绿屏。绿屏更特定于颜色数据问题。
因此,在OpenCV处理H.264视频流时,硬件解码后绿屏的根本原因是色彩空间转换错误。建议检查代码中的色彩转换步骤,确保使用cv2.cvtColor
正确转换YUV帧到BGR。
3.【答案】CD
【解析】题目问的是“哪些操作可以减小特征图尺寸”。在卷积神经网络中,特征图尺寸的减小通常通过下采样(downsampling)操作实现,如池化或卷积步长(stride)大于1。
选项A: 1x1卷积(stride=1)
1x1卷积主要用于改变通道数,但stride=1时,不会改变特征图的宽度和高度。因此,它不能减小特征图尺寸。
选项B: Dilated Convolution
空洞卷积(Dilated Convolution)通过扩大感受野来捕获更多上下文信息,但通常默认stride=1,因此不会减小特征图尺寸。它可能保持尺寸不变或甚至增大(如果处理不当),但一般不会减小。
选项C: MaxPooling(kernel=2)
最大池化(MaxPooling)是一种下采样操作。当kernel=2时,通常stride也默认为2,这将使特征图尺寸减半(例如,从H×W变为H/2×W/2)。因此,它可以减小特征图尺寸。
选项D: 3x3卷积(stride=2)
卷积操作中,如果stride=2,则输出特征图尺寸会减小。对于3x3卷积,stride=2时,尺寸会大致减半(具体取决于padding方式)。因此,它可以减小特征图尺寸。
4.【答案】C
【解析】
A. Faster R-CNN:这是一个两阶段目标检测模型,虽然准确性较高,但计算复杂度大、推理速度慢,不适合实时应用和边缘设备。
B. BERT:这是一个自然语言处理(NLP)模型,专注于文本理解,无法用于图像目标检测任务,因此不相关。
C. YOLOv5:这是一个单阶段目标检测模型,以其高速度和良好的准确性著称。YOLOv5优化了模型架构和推理效率,非常适合实时多目标检测,并且在边缘设备上部署时有较好的性能平衡,是智能安防系统的理想选择。
D. ResNet-50:这是一个深度卷积神经网络,主要用于图像分类,而非目标检测。它可能作为其他检测模型的主干网络,但本身不具备检测能力,因此不适合直接用于此场景。
因此,最适合的模型是 C. YOLOv5。
5.【答案】B
【解析】
选项A:旋转变换需配合
cv2.getRotationMatrix2D
生成变换矩阵。这是正确的,因为cv2.getRotationMatrix2D
是OpenCV中专门用于生成旋转变换矩阵的函数,然后通过warpAffine
应用该矩阵。选项B:透视变换是仿射变换的特例。这是错误的。实际上,仿射变换是透视变换的特例(或子集)。仿射变换保持直线平行性,而透视变换(使用
warpPerspective
)允许更复杂的变形,如消失点,不保持平行性。因此,透视变换不是仿射变换的特例。选项C:平移变换可通过矩阵
[[1,0,dx],[0,1,dy]]
实现。这是正确的,这个矩阵正是仿射变换中用于平移的标准矩阵。选项D:仿射变换保持直线平行性,但不保持长度和角度。这是正确的,因为仿射变换包括缩放、剪切等操作,会改变长度和角度,但平行线仍保持平行。
因此,错误的说法是选项B。
6.【答案】B
【解析】根据题目要求,识别手写数学公式时需要保留语义结构(如上下标、分数、根号等二维关系),最佳方案应能直接捕获公式的整体布局和语法关系。以下是对各选项的分析:
A. 分离符号检测与规则重组:这种方法先检测单个符号,然后通过预定义规则组合。但数学公式结构复杂,规则可能无法覆盖所有情况,容易丢失语义关系,且对变形手写适应性差。
B. 端到端Transformer+LaTeX生成:Transformer模型能直接处理序列数据,并利用自注意力机制捕获符号间的远程依赖和空间关系。生成LaTeX输出可以精确表示公式的语义结构(如\frac{}{}、^{}等),端到端训练减少了误差累积,是目前最先进和有效的方法。
C. CRNN (CNN+RNN+CTC):CRNN适用于线性文本识别,但数学公式是二维结构,CRNN难以处理空间关系(如上下标重叠),CTC输出可能混淆语义顺序。
D. 基于YOLO的符号定位+OCR:YOLO用于符号检测,OCR识别单个符号,但同样无法有效捕获公式的整体语法结构,组合后易出现语义错误。
因此,B. 端到端Transformer+LaTeX生成是最佳方案,它能更好地保留语义结构,并已在多项研究中得到验证(如MathBERT、Im2LaTeX等)。
7.【答案】C
【解析】
选项A:感受野与输入图像分辨率成正比
感受野是CNN中神经元所对应的输入图像上的区域大小,它主要由网络结构(如卷积核大小、步长、层数)决定,而与输入图像分辨率无关。输入分辨率的变化不会改变感受野的绝对大小(以像素为单位),只会影响感受野的相对覆盖范围。因此,该说法错误。
选项B:堆叠3x3卷积核比直接使用7x7卷积核的感受野更小
堆叠多个3x3卷积核可以等效于更大的卷积核。例如,两个3x3卷积核堆叠的感受野相当于5x5,三个3x3卷积核堆叠的感受野相当于7x7。因此,堆叠3x3卷积核的感受野通常与直接使用7x7卷积核相同或更大,而不会更小。该说法错误。
选项C:空洞卷积(Dilated Convolution)可以增大感受野而不增加参数量
空洞卷积通过引入膨胀率(dilation rate)来扩大卷积核的感受野,而不增加参数数量。例如,膨胀率为2的3x3卷积核,其感受野相当于5x5卷积核,但参数数量仍为3x3的9个参数。这使它在保持计算效率的同时增加感受野。该说法正确。
选项D:池化层会减小感受野
池化层(如最大池化或平均池化)会减小特征图的尺寸,但会增大感受野。因为池化操作降低了空间分辨率,使每个神经元对应的输入区域变大。例如,2x2池化步长为2,感受野会加倍。因此,池化层不会减小感受野,而是增大它。该说法错误。
正确答案是选项C。空洞卷积是一种有效增大感受野的方法,且不增加参数量,常用于改进CNN性能。
8.【答案】C
【解析】
问题分析:
内存溢出原因:Mask R-CNN是一种计算密集型模型,尤其主干网络(Backbone)通常基于ResNet等大型架构,参数量和计算量较大,导致在嵌入式设备上内存不足。
轻量化目标:需要减少内存占用,同时保持精度不显著下降。
选项评估:
A. 使用半精度(FP16)推理:这将模型参数和计算从32位浮点(FP32)转换为16位浮点(FP16),可减少内存使用约50%,且通常对精度影响较小。但嵌入式设备可能不完全支持FP16加速,且如果模型本身过大,可能不足以彻底解决内存溢出问题。这是一种辅助措施,而非首选。
B. 减少RPN候选框数量:区域提议网络(RPN)生成候选区域,减少数量会降低计算量和内存,但可能显著降低检测召回率(尤其是小目标或密集目标),从而影响精度。因此,不符合“不显著降低精度”的要求。
C. 替换Backbone为MobileNetV3:MobileNetV3是专为移动和嵌入式设备设计的轻量级主干网络,参数量和计算量远小于ResNet等标准Backbone。通过替换,可以大幅减少内存占用(通常减少60-70%),且通过微调训练,精度损失较小。这是Mask R-CNN轻量化的常见做法,符合首选方案。
D. 裁剪模型输出头:输出头负责分类和掩码生成,裁剪可能减少少量参数,但内存节省有限,且会直接降低模型表达能力,导致精度显著下降。因此,不推荐。
替换Backbone为MobileNetV3(选项C)是最均衡的方案,能有效解决内存溢出问题,同时通过微调保持精度。在实际部署中,这也是一种标准轻量化策略。