算法面试1
简述yolov1的网络架构
YOLOv1网络结构包括24层卷积层用来提取图像的特征,2层全连接层回归得到7×7×30(1+4+1+4+20)的张量。
网络结构大概如下:输入的是448×448×3通道的图像,就是RGB图像,然后用64个卷积核大小是7×7以步长为2进行卷积,然后是2×2最大池化,步长为2,然后是192个3×3卷积核进行卷积,然后再2×2最大池化,步长为2,然后后面就这样以一种级联的方式下去,最后获得一个7×7×1024维的张量,把它拉平喂到一个4096维的全连接层,输出一个4096维的向量,再把这个向量喂到一个1470维度的全连接层,输出一个1470维的向量,再把这个1470维度的向量reshape一下变成7×7×30的张量,所有预测框的坐标和类别都在这个7×7×30的张量里面。
注:
输入一张图像,先把图像分成S×S(7×7)的网格(grid cell),每个grid cell都生成2个预测框(bounding box),每个grid cell都包括2个bounding box和20个类别,每个bounding box又包含4个位置参数(x、y、w、h)和1个置信度参数c,在原论文中bounding box的粗细就表示了置信度c的大小,粗的表示置信度较高,细的表示置信度较低。同时,每个grid cell预测一组条件类别的概率,就是原论文中每个彩色的网格就是代表预测了哪个类别(用颜色代表不同的类别,用粗细来表示每个bounding box的置信度)。以PASCAL VOC数据集为例,有20个类别,则最后我们会得到一个7×7×30(1+4+1+4+20)维度的向量。结合bounding box的信息和grid cell的类别信息,再经过后处理包括置信度过滤和NMS就可以获得最后的预测结果。
YOLOv1中其最后一层使用的是线性激活函数,其他层使用的是LeakyReLU激活函数(x>0,f(x)=x;x<0,f(x)=0.1x),传统的ReLU函数是x<0时f(x)=0。
YOLOv1的损失函数包括定位损失、置信度损失和分类损失。定位损失用于衡量预测框与真实框之间的差异,置信度损失用于衡量预测框中是否包含目标的置信度,分类损失用于衡量预测类别的准确性。
数字图像处理中常用图像分割算法有哪些?
②图像边缘分割:边缘是图像中灰度突变像素的集合,一般用微分进行检测。基本的边缘检测算法有:Roberts算子、Sobel算子。稍高级的算法有:Canny边缘检测器。
③图像阈值分割:由于阈值处理直观、实现简单且计算速度快,因此阈值处理在分割应用中处于核心地位。如Otsu(最大类间方差算法)算法。
常用图像增强算法
①直方图均衡化:利用图像直方图对对比度进行调整,通常用来增加许多图像的局部对比度,这种方法对于背景和前景都太亮或者太暗的图像非常有用,这种方法尤其是可以带来X光图像中更好的骨骼结构显示以及曝光过度或者曝光不足照片中更好的细节。
②对数图像增强算法:对数图像增强是图像增强的一种常见方法,其公式为: S = c log(r+1),其中c是常数(以下算法c=255/(log(256)),这样可以实现整个画面的亮度增大。
⑦拉普拉斯算子图像增强:使用中心为5的8邻域拉普拉斯算子与图像卷积可以达到锐化增强图像的目的。
⑧Gamma校正:伽马变换主要用于图像的校正,将灰度过高或者灰度过低的图片进行修正,增强对比度。伽马变换对图像的修正作用其实就是通过增强低灰度或高灰度的细节实现的。
图像对比度
对比度:指一幅图像中灰度反差的大小;
对比度 = 最大亮度 / 最小亮度