计算机视觉面试题整理

1、介绍目标检测网络yolo系列以及ssd系列的原理,yolo对小目标检测不好的原因,除了缩小anchor外还可以如何改善?

  • Yolo目标检测:YOLO是一种实时目标检测算法,其核心思想是将目标检测问题归为一个回归问题,直接从输入图像中预测目标的类别和位置,YOLO的主要特点有①单次前向传播(one-stage):YOLO只需一次前向传播来完成整个目标检测任务,而不需要复杂的多次处理。②分割网格:输入图像被分割成固定数量的网格单元,每个网格单元负责预测其中包含的物体的位置和类别。③多尺度预测:YOLO使用多尺度锚框来处理不同尺寸和长宽比的物体,这有助于提高检测性能。④损失函数:YOLO使用多部分损失函数来衡量分类误差和定位误差,同时鼓励模型预测物体的边界框,以准确地定位物体。⑤实时性能:YOLO因其单次前向传播和高效的设计而在实时目标检测任务中表现出色。
  • SSD(Single Shot MultiBox Detector):与YOLO不同,SSD采用一种多层次的特征提取方法,以便处理不同尺寸的物体。①多层次特征提取:SSD使用多个卷积层来提取图像的特征,并在不同层次上进行目标检测。②锚框:SSD使用锚框来预测不同尺寸和长宽比的物体,每个锚框都与特定的位置和尺寸相关联,模型根据这些锚框来预测物体的位置和类别。③损失函数:类似于YOLO,SSD使用多部分损失函数来衡量分类误差和定位误差,以优化模型的性能。④效率:SSD在速度和准确性之间取得了很好的平衡,虽然它可能不如某些YOLO版本那么快,但在检测精度上表现出现。
  • YOLO对小目标检测不好的原因:因为其设计初衷是为了检测相对较大的目标。可以采用的方法有:①增加输入图像的分辨率通常有助于提高小目标的检测性能。②YOLO可以通过在不同尺度下进行目标检测来改善小目标的检测性能。③使用特征金字塔可以改善小目标检测。④引入注意力机制可以帮助网络更关注小目标④使用数据增强技术,如随机裁剪、缩放、旋转等,可以生成更多的小目标样本,以帮助网络学习如何识别和定位小目标。⑤设置更小更稠密的anchor。⑥积神经网络设计时尽量度采用步长为1,尽可能保留多的目标特征。

2、样本中正负样本不平衡,如何解决?

  • 使用类平衡交叉熵损失函数
  • 对小样本做数据增广
  • 重采样(过采样,增加少数类样本数量;欠采样,减少多数类样本数量)
  • 权重调整,修改损失函数,赋予不同类别样本不同权重。

3、简单介绍下支持向量机SVM的原理。

支持向量机是一种二分类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。

4、哪些机器学习算法不需要做归一化处理?

  • 需要归一化的模型:基于距离计算的模型:KNN、通过梯度下降求解的模型(线性回归、逻辑回归、支持向量机、神经网络)
  • 树形模型不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率。如决策树、随机森林。

5、为什么树形结构不需要归一化?

因为数值缩放不影响分裂点位置,对树模型的结构不造成影响。按照特征值进行排序的,排序的顺序不变,那么所属的分支以及分裂点就不会有不同。而且树模型不能进行梯度下降,因为构建树模型(回归树)寻找最优点时是通过寻找最优分裂点完成的,因此树模型是阶跃的,阶跃点是不可导的,并且求导没意义,也就不需要归一化。

6、在k-means或KNN,我们常用欧氏距离来计算最近的邻居之间的距离,有时也用曼哈顿距离,请对比下这两种距离的差别。

  • 欧式距离:是最常见的距离度量方法,也被称为直线距离。它计算两点之间的距离,就像你在二维平面上使用的直线距离一样。欧氏距离考虑了各维度上的差异性,因此更适用于各维度特征的尺度相似的情况。
  • 曼哈顿距离:是沿着坐标轴的垂直线段的长度之和,因此也被称为城市街区距离。它计算两点之间的距离,就像你在城市中行走沿街道走的距离一样。曼哈顿距离更适合于考虑了各维度特征的尺度不同的情况,因为它在各维度上是独立计算的。 
  • 总结比较:①欧氏距离通常在各维度上的尺度相似时表现较好,因为它考虑了各维度之间的差异性。②曼哈顿距离更适合在各维度上的尺度不同或者数据呈现明显的块状分布时,因为它不考虑各维度之间的差异,而只计算了坐标轴上的距离。③选择哪种距离度量方法通常取决于问题的性质和数据的特征。在某些情况下,你甚至可以尝试使用其他自定义的距离度量方法,以便更好地捕捉数据之间的相似性或差异性。

7、CNN在图像上表现好的原因

直接将图像数据作为输入,不仅无需人工对图像进行预处理和额外的特征抽取等复杂操作,而且以其特有的细粒度特征提取方式,使得对图像的处理达到了几近人力的水平。

8、参数和计算量的计算

卷积输入为W x H x C,卷积核K x K x N, 输出W1 x H1 x C1.

  • 计算量:W1 x H1 x C1 x K x K x C 
  • 参数:C1 x K x K x C

9、调参、修改模型的经验

  • 数据层面:获得更多的数据、数据扩增或生成、对数据进行归一化或标准化,重新进行特征选择。
  • 算法层面:对算法进行抽样调查。选取性能最好的算法,然后通过进一步的调参和数据准备来提升重采样方法。可以先在小数据集上完成模型选择和参数调优,然后再将最终的方法扩展到全部数据集上。
  • 调参:①诊断,在每个周期,评估模型在训练集和验证集上的表现,并作出图表;②权重初始化,尝试不同是初始化方法,考察是否有一种方法在其他情况不变的情况下效果更优;③学习率:尝试随周期递减的学习率或增加动量项;④激活函数:尝试常见的激活函数,并且重缩放你的数据以满足激活函数的边界;⑤Batchsize和周期。尝试不同的批次batchsize和周期数,batchsize大小会决定最后的梯度。以及更新权重的频度。⑥正则化:尝试不同的正则化方式,权重衰减(Weight decay) 去惩罚大的权重、激活约束(Activation constraint) 去惩罚大的激活值、分别在输入, 隐藏层和输出层中试验 dropout 方法或者使用L1、L2正则化。⑦优化算法和损失函数:尝试不同的优化算法(SGD、ADAM、RMSprop、、、)。要被优化的损失函数与你要解决的问题高度相关,也得适当调整。⑧早停,一旦训练过程中共出现验证集性能下降,你可以停止训练和学习,是避免模型在训练数据上过拟合的正则化方式。
  • 通过嵌套模型提高性能:通过组合多个“足够好”的模型来得到优秀的预测能力,而不是通过组合多个高度调参的(脆弱)的模型。

10、简述Inception v1-v4的区别和改进。

  • v1:①采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺寸特征的融合;②将CNN种常用的卷积(1x1,3x3,5x5)、池化操作(3x3)堆叠在一起(卷积、池化后的尺寸相同,将通道相加)一方面增加了网络的宽度,另一方面也增加了网络对尺寸的适应性;③为了减少计算量,增加了1x1卷积。
  • v2:①卷积分解,将单个5x5的卷积层用2个连续的3x3的卷积层组成的小网络来代替,在保持感受野范围的同时又减少了参数量,也加深了网络。②提出了著名的Batch Normalization (BN) 方法,BN会对每一个mini-batch数据的内部进行标准化,使输出规范到N(0,1)的正态分布,加快了网络的训练速度,增大了学习率③BN在某种意义上起到了正则化的左右,所以可以减少或者取消dropout,简化网络结构。v2在训练达到v1准确率时快了14倍,最后收敛的准确率也比v1高。
  • v3:①考虑了nx1卷积核,将一个较大的二维卷积拆成两个较小的一维卷积(7x7拆成了7x1和1x7,3x3拆成了1x3和3x1),一方面节约了大量参数,加速运算并减轻了过拟合),同时网络深度进一步增加,增加了网络的非线性。②优化了Inception Module的结构
  • v4:采用残差结构(Residual Connection)来改进v3结构

11、Inception v1中的inception结构怎么设计的?

  • 采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合。
  • 该结构将CNN中常用的卷积(1x1,3x3,5x5)、池化操作(3x3)堆叠在一起(卷积、池化后的尺寸相同,将通道相加),一方面增加了网络的宽度,另一方面也增加了网络对尺度的适应性。

  • 然而上面这个Inception原始版本,所有的卷积核都在上一层的所有输出上来做,而那个5x5的卷积核所需的计算量就太大了,约需要1.2亿次计算量,造成了特征图的厚度很大。
  • 为了避免这种情况,在3x3前、5x5前、max pooling后分别加上了1x1的卷积核,以起到了降低特征图厚度的作用,这也就形成了Inception v1的网络结构,如下图所示:

12、Inception为什么使用1x1卷积核?

  • 1x1卷积的主要目的是为了减少维度,还用于修正线性激活(relu),比如上一层的输出为100x100x128,经过具有256个通道的5x5卷积层之后 (stride=1,pad=2),输出数据为100x100x256,其中卷积层参数为128x5x5x256=819200。而假如上一层输出数据输出先经过具有32个通道的1x1卷积层,再经过具有256个输出的5x5卷积层,那么输出数据仍为100x100x256,但卷积参数量已经减少为128x1x1x32 + 32x5x5x256= 204800,大约减少了四倍。
  • 加深了网络的层次,同时增强了网络的非线性。

13、CNN网络的演变

  • LeNet:2个卷积+3个全连接,最早用于数字识别。
  • AlexNet:12年ImageNet冠军,5个卷积3个全连接,多个小卷积代替单一大卷积,使用使用ReLU激活函数,解决梯度小数问题;引入dropout避免模型过拟合;最大池化。
  • ZF-Net:13年ImageNet冠军,只用了一块 GPU 的稠密连接结构;将AlexNet第一层卷积核由11变成7,步长由4变为2。
  • VGG-Nets:14年ImageNet分类第二名,更深的网络,卷积层使用更小的filter尺寸和间隔;多个小卷积让网络有更多的非线性,更少的参数。
  • GoogLeNet:14年ImageNet分类第一名。引入Inception模块,采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合;采用了平均池化代替全连接层,避免梯度消失,网络额外增加了2个辅助的softmax用于向前传导梯度。
  • ResNet:引入残差单元,简化学习目标和难度,加快训练速度,模型加深时,不会产生退化问题;能够有效解决训练过程中梯度消失和梯度爆炸问题。
  • DenseNet:密集连接;加强特征传播,鼓励特征复用,极大的减少了参数量。

14、介绍CNN,每个层及作用

  • CNN的特征检测层通过训练数据进行学习,在使用CNNC时,避免了显式的特征提取,而隐式地从训练数据中进行学习,由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性。权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。
  • 卷积网络主要由卷积层、激活函数、池化层、全连接层组成。①卷积层:使用卷积核进行特征提取和特征映射;②激活函数(Activation):由于卷积也是一种线性运算,因此需要增加非线性映射;③池化层(Pool):对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征;④全连接层(FC):连接所有的特征,将输出值送给分类器。(先休息咯 再更

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/80715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git clone报错Failed to connect to github.com port 443 after 21055 ms:

git 设置代理端口号 git config --global http.proxy http://127.0.0.1:10085 和 git config --global https.proxy http://127.0.0.1:10085 然后就可以成功git clone hugging face的数据集了 如果是https://huggingface.co/datasets/shibing624/medical/tree/main 那么…

SqlServer在尝试加载程序集 ID 65917 时 Microsoft .NET Framework 出错。服务器可能资源不足,或者不信任该程序集

问题:在尝试加载程序集 ID 65917 时 Microsoft .NET Framework 出错。服务器可能资源不足,或者不信任该程序集,因为它的 PERMISSION_SET 设置为 EXTERNAL_ACCESS 或 UNSAFE。 检查数据库属性:检查服务器是否信任该程序集 解决方法…

Prometheus+Grafana可视化监控【Nginx状态】

文章目录 一、安装Docker二、安装Nginx(Docker容器方式)三、安装Prometheus四、安装Grafana五、Pronetheus和Grafana相关联六、安装nginx_exporter七、Grafana添加Nginx监控模板 一、安装Docker 注意:我这里使用之前写好脚本进行安装Docker,如果已经有D…

自动化测试、压力测试、持续集成

因为项目的原因,前段时间研究并使用了 SoapUI 测试工具进行自测开发的 api。下面将研究的成果展示给大家,希望对需要的人有所帮助。 SoapUI 是什么? SoapUI 是一个开源测试工具,通过 soap/http 来检查、调用、实现 Web Service 的…

Spring 篇

1、什么是 Spring? Spring是一个轻量级的IOC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。常见的配置方式有三种:基于XML的配置、基于注解的配置…

高速DSP系统设计参考指南(二)传输线(TL)效应

(二)传输线(TL)效应 1. 概述2. 传输线理论3. 并行终端仿真4. 传输线的目标阻抗5. TL仿真和实验结果对比5.1 无负载或源端接的传输线5.2 传输线源端串联 6. 接地网络对传输线的影响 1. 概述 传输线(TL)效应是高速 DSP 系统中噪声问…

如何修改jupyter notebook默认打开路径

1、用jupyter notebook在其他位置打开自己的ipython项目: jupyter notebook是一个很好用的工具,可以保存运行结果,还可以给项目添加很多可视化操作与介绍文字。安装anaconda后,jupyter notebook就会自动安装,点开它会…

three.js简单3D图形的使用

npm init vitelatest //创建一个vite的脚手架 选择 Vanilla 之后自己处理一下 在main.js中写入 // 导入three.js import * as THREE from three// 创建场景 const scene new THREE.Scene();// 创建相机 const camera new THREE.PerspectiveCamera(45, //视角window.inner…

MS SQL Server问题汇总

1.报SQL Server Agent连接不上的错误 15:38:57.991 [debezium-sqlserverconnector-sqlserver_transaction_log_source-change-event-source-coordinator] WARN i.d.connector.sqlserver.SqlServerStreamingChangeEventSource - No maximum LSN recorded in the database; pl…

使用VMware 16 安装银河麒麟V10 --九五小庞

1.下载 银河麒麟系统V10 服务版镜像包: Kylin-Server-10-SP1-Release-Build04-20200711-x86_64.iso 百度云盘链接:https://pan.baidu.com/s/1z0GCEadvefUA8R988qDP5Q 提取码:1l0g 2.运行VMware Workstation,创建新的虚拟机&…

(三十三)大数据实战——Canal安装部署及其应用案例实战

前言 Canal 是一个开源的MySQL数据库binlog监听和解析框架,用于实时捕获 MySQL数据库的binlog 变更事件,并将其解析成易于消费的数据格式。Canal 可以实时监听 MySQL 数据库的 binlog,并即时捕获数据库的数据变更事件。Canal可以将捕获到的b…

【CCF】第30次csp认证——202305-1重复局面

202305-1重复局面: 问题描述 国际象棋每一个局面可以用大小为 88 的字符数组来表示,其中每一位对应棋盘上的一个格子。六种棋子王、后、车、象、马、兵分别用字母 k、q、r、b、n、p 表示,其中大写字母对应白方、小写字母对应黑方。棋盘上无…

Acwing 829. 模拟队列

Acwing 829. 模拟队列 题目描述思路讲解代码展示 题目描述 思路讲解 队列是先进先出&#xff0c;类比排队买饭 代码展示 #include <iostream>using namespace std;const int N 100010;int m; int q[N], hh, tt -1;int main() {cin >> m;while (m -- ){string …

微信小程序——生命周期详解(代码解读)

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

[uni-app] iOS/Android端 禁止单个页面侧滑返回的处理记录

需要禁止部分页面侧滑返回 iOS端 popGesture 但是实测后, 其实设置popGesture:none 是无效的 真正可以用的是这个 disableSwipeBack android端 别的方案没有逐一尝试, 这边可以在需要禁止的页面的 onBackPress onBackPress() {// 禁止侧滑(但注意也会禁止导航返回,导航返…

华为云云耀云服务器L实例评测|评测使用

目录 一、云服务器的类型和功能 二&#xff0c;云服务器的优点 三&#xff0c;使用华为云耀云服务器使用 一、云服务器的类型和功能 企业可以从多种类型的云服务器中进行选择。三个主要模型包括&#xff1a; 公有云服务器&#xff1a;云服务器最常见的表达方式是虚拟机 (VM)&am…

进化算法、遗传编程和学习

一、说明 进化算法是一系列搜索算法&#xff0c;其灵感来自自然界&#xff08;达尔文主义&#xff09;进化过程。所有不同家庭成员的共同点是&#xff0c;通过应用受自然遗传学和自然选择启发的 算子&#xff0c;通过进化出最初 随机的候选解决方案群体来解决问题&#…

每日一博 - 闲聊Microservice Architecture

文章目录 概述图解小结 概述 典型微服务架构通常包括以下组件&#xff1a; 负载均衡器&#xff08;Load Balancer&#xff09;&#xff1a;用于将传入的流量分发到多个API网关实例以提高可用性。 内容分发网络&#xff08;CDN&#xff0c;Content Delivery Network&#xff0…

MFC中的类继承图的基本框架

一、类继承关系 从图中可知&#xff0c;在MFC中大多数的类都派生于CObject类&#xff0c;它的主要作用是为子类提供一些基本的功能&#xff0c;这些派生类构成了MFC应用程序的基本框架&#xff0c;它们各自的功能描述如表1所示。 派生类 功能描述 CCmdTarget 用于处理用户请…

Python list列表删除元素(4种方法)

在 Python列表中删除元素主要分为以下 3 种场景&#xff1a; 根据目标元素所在位置的索引进行删除&#xff0c;可以使用 del 关键字或者 pop() 方法&#xff1b;根据元素本身的值进行删除&#xff0c;可使用列表&#xff08;list类型&#xff09;提供的 remove() 方法&#xf…