一、理论

1、HOG特征描述子的定义:

    locally normalised histogram of gradient orientation in dense overlapping grids,即局部归一化的梯度方向直方图,是一种对图像局部重叠区域的密集型描述符, 它通过计算局部区域的梯度方向直方图来构成特征。

2、本质:

    Histogram of Oriented Gradient descriptors provide a dense overlapping description of image regions,即统计图像局部区域的梯度方向信息来作为该局部图像区域的表征。

3、OpenCV中的HOG算法来源:

      Histograms of Oriented Gradients for Human Detection , CVPR 2005。详细的算法可以参考这个文章。这里是 英文 和 中文 的介绍。

4、 检测窗口Win、块Block、单元格Cell的基本信息

(1)大小:

A、检测窗口:WinSize=128*64像素,在图像中滑动的步长是8像素(水平和垂直都是)

B、块:BlockSize=16*16像素,在检测窗口中滑动的步长是8像素(水平和垂直都是)

C、单元格:CellSize=8*8像素

D、梯度方向:一个Cell的梯度方向分为9个方向,在一个单元格内统计9个方向的梯度直方图

(2)HOG描述子

    OpenCV中一个Hog描述子是针对一个检测窗口而言的,一个检测窗口有((128-16)/8+1)*((64-16)/8+1)=105个Block,一个Block有4个Cell,一个Cell的Hog描述子向量的长度是9,所以一个检测窗口的Hog描述子的向量长度是105*4*9=3780维。

    HOG特征提取是统计梯度直方图特征。具体来说就是将梯度方向(0->360°)划分为9个区间,将图像化为16x16的若干个block,每个block再化为4个cell(8x8)。对每一个cell,算出每一像素点的梯度方向和模,按梯度方向增加对应bin的值,最终综合N个cell的梯度直方图形成一个 高维描述子向量 。实际实现的时候会有 各种插值 。

5、算法流程:



(1)灰度化

    由于颜色信息作用不大,通常转化为灰度图。

(2)标准化gamma空间

    为了减少光照因素的影响,首先需要将整个图像进行规范化(归一化),这种处理能够有效地降低图像局部的阴影和光照变化。

            Gamma压缩公式:

        

             比如可以取Gamma=1/2;

(3)计算图像每个像素的梯度(包括大小和方向)

    计算图像横坐标和纵坐标方向的梯度,并据此计算每个像素位置的梯度方向值;求导操作不仅能够捕获轮廓,人影和一些纹理信息,还能进一步弱化光照的影响。
梯度算子:水平边缘算子: [-1, 0, 1] ;垂直边缘算子: [-1, 0, 1]T    
    图像中像素点(x,y)的梯度为:


    作者也尝试了其他一些更复杂的模板,如3×3 Sobel 模板,或对角线模板(diagonal masks),但是在这个行人检测的实验中,这些复杂模板的表现都较差,所以作者的结论是:模板越简单,效果反而越好。

作者也尝试了在使用微分模板前加入 一个高斯平滑滤波,但是这个高斯平滑滤波的加入使得检测效果更差,原因是:许多有用的图像信息是来自变化剧烈的边缘,而在计算梯度之前加入高斯滤波会把这些边缘滤除掉。
(4)将图像分割为小的Cell单元格
由于Cell单元格是HOG特征最小的结构单位,而且其块Block和检测窗口Win的滑动步长就是一个Cell的宽度或高度,所以,先把整个图像分割为一个个的Cell单元格(8*8像素)。
(5)为每个单元格构建梯度方向直方图【重点】

    这步的目的是:统计局部图像梯度信息并进行量化(或称为编码),得到局部图像区域的特征描述向量。同时能够保持对图像中人体对象的姿势和外观的弱敏感性。

    我们将图像分成若干个“单元格cell”,例如每个cell为8*8个像素(可以是矩形的(rectangular),也可以是星形的(radial))。假设我们采用9个bin的直方图来统计这8*8个像素的梯度信息。也就是将cell的梯度方向360度分成9个方向块,如图所示: 例如:如果这个像素的梯度方向是20-40度,直方图第2个bin的计数就加一,这样,对cell内每个像素用梯度方向在直方图中进行 加权投影 (映射到固定的角度范围),就可以得到这个cell的梯度方向直方图了,就是该cell对应的9维特征向量(因为有9个bin)。

    像素梯度方向用到了,那么梯度大小呢?梯度大小就是作为投影的权值的。 例如说:这个像素的梯度方向是20-40度,然后它的梯度大小是2(假设啊),那么直方图第2个bin的计数就不是加一了,而是加二(假设啊)。

    单元格Cell中的每一个像素点都为某个基于方向的直方图通道(orientation-based histogram channel) 投票 。投票是采取加权投票(weighted voting)的方式,即每一票都是带权值的,这个权值是根据该像素点的梯度幅度计算出来。可以采用幅值本身或者它的函数来表示这个权值,实际测试表明: 使用幅值来表示权值能获得最佳的效果,当然,也可以选择幅值的函数来表示,比如幅值的平方根(square root)、幅值的平方(square of the gradient magnitude)、幅值的截断形式(clipped version of the magnitude)等。根据Dalal等人论文的测试结果,采用梯度幅值量级本身得到的检测效果最佳,使用量级的平方根会轻微降低检测结果,而使用二值的边缘权值表示会严重降低效果。

    其中,加权采用三线性插值(链接为详细说明的博文)方法,即将当前像素的梯度方向大小、像素在cell中的x坐标与y坐标这三个值来作为插值权重,而被用来插入的值为像素的梯度幅值。采用三线性插值的好处在于:避免了梯度方向直方图在cell边界和梯度方向量化的bin边界处的突然变化。

(6)把单元格组合成大的块(block),块内 归一化 梯度直方图【重点】

    由于局部光照的变化以及前景-背景对比度的变化,使得梯度强度的变化范围非常大。这就需要对梯度强度做归一化。归一化能够进一步地对光照、阴影和边缘进行压缩。

    方法:

(6-1)将多个临近的cell组合成一个block块,然后求其梯度方向直方图向量;

(6-2)采用L2-Norm with Hysteresis threshold方式进行归一化,即将直方图向量中bin值的最大值限制为0.2以下,然后再重新归一化一次;

    注意:block之间的是“共享”的,也即是说,一个cell会被多个block“共享”。另外,每个“cell”在被归一化时都是“block”independent的,也就是说每个cell在其所属的block中都会被归一化一次,得到一个vector。这就意味着:每一个单元格的特征会以不同的结果多次出现在最后的特征向量中。

(6-3)四种归一化方法:    

    作者采用了四中不同的方法对区间进行归一化,并对结果进行了比较。引入v表示一个还没有被归一 化的向量,它包含了给定区间(block)的所有直方图信息。| | vk | |表示v的k阶范数,这里的k去1、2。用e表示一个很小的常数。这时,归一化因子可以表示如下:

        L2-norm: 

        L1-norm: 

        L1-sqrt: 

        L2-Hys:它可以通过先进行L2-norm,对结果进行截短(clipping)(即值被限制为v - 0.2v之间),然后再重新归一化得到。

    作者发现:采用L2- Hys,L2-norm 和 L1-sqrt方式所取得的效果是一样的,L1-norm稍微表现出一点点不可靠性。但是对于没有被归一化的数据来说,这四种方法都表现出来显着的改进。

    

(6-4)区间(块)有两个主要的几何形状——矩形区间(R-HOG)和环形区间(C-HOG)。

    A、R-HOG区间(blocks):大体上是一些方形的格子,它可以有三个参数来表征:每个区间中细胞单元的数目、每个细胞单元中像素点的数目、每个细胞的直方图通道数目。例如:行人检测的最佳参数设置是:3×3细胞/区间、6×6像素/细胞、9个直方图通道。则一块的特征数为:3*3*9;作者还发现,对于R-HOG,在对直方图做处理之前,给每个区间(block)加一个高斯空域窗口(Gaussian spatial window)是非常必要的,因为这样可以降低边缘的周围像素点(pixels around the edge)的权重。R-HOG是各区间被组合起来用于对空域信息进行编码(are used in conjunction to encode spatial form information)。

    B、C-HOG区间(blocks):有两种不同的形式,它们的区别在于:一个的中心细胞是完整的,一个的中心细胞是被分割的。如右图所示:

作者发现C-HOG的这两种形式都能取得相同的效果。C-HOG区间(blocks)可以用四个参数来表征:角度盒子的个数(number of angular bins)、半径盒子个数(number of radial bins)、中心盒子的半径(radius of the center bin)、半径的伸展因子(expansion factor for the radius)。通过实验,对于行人检测,最佳的参数设置为:4个角度盒子、2个半径盒子、中心盒子半径为4个像素、伸展因子为2。前面提到过,对于R-HOG,中间加一个高斯空域窗口是非常有必要的,但对于C-HOG,这显得没有必要。C-HOG看起来很像基于形状上下文(Shape Contexts)的方法,但不同之处是:C-HOG的区间中包含的细胞单元有多个方向通道(orientation channels),而基于形状上下文的方法仅仅只用到了一个单一的边缘存在数(edge presence count)。

(6-5)HOG描述符(不同于OpenCV定义):我们将归一化之后的块描述符(向量)就称之为HOG描述符。

(6-6)块划分带来的问题: 块与块之间是相互独立的吗?

答:通常的将某个变量范围固定划分为几个区域,由于边界变量与相邻区域也有相关性,所以变量只对一个区域进行投影而对相邻区域完全无关时会对其他区域产生 混叠效应 。

     分块之间的相关性问题的解决:

方案一:块重叠,重复统计计算

    在重叠方式中,块与块之间的边缘点被重复根据权重投影到各自相邻块(block)中,从而一定模糊了块与块之间的边界,处于块边缘部分的像素点也能够给相邻块中的方向梯度直方图提供一定贡献,从而达到关联块与块之间的关系的作用。Datal对于块和块之间相互重叠程度对人体目标检测识别率影响也做了实验分析。

引申:
模型的训练和评估

方案二:线性插值权重分配

    有些文献采用的不是块与块重叠的方法,而是采用线性插值的方法来削弱混叠效应。这种方法的主要思想是每个Block都对临近的Block都有影响,这种影响,我们可以以一种加权方式附加上去。

    基于线性插值的基本思想,对于上图四个方向(横纵两个45度斜角方向)个进行一次线性插值就可以达到权重分配目的。下面介绍一维线性插值。假设x1和x2是x块相邻两块的中心,且x1<x<x2。对w(即权重,一般可直接采用该block的直方图值即h(x))进行线性插值的方法如下式: 

    其中b在横纵方向取块间隔,而在斜45度方向则可采用sqrt(2)倍的块间隔。

(7)生成HOG特征描述向量

    将所有“block”的HOG描述符组合在一起,形成最终的feature vector,该feature vector就描述了detect window的图像内容。

二、OpenCV中 HOG 的参数与函数说明(HOG链接为OpenCV英文, 这里 为网友翻译)

        注:HOG在OpenCV中的几个模块中都有,略有差别,可做参考,OpenCV的官方文档中只有对GPU模块的HOG,这里前面几个函数说明是GPU中的,后面两个objedetect模块中。其实我们在使用时用的是objedetect模块中的HOG。

1、构造函数

(1)作用:创造一个HOG描述子和检测器

(2)函数原型:
C++: gpu::HOGDescriptor:: HOGDescriptor (Size  win_size =Size(64, 128), 
Size  block_size =Size(16, 16), 

Size  block_stride =Size(8, 8),

Size  cell_size =Size(8, 8), 

int  nbins =9, 

double  win_sigma =DEFAULT_WIN_SIGMA, 

double  threshold_L2hys =0.2, 

bool  gamma_correction =true, 

int  nlevels =DEFAULT_NLEVELS

)
(3)参数注释

<1> win_size :检测窗口大小。

<2> block_size :块大小,目前只支持Size(16, 16)。

<3> block_stride :块的滑动步长,大小只支持是单元格cell_size大小的倍数。

<4> cell_size :单元格的大小,目前只支持Size(8, 8)。

<5> nbins :直方图bin的数量(投票箱的个数),目前每个单元格Cell只支持9个。

<6> win_sigma :高斯滤波窗口的参数。

<7> threshold_L2hys :块内直方图归一化类型L2-Hys的归一化收缩率

<8> gamma_correction :是否gamma校正

<9> nlevels :检测窗口的最大数量

2、getDescriptorSize函数

(1)作用:获取一个检测窗口的HOG特征向量的维数

(2)函数原型:
C++:  size_t  gpu::HOGDescriptor:: getDescriptorSize () const

3、getBlockHistogramSize函数

(1)作用:获取块的直方图大小

(2)函数原型:
C++:  size_t  gpu::HOGDescriptor:: getBlockHistogramSize () const  

4、setSVMDetector 函数

(1)作用:设置线性SVM分类器的系数

(2)函数原型:
C++:  void  gpu::HOGDescriptor:: setSVMDetector (const vector<float>&  detector ) 

5、getDefaultPeopleDetector 函数

(1)作用:获取行人分类器(默认检测窗口大小)的系数(获得3780维检测算子)

(2)函数原型:
C++:  static vector<float>  gpu::HOGDescriptor:: getDefaultPeopleDetector () 

6、getPeopleDetector48x96 函数

(1)作用:获取行人分类器(48*96检测窗口大小)的系数

(2)函数原型:
C++:  static vector<float>  gpu::HOGDescriptor:: getPeopleDetector48x96 ()

7、getPeopleDetector64x128 函数

(1)作用:获取行人分类器(64*128检测窗口大小)的系数

(2)函数原型:
C++:  static vector<float>  gpu::HOGDescriptor:: getPeopleDetector64x128 () 
8、detect 函数

(1)作用:用没有多尺度的窗口进行物体检测

(2)函数原型:
C++:  void  gpu::HOGDescriptor:: detect (const GpuMat&  img , 
vector<Point>&  found_locations , 

double  hit_threshold =0, 

Size  win_stride =Size(), 

Size  padding =Size()

)  
(3)参数注释

<1> img: 源图像。只支持CV_8UC1和CV_8UC4数据类型。

<2> found_locations: 检测出的物体的边缘。

<3> hit_threshold: 特征向量和SVM划分超平面的阀值距离。通常它为0,并应由检测器系数决定。但是,当系数被省略时,可以手动指定它。

<4> win_stride: 窗口步长,必须是块步长的整数倍。

<5> padding: 模拟参数,使得CUP能兼容。目前必须是(0,0)。

9、detectMultiScale 函数(需有setSVMDetector)

(1)作用:用多尺度的窗口进行物体检测

(2)函数原型:
C++:  void  gpu::HOGDescriptor:: detectMultiScale (const GpuMat&  img ,
vector<Rect>&  found_locations , 

double  hit_threshold =0, 

Size  win_stride =Size(), 

Size  padding =Size(), 

double  scale0 =1.05, 

int  group_threshold =2

)
(3)参数注释

<1> img: 源图像。只支持CV_8UC1和CV_8UC4数据类型。

<2> found_locations: 检测出的物体的边缘。

<3> hit_threshold: 特征向量和SVM划分超平面的阀值距离。通常它为0,并应由检测器系数决定。但是,当系数被省略时,可以手动指定它。

<4> win_stride: 窗口步长,必须是块步长的整数倍。

<5> padding: 模拟参数,使得CUP能兼容。目前必须是(0,0)。

<6> scale0: 检测窗口增长参数。

<7> group_threshold: 调节相似性系数的阈值。检测到时,某些对象可以由许多矩形覆盖。 0表示不进行分组。

(4)详细说明

<1> 得到层数levels  
    某图片(530,402)为例,lg(402/128)/lg1.05=23.4 则得到层数为24 
<2>循环levels次,每次执行内容如下 
    HOGThreadData& tdata = threadData[getThreadNum()]; 
    Mat smallerImg(sz, img.type(), tdata.smallerImgBuf.data); 
<3>循环中调用以下核心函数 
    detect(smallerImg, tdata.locations, hitThreshold, winStride, padding); 
    其参数分别为,该比例下图像、返回结果列表、门槛值、步长、margin 
    该函数内容如下:

(a)得到补齐图像尺寸paddedImgSize 
(b)创建类的对象HOGCache cache(this, img, padding, padding, nwindows == 0, cacheStride); 在创建过程中,首先初始化HOGCache::init,包括:计算梯度descriptor->computeGradient、得到块的个数105、每块参数个数36。 
(c)获得窗口个数nwindows,以第一层为例,其窗口数为(530+32*2-64)/8+ (402+32*2-128)/8+1 =67*43=2881,其中(32,32)为winStride参数, 也可用(24,16) 
(d)在每个窗口执行循环,内容如下: 
在105个块中执行循环,每个块内容为:通过getblock函数计算HOG特征并 归一化,36个数分别与算子中对应数进行相应运算;判断105个块的总和 s >= hitThreshold 则认为检测到目标

10、getDescriptors 函数

(1)作用:返回整个图片的块描述符 (主要用于分类学习)。

(2)函数原型:
C++:  void  gpu::HOGDescriptor:: getDescriptors (const GpuMat& img, 
Size  win_stride , 

GpuMat&  descriptors , 

int  descr_format =DESCR_FORMAT_COL_BY_COL

)
(3)参数注释 

<1> img: 源图像。只支持CV_8UC1和CV_8UC4数据类型。

<2> win_stride: 窗口步长,必须是块步长的整数倍。

<3> descriptors :描述符的2D数组。

<4> descr_format: 描述符存储格式:

DESCR_FORMAT_ROW_BY_ROW - 行存储。

DESCR_FORMAT_COL_BY_COL - 列存储。

11、computeGradient 函数

(1)作用:计算img经扩张后的图像中每个像素的梯度和角度  

(2)函数原型: 

void  HOGDescriptor:: computeGradient (const Mat&  img , 

Mat&  grad , 
Mat&  qangle ,

Size  paddingTL , 

Size  paddingBR
) const
(3)参数注释 

<1> img: 源图像。只支持CV_8UC1和CV_8UC4数据类型。

<2> grad: 输出梯度(两通道),记录每个像素所属bin对应的权重的矩阵,为幅值乘以权值。这个权值是关键,也很复杂:包括高斯权重,三次插值的权重,在本函数中先值考虑幅值和相邻bin间的插值权重。

<3> qangle :输入弧度(两通道),记录每个像素角度所属的bin序号的矩阵,均为2通道,为了线性插值。

<4> paddingTL: Top和Left扩充像素数。

<5> paddingBR: Bottom和Right扩充像素数。

12、compute 函数

(1)作用:计算HOG特征向量 

(2)函数原型: 
void  HOGDescriptor:: compute (const Mat&  img , 
vector<float>&  descriptors ,

Size  winStride , 

Size  padding ,

const vector<Point>&  locations

) const
(3)参数注释 

<1> img: 源图像。只支持CV_8UC1和CV_8UC4数据类型。

<2> descriptors: 返回的HOG特征向量,descriptors.size是HOG特征的维数。

<3> winStride :窗口移动步长。

<4> padding: 扩充像素数。

<5> locations: 对于正样本可以直接取(0,0),负样本为随机产生合理坐标范围内的点坐标。

三、 HOG算法OpenCV实现流程

四、OpenCV的简单例子

1、HOG行人检测
(1)代码: 
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/gpu/gpu.hpp>
#include <stdio.h>using namespace cv;int main(int argc, char** argv)
{
  Mat img;
  vector<Rect> found;
   img = imread(argv[1]);
  if(argc != 2 || !img.data)
  {
    printf("没有图片\n");
    return -1;
  }
  HOGDescriptor defaultHog;
  defaultHog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());
  //进行检测
  defaultHog.detectMultiScale(img, found);
  //画长方形,框出行人
  for(int i = 0; i < found.size(); i++)
      {
    Rect r = found[i];
    rectangle(img, r.tl(), r.br(), Scalar(0, 0, 255), 3);
  }
  namedWindow("检测行人", CV_WINDOW_AUTOSIZE);
  imshow("检测行人", img);
  waitKey(0);  return 0;
}
(2)注解

    上述过程并没有像人脸检测Demo里有Load训练好的模型的步骤,这个getDefaultPeopleDetector 是默认模型,这个模型数据在OpenCV源码中是一堆常量数字,这些数字是通过原作者提供的行人样本 INRIAPerson.tar 训练得到的。

    这里只是用到了HOG的 识别模块 ,OpenCV把HOG包的内容比较多,既有HOG的特征提取,也有结合SVM的识别,这里的识别只有检测部分,OpenCV提供默认模型,如果使用新的模型,需要重新训练。

2、HOG的计算以及SVM从训练到识别 (可参考 OpenCV中的HOG+SVM物体分类和 利用HOG+SVM训练自己的XML文件 和

opencv中的 HOGDescriptor 类 )

(1)制作样本,将其归一化到一个的尺度。

(2)将样本图像的名称写到一个TXT文件,方便程序调用。

(3)依次提取每张图像的HOG特征向量。

对每一张图片调用

hog.compute (img, descriptors,Size(8,8), Size(0,0));

可以生成hog descriptors,把它保存到文件中

for(int j=0;j<3780;j++)

fprintf(f,"%f,",descriptors[j]);

(4)利用SVM进行训练。

(5)得到XML文件。

    这里识别有两种用法:

A、一种采用 svm.predict 来做(参考 利用HOG+SVM训练自己的XML文件 )

B、另一种采用 hog.setSVMDetector+训练的模型和hog.detectMultiScale (参考 利用Hog特征和SVM分类器进行行人检测   )
五、总结

1、HOG与SIFT的区别

    HOG和SIFT都是描述子,以及由于在具体操作上有很多相似的步骤,所以致使很多人误认为HOG是SIFT的一种,其实两者在使用目的和具体处理细节上是有很大的区别的。HOG与SIFT的主要区别如下:

(1)SIFT是基于关键点特征向量的描述。

(2)HOG是将图像均匀的分成相邻的小块,然后在所有的小块内统计梯度直方图。

(3)SIFT需要对图像尺度空间下对像素求极值点,而HOG中不需要。

(4)SIFT一般有两大步骤,第一个步骤对图像提取特征点,而HOG不会对图像提取特征点。

2、HOG的优缺点
优点:

(1)HOG表示的是边缘(梯度)的结构特征,因此可以描述局部的形状信息;

(2)位置和方向空间的量化一定程度上可以抑制平移和旋转带来的影响;

(3)采取在局部区域归一化直方图,可以部分抵消光照变化带来的影响;

(4)由于一定程度忽略了光照颜色对图像造成的影响,使得图像所需要的表征数据的维度降低了;

(5)而且由于这种分块分单元的处理方法,也使得图像局部像素点之间的关系可以很好得到表征。

缺点:

(1)描述子生成过程冗长,导致速度慢,实时性差;

(2)很难处理遮挡问题;

(3)由于梯度的性质,该描述子对噪点相当敏感

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

相关文章

  1. 【Unity3D插件】Exploder爆炸插件使用分享

    推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客QQ群&#xff1a;1040082875 一、插件介绍 Exploder是一个Unity3D插件&#xff0c;可以爆炸任何有网格的游戏对象。在游戏对象上tag设置为“Exploder”&#xff0c;就可以看到爆炸了&#xff01; 插件下…...

    2024/5/1 18:32:07
  2. 『人脸识别系列教程』1·目录与概述

    原文出处&#xff1a;https://zhuanlan.zhihu.com/FaceRec 目录 本系列专栏将解析基于深度学习的人脸识别相关的关键性论文&#xff0c;从2014年DeepFace开始到最新的算法。还介绍了用于人脸识别的损失函数&#xff1a;基于欧几里得距离的损失函数&#xff08;Contrastive Los…...

    2024/5/1 14:12:39
  3. PaaS 系统开源软件

    偶然发现开源中国上有这个东西,关于Pass的介绍,好东西。可以了解到很多。 http://www.oschina.net/project/tag/406/paas...

    2024/5/1 10:26:10
  4. 灰度共生矩阵(GLCM,Gray-Level Co-occurrence Matrix)

    概念由于纹理是由灰度分布在空间位置上反复出现而形成的&#xff0c;因而在图像空间中相隔某距离的两像素之间会存在一定的灰度关系&#xff0c;即图像中灰度的空间相关特性。灰度共生矩阵就是一种通过研究灰度的空间相关特性来描述纹理的常用方法。灰度共生矩阵是涉及像素距离…...

    2024/5/1 7:55:54
  5. 内双怎么才能让双眼皮变宽度

    ...

    2024/5/1 7:22:09
  6. 一般整双眼皮哪里医院好不好

    ...

    2024/5/1 11:54:57
  7. 双眼皮那里做的好处多

    ...

    2024/5/1 11:17:17
  8. 双眼皮前后对比照片

    ...

    2024/5/1 17:29:31
  9. 葛春颖葛春颖做双眼皮怎么样

    ...

    2024/5/1 8:06:13
  10. 成都成美整形医院 割西安埋线双眼皮艺星品

    ...

    2024/5/1 7:31:52
  11. 鞍山整形开眼角和割双眼皮45天

    ...

    2024/4/22 8:58:36
  12. 哪个季节做双眼皮好嘛

    ...

    2024/4/21 15:12:26
  13. TypeScript将字符串转换为数字

    本文翻译自&#xff1a;TypeScript Converting a String to a numberAnyone a suggestion on how to convert a string to a number in TypeScript? 有人建议如何将字符串转换为TypeScript中的数字&#xff1f; var aNumber : number "1"; // --> Error// Cou…...

    2024/4/21 15:12:25
  14. JS 获取某个容器控件中id包含制定字符串的控件id列表

    //获取某容器控件中id包含某字符串的控件id列表 //参数&#xff1a;容器控件、要查找的控件的id关键字 function GetIdListBySubKey(container,subIdKey) {var idList "";var childcontainer.childNodes;var chileLengthchild.length;for(var i 0; i < contain…...

    2024/4/21 15:12:25
  15. angularJS 使HTML解释JS字符串中的标签。

    在augularJS中&#xff0c;某一个字符串含有标签&#xff0c;在显示的时候会直接把标签显示出来。 1. 首先在app.js中 设置 filter(trustHtml, function ($sce) { //解释html标签return function (input) {return $sce.trustAsHtml(input);} }); 2. 使用 <span ng-bind-htm…...

    2024/4/26 12:52:47
  16. 单眼皮如何弄芭比双眼皮前后图

    ...

    2024/4/21 15:12:22
  17. 双眼皮不好看可以动手术

    ...

    2024/4/21 15:12:21
  18. 开好双眼皮多久会肿

    ...

    2024/4/21 15:12:21
  19. 内双眼皮割了后会变回来吗

    ...

    2024/4/21 3:32:30
  20. 拉完双眼皮特别丑

    ...

    2024/4/20 15:03:44

最新文章

  1. 中间件之异步通讯组件RabbitMQ入门

    一、概述 微服务一旦拆分&#xff0c;必然涉及到服务之间的相互调用&#xff0c;目前我们服务之间调用采用的都是基于OpenFeign的调用。这种调用中&#xff0c;调用者发起请求后需要等待服务提供者执行业务返回结果后&#xff0c;才能继续执行后面的业务。也就是说调用者在调用…...

    2024/5/1 18:40:24
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 逆向案例十二——看准网企业信息json格式的信息

    网址&#xff1a;【全国公司排行|排名榜单|哪家好】-看准网 打开开发者工具——刷新——网络——XHR——下滑页面加载新的页面——找到数据包 发现参数加密&#xff0c;返回的数据也进行了加密 按关键字在下方搜索 kiv进入第一个js文件 ctrlf打开文件里面的搜索框继续搜kiv找到…...

    2024/5/1 13:34:19
  4. 第三章图像和链接

    1.HTML 图像 在 HTML 中&#xff0c;图像是由<img>标签定义的&#xff0c;<img>标签是空标签&#xff0c;它只包含属性并且没有闭合标签。想要图像显示在网页中&#xff0c;那么图像<img>标签有两个必须的属性:src 属性和 alt属性。 语法&#xff1a; <…...

    2024/4/30 21:46:49
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/30 18:14:14
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/30 18:21:48
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/30 9:43:22
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57