当前位置: 首页 > news >正文

小清新网站风格/360搜索优化

小清新网站风格,360搜索优化,合同纠纷网站建设,深圳服装网站建设论文阅读三——端到端的帧到凝视估计 主要内容研究问题文章的解题思路文章的主要结构 论文实验关于端到端凝视估计的数据集3种基线模型与EFE模型的对比在三个数据集中与SOTA进行比较 问题分析重要架构U-Net 基础知识 主要内容 文章从端到端的方法出发,提出了根据he…

论文阅读三——端到端的帧到凝视估计

    • 主要内容
      • 研究问题
      • 文章的解题思路
      • 文章的主要结构
    • 论文实验
      • 关于端到端凝视估计的数据集
      • 3种基线模型与EFE模型的对比
      • 在三个数据集中与SOTA进行比较
    • 问题分析
    • 重要架构
      • U-Net
    • 基础知识

主要内容

文章从端到端的方法出发,提出了根据heatmap和sprase depth map生成凝视原点和通过图像帧获得凝视方向,将两者结合获得注视点(PoG),和先前传统的通过裁剪人脸眼睛和脸部特征有所区别,并且PoG误差较之前的小。

研究问题

文章所需要解决的问题是远程基于网络摄像头的凝视估计,即如何通过通过单个用户面向的、远程放置的摄像头捕捉用户的图像,然后利用这些图像来估计用户的凝视方向的问题。譬如远程RGB图像凝视估计(使用面向用户的单个RGB摄像头,而无需额外工具(如红外光源)来更容易地解决凝视估计问题)

在传统的解决方法中,有着以下两点难题:

  • 传统的学习型远程凝视估计方法通常需要将小的裁剪图像(眼睛或者面部图像)作为输入,以预测凝视方向。
  • 这些输入以及凝视起源必须根据面部特征的预定义过程生成,通常通过数据规范化等方式。

使用基于卷积神经网络(CNN)的学习型方法(输入是简单的裁剪图像 / 通过“数据归一化”过程产生的图像块)不会考虑到3D头部姿势,而大幅度头部旋转的情况下会导致不同的尺寸和图像比例。为了解决这个问题,论文提出了**"End-to-end Frame-to-Gaze Estimation(EFE)"方法,直接从相机帧**中回归3D凝视起源和3D凝视方向,允许模型适应新的相机-屏幕几何结构,方法避免了昂贵的数据规范化步骤。但是,不可忽视的是原始帧中眼部区域较小,且需要对凝视起源进行准确估计。

因此,文章作者作出了这样的模型设计:

  • 使用全卷积U-Net架构预测凝视起源的2D热图和深度图。
  • 利用多层感知机(MLP)从U-Net架构的瓶颈特征中预测3D凝视方向。
  • 使用相机内参和外参参数,通过可微分方式将凝视射线与已知屏幕平面相交,以得到Point-of-Gaze(PoG)。

文章的解题思路

文章在摘要前便直接展示了一张图,体现了自身模型与传统的凝视估计不同,图像如下:

在这里插入图片描述

端到端帧到视线估计方法**(EFE)被训练成直接从输入的摄像机帧预测眼睛的凝视**,而传统方法有许多的预处理模块(人脸检测模块、地标检测模块、数据归一化模块,然后进行凝视估计(视差估计)),而文章表示他们在跳过这些过程的情况下,还可以提升性能!

从论文的第一张图片以及摘要我们可以得到作者提出的EFE模型和过去大部分传统模型的差别:

  • 传统的凝视方法:需要一个或多个眼部或面部区域的裁剪作为输入,并产生一个凝视方向向量作为输出。

    • 根据面部标志从输入摄像头帧中裁剪眼部/面部补丁,通过拟合通用的3D面部模型估计3D头部姿势,进而生成3D凝视起源(上图没体现)。
    • 在摄像机坐标系中输出凝视方向(是通过眼睛的凝视行为进行估计的,而不仅仅是头部姿势的估计),通过将预测的凝视方向与在数据归一化步骤中获得的凝视原点合成,可以构建凝视射线。

    但是传统凝视方法中的裁剪有好处也有坏处,如下:

    • 好处:在眼部区域获得更高的分辨率,并且减少混淆因素(衣服、头发)。
    • 坏处:眼部/面部裁剪过程昂贵、容易出错,并且对于不同的方法具有特定的实现。
  • EFE方法:构建一个模型,实现以端到端的方式直接从相机帧中估计一个包括凝视起源和凝视方向的6D凝视射线(3D凝视原点+3D凝视方向),而无需对面部或眼睛进行任何裁剪。

总之,文章提出了一种无需进行面部或眼睛裁剪即可直接从原始帧进行凝视估计的方法,在实现简化流程、降低成本的同时,实现效果可以与当今最先进的模型进行媲美。

文章的主要结构

为了通过相机帧来确定人眼的注视点(PoG),文章使用了以下结构:

在这里插入图片描述

如上图,作者提出了一种类似U-Net的体系结构,其中输出特征被映射到图像上的2D凝视原点位置稀疏深度图中,它们结合在一起来产生3D凝视原点;使用瓶颈特征作为输入,利用MLP预测三维视线方向(POG是使用预测的凝视原点凝视方向以及相机转换矩阵来计算的)。

(注:感觉这里的系数深度图的图像是有问题的,可能是作者为了美观而将后面的Gaze Origin Depth的图像前移了,否则不会出现范围性的深度结果。)

  • 预测凝视原点

    • 预测2D凝视起源热图和稀疏深度图:使用 U-Net-like 结构,模型预测一个 2D 凝视起源热图和一个稀疏深度图。

    • 热图和深度图的训练损失:

      • 热图的预测,使用均方误差损失(MSE)用于预测热图,获得热图后通过softargmax获得。

      L h e a t m a p = 1 n ∑ i = 1 n ∣ ∣ h − h ^ ∣ ∣ 2 2 n = W × H h : 预测的凝视原点在相机帧上的 2 D 位置 h ^ 是通过以凝视原点为中心绘制二维高斯而生成的地面真实热图 通过损失函数获得最终的热图后,使用 s o f t − a r g m a x 来确定最终的凝视点坐标 L_{heatmap}=\frac{1}{n}\sum_{i=1}^{n}||h-\hat{h}||_2^2\\ n=W×H\\ h:预测的凝视原点在相机帧上的2D位置 \\ \hat{h}是通过以凝视原点为中心绘制二维高斯而生成的地面真实热图\\ 通过损失函数获得最终的热图后,使用soft-argmax来确定最终的凝视点坐标 Lheatmap=n1i=1n∣∣hh^22n=W×Hh:预测的凝视原点在相机帧上的2D位置h^是通过以凝视原点为中心绘制二维高斯而生成的地面真实热图通过损失函数获得最终的热图后,使用softargmax来确定最终的凝视点坐标

      之所以预测凝视原点为热图的概率分布而不是固定的某个点,是因为数据集的ground truth本身存在一定的误差,可以更好地应对凝视原点位置定义的模糊性和地面实况标签的误差。

      • 对于 2D 凝视起源位置的预测,同样使用均方误差损失。深度图的预测则使用 L1 范式损失,该损失函数仅考虑到对于可见的用户面部区域的点。-
        2D凝视位置损失:
        L g = ∣ ∣ g − g ^ ∣ ∣ 2 2 g ^ 是在摄像头帧上的真实 2 D 凝视位置。 L_g=||g-\hat{g}||_2^2\\ \hat{g}是在摄像头帧上的真实 2D 凝视位置。 Lg=∣∣gg^22g^是在摄像头帧上的真实2D凝视位置。

z = h ⋅ d L d = ∣ ∣ z − z ^ ∣ ∣ 1 z ^ 是真实的深度值(距离) , d : 预测稀疏深度图 z=h·d\\ L_d=||z-\hat{z}||_1\\ \hat{z}是真实的深度值(距离),d:预测稀疏深度图 z=hdLd=∣∣zz^1z^是真实的深度值(距离),d:预测稀疏深度图

  • 计算 3D 凝视起源:通过将2D图像坐标转换为世界坐标,利用相机内参矩阵 K,计算 3D 凝视起源 。

     # 相机参数矩阵KK = np.array([[fx, 0, cx],[0, fy, cy],[0, 0, 1]])# fx,fy是相机的焦距# cx,cy是相机的中心点 ```
    

热图通过soft-argmax获得一个2D凝视点坐标g=(x,y),设该点深度为d。通过相机内参矩阵可以将2D凝视点坐标进行归一化,如下操作:
u = x − c x f x v = y − c y f y u=\frac{x-c_x}{f_x}\\ v=\frac{y-c_y}{f_y} u=fxxcxv=fyycy
所以得到归一化后的点g1=(u,v,1),其中数字1是为了让坐标可以进行齐次坐标转换。
[ x y z 1 ] = K − 1 [ u v 1 ] ⋅ d \begin{bmatrix} x \\ y\\ z\\ 1 \end{bmatrix}=K^{-1}\begin{bmatrix} u\\ v\\ 1 \end{bmatrix}·d xyz1 =K1 uv1 d
则o=(x,y,z)就是3D的凝视起源坐标。

  • 预测凝视方向: 通过映射从图像空间到3D方向的方式进行凝视方向的预测。

    • 使用了类似U-Net的中间瓶颈特征进行凝视方向的预测,共享特征提取器的信息。
    • 针对凝视方向的预测,使用了角度损失 Lr 进行监督。使用角度余弦进行计算损失Lr:

    L r = a r c c o s ( r ^ ⋅ r ∣ ∣ r ^ ∣ ∣ ⋅ ∣ ∣ r ∣ ∣ ) L_r=arccos(\frac{\hat{r}·r}{||\hat{r}||·||r||}) Lr=arccos(∣∣r^∣∣∣∣r∣∣r^r)

  • 如何计算注视点(PoG)

    • PoG:与屏幕平面相交的6D凝视光线(由凝视起源和方向组成)的交点。

    • 利用凝视起源 o 和凝视方向 r,可以获取到屏幕框架的距离 λ*。*
      λ = r ⋅ n s ( a s − o ) ⋅ n s 凝视起点: o , 凝视方向: r 屏幕框架法线: n s 屏幕平面上的样本点: a s ( 用于计算凝视距离 λ 的屏幕平面上的一个随机点 ) \lambda=\frac{r·n_s}{(a_s-o)·n_s}\\ 凝视起点:o,凝视方向:r\\ 屏幕框架法线:n_s\\ 屏幕平面上的样本点:a_s(用于计算凝视距离 λ 的屏幕平面上的一个随机点) λ=(aso)nsrns凝视起点:o,凝视方向:r屏幕框架法线:ns屏幕平面上的样本点:as(用于计算凝视距离λ的屏幕平面上的一个随机点)

    • PoG的计算:

    P o G = o + λ r PoG=o+\lambda r PoG=o+λr

    • PoG计算的损失函数

    L P o G = ∣ ∣ p − p ^ ∣ ∣ —— 2 2 L_{PoG}=||p-\hat{p}||——2^2 LPoG=∣∣pp^∣∣——22

    综上可以得到凝视估计点,而纵观全过程,EFE的总体损失函数为:
    L t o t a l = λ g L g + λ h L h e a t m a p + λ d L d + λ P o g L P o G L_{total}=\lambda_gL_g+\lambda_hL_{heatmap}+\lambda_dL_d+\lambda_{Pog}L_{PoG} Ltotal=λgLg+λhLheatmap+λdLd+λPogLPoG

与之前的论文阅读相比,作者认为其实现了真正的端到端(从原始输入到最终输出的完整流程,而不需要手动处理中间步骤或阶段):

  • 输入与输出直接相关: EFE 模型从摄像机帧直接预测凝视方向,而不需要在中间阶段进行额外的预处理或特征提取。
  • EFE 避免了预处理步骤,直接使用原始帧进行训练和推理。这使得模型训练和使用更加直接和全面。
  • EFE 使用整个相机帧作为输入,因此可以被视为全图输入模型。

论文实验

关于端到端凝视估计的数据集

数据集任务内容数据处理
EVE端到端凝视估计连续视频,Tobii Pro Spectrum眼动仪提供地面实况凝视标签创建图像数据集,训练集进行0.6的子采样率,将帧的大小调整为480 × 270像素
GazeCapture端到端凝视估计通过众包方式使用手机和平板电脑进行采集,1450多人,近250万帧提供原始帧输入和相对于摄像机的PoG,假设摄像机和屏幕共面
MPIIFaceGaze端到端凝视估计15名受试者的笔记本电脑下的3000张面部图像,自然头部运动和各种光照条件提供原始摄像机帧、通过数据归一化估计的3D凝视起源、3D凝视方向以及屏幕上的2D PoG

3种基线模型与EFE模型的对比

文中考虑了3中基线模型,分别是:方向回归、单独模型和联合预测,其对比表格如下:

模型/方法特点性能
方向回归方法直接估计 PoG,不预测凝视起源或凝视方向性能较差
独立模型方法通过两个独立的模型估计凝视起源和凝视方向较好的性能,因为有更大的模型容量
联合预测方法通过共享网络和独立 MLP 联合估计凝视起源和凝视方向,使用 PoG 损失进行优化性能较差,不能有效地共同学习凝视起源和凝视方向
EFE(提出的方法)通过 U-Net-like 架构,使用热图回归凝视起源,同时学习稀疏深度图进行凝视方向估计,最终通过屏幕平面计算 PoG最佳性能,相对于其他方法表现更好,尤其在复杂的 EVE 数据集上

其结构图如下:

在这里插入图片描述

其中联合预测方法,作者使用了共享卷积神经网络来提取图像特征,然后使用两个独立的多层感知机来分别预测凝视的起源和凝视的方向。这方法与EFE模型是不一样的。

对比结果:

在这里插入图片描述

在三个数据集中与SOTA进行比较

  • 在EVE数据集中,比较效果如下:

在这里插入图片描述

  • 在GazeCpture数据集中,比较效果如下:

在这里插入图片描述

  • ITracker方法接受多个输入:裁剪的面、左眼、右眼和面占用栅格。

  • EFE只接受调整大小的原始帧作为输入。

  • 在MPIIGaze数据集中

在这里插入图片描述

在15倍交叉验证评估方案下,将EFE与最先进的POG估计方法Full-Face、Far-Net和AFF-Net进行了比较,从数据上看,性能sota模型持平,部分领先。

与EFE模型不同,其他三个模型都是使用数据归一化后的人脸图像以及通过数据归一化计算的地面真实凝视原点作为输入,模型只输出凝视方向,而没有生成凝视原点。

问题分析

EVE上PoG残差的直方图,通过比较数据归一化计算凝视原点EFE预测了凝视的来源,结果表明,我们的端到端学习方法在POG误差方面表现出较小的偏差。图像如下:

在这里插入图片描述

文章最后还提到了一个效果极好的深度图可视化:

在这里插入图片描述

文章提到:用户的脸是离相机更远还是更靠近相机的粗略概念被捕捉到了。

文章还进行了跨相机评估,,将EFE模型与FaceNet模型(要数据归一化)进行了比较。文章指出,对数据进行归一化是为了让生成的归一化数据在更多的相机中可以进行使用(适配)。最后,将两个模型在EVE数据集中进行对比,其结果如下:

在这里插入图片描述

说明:机器视觉摄像头(MVC),显示器顶部(WC)、左上角(WL)和右上角(WR)上的网络摄像头,通过结果图来看,在大多数跨摄像头配置中,EFE的表现都超过了基于数据归一化的FaceNet,在许多情况下,EFE的表现要比基于数据标准化的FaceNet高出很多。文章中说,在WL摄像头进行训练,在WR中进行测试,得到的精度,EFE模型会明显优于FaceNet(提高了16.8).

重要架构

U-Net

可以进行图像分割

组成:从图像中提取相关特征的编码器,以及获取提取的特征并重建分割掩模的解码器部分。

  • 编码器部分,使用了卷积层,然后使用ReLUMaxPool作为特征提取器。
  • 解码器部分,转置卷积以增加特征图的大小并减少通道数。使用填充来保持卷积运算后特征图的大小相同。

在这里插入图片描述

从上图中我们可以发现,其没有全连接层!随着我们扩展编码器和解码器层中的层数,可以有效地越来越“缩小”特征图,这样会导致编码器可能会丢弃更详细的特征,而选择更一般的特征。

由于深度神经网络在通过连续层传递信息时可能会“忘记”某些特征,因此跳过连接可以重新引入它们以使学习变得更强。因此,U-Net引入了残差网络 (ResNet) 进行改进,从而引入了跳跃连接(通过将编码器的某一层的特征图与解码器的对应层的特征图进行拼接而实现的),并显示出分类改进以及更平滑的学习梯度,使得其具有跳跃连接以确保精细细节不会丢失。

在这里插入图片描述

这样的话,U-Net有了以下特性:

  • 没有全连接层
  • 随着编码器和解码器层数的加深,提取越通用的特征。
  • 将详细功能重新引入解码器的跳过连接。

文章中,U-Net-like结构主要是以U-Net为主体,U-Net以Efficient V2为主干网络,为了更好的训练参数以及加快训练速度。而EfficientV2较Efficient V1进行了改进,以fused MBConv模块替换了MBConv模块,达到了加快速度的方法,如下图:
在这里插入图片描述

基础知识

face Landmark Detector:检测图像或视频中物体的关键点或地标,通常指的是人脸的关键点,如眼睛的位置、鼻子的位置、嘴巴的位置等。

多层感知机MLP:一种人工神经网络结构,由多个神经元层组成,通常包括输入层、隐藏层和输出层。

原始帧:拍摄场景的视觉信息(头部姿势、面部表情、眼部状态等等),但是会有很多无用的信息,譬如背景、头法,衣服等等。

跨人凝视估计:在凝视估计任务中,模型能够处理和泛化到不同个体的情况,使模型具有足够的泛化能力,以便在面对新的、不同于训练集的个体时,依然能够准确地估计其凝视方向。

凝视起源/原点:用户凝视的起始点或者视线的源头,即在眼睛的视觉轴上的起始位置。

凝视射线:指从眼睛到凝视目标的一条直线。它连接了观察者(用户)的眼睛位置(凝视起源)和他们正在凝视的目标的位置,形成一个向目标指示的直线。

凝视方向:人的眼睛所注视的方向,通常以某种坐标系表示,凝视方向可以用来描述眼睛的注视点,即眼球看向的具体位置或方向,通常以空间坐标或相对于某个参考点或平面的角度来表示。

3D原点(3D origin):凝视光线的起点在三维空间中的位置,即光线从眼睛的位置发出的点。

3D方向(3D direction):凝视光线的方向,即光线的路径或轨迹,表示为视线的方向,从眼睛指向观察场景的某个点。

注视点(Point-of-Gaze):观察者注视的具体位置或方向,通常以屏幕上的像素坐标表示,在凝视估计领域中,通常表示用户当前正在屏幕上注视的位置

Heatmap: 二维图像,其中的像素值表示了凝视原点(gaze origin)在输入图像中的可能位置。 训练得到的热图可以被视为对凝视原点位置的概率分布,热图用于表示模型对凝视起源位置的预测信心程度。

Depth Map: 二维图像,其中的像素值表示了凝视原点的深度或距离。深度图提供了凝视原点相对于摄像头的距离信息。通过深度图,可以了解观察者注视目标的距离。

相关文章:

论文阅读三——端到端的帧到凝视估计

论文阅读三——端到端的帧到凝视估计 主要内容研究问题文章的解题思路文章的主要结构 论文实验关于端到端凝视估计的数据集3种基线模型与EFE模型的对比在三个数据集中与SOTA进行比较 问题分析重要架构U-Net 基础知识 主要内容 文章从端到端的方法出发,提出了根据he…...

mysql 快捷登陆

要将 MySQL 的登录命令添加到环境变量中并为其创建别名,可以按照以下步骤进行操作: 1. 打开终端并编辑 /etc/profile 文件(使用所有用户的全局设置) vim /etc/profile 2. 在文件的末尾添加以下行来设置环境变量和别名 # 将 &q…...

理解排序算法:冒泡排序、选择排序与归并排序

简介: 在计算机科学中,排序算法是基础且重要的概念。本文将介绍三种常见的排序方法:冒泡排序、选择排序和归并排序。我们将探讨它们的工作原理、特点和适用场景,以帮助读者更好地理解和选择合适的排序方法。 冒泡排序 冒泡排序是…...

算法-02-排序-冒泡插入选择排序

一般最经典的、最常用的:冒泡排序、插入排序、选择排序、归并排序、快速排序、计数排序、基数排序、桶排序。那么我们如何分析一个"排序算法"呢? 1-分析排序算法要点 时间复杂度:具体是指最好情况、最坏情况、平均情况下的时间复杂…...

流量异常-挂马造成百度收录异常关键词之解决方案(虚拟主机)

一.异常现象:流量突然暴涨,达到平时流量几倍乃至几十倍,大多数情况下因流量超标网站被停止。 二.排查原因: 1.首先分析web日志:访问量明显的成倍、几十倍的增加;访问页面不同;访问IP分散并不固…...

磁力计LIS2MDL开发(1)----轮询获取磁力计数据

磁力计LIS2MDL开发.1--轮询获取磁力计数据 概述视频教学样品申请源码下载通信模式速率生成STM32CUBEMX串口配置IIC配置CS设置串口重定向参考程序初始换管脚获取ID复位操作BDU设置设置速率启用偏移消除开启温度补偿设置为连续模式轮询读取数据主程序演示 概述 本文将介绍如何使…...

C++学习笔记—— C++内存管理方式:new和delete操作符进行动态内存管理

系列文章目录 http://t.csdnimg.cn/d0MZH 目录 系列文章目录http://t.csdnimg.cn/d0MZH 比喻和理解a.比喻C语言开空间C开空间 b.理解a、C语言的内存管理的缺点1、开发效率低(信息传递繁琐)2、可读性低(信息展示混乱)3、稳定性差&…...

8、操作符重载

友元 可以通过friend关键字,把一个全局函数、另一个类的成员函数或者另一个类整体,声明为授权类的友元友元拥有访问授权类任何非公有成员的特权友元声明可以出现在授权类的公有、私有或者保护等任何区域且不受访问控制限定符的约束友元不是成员&#xf…...

前端组件库开发

通常我们会使用很多组件库,有时候我们会去看源码比如element,antd,然后发现多少是按需导出,和vue.use全局注册,依赖于框架的拓展。 组件库的开发依赖框架的版本和node的版本,这个是需要说明的,然…...

自定义日志打印功能--C++

一、介绍 日志是计算机程序中用于记录运行时事件和状态的重要工具。通过记录关键信息和错误情况,日志可以帮助程序开发人员和维护人员追踪程序的执行过程,排查问题和改进性能。 在软件开发中,日志通常记录如下类型的信息: 事件信…...

gitlab注册无中国区电话验证问题

众所周知gitlab对中国区不友好,无法直接注册,页面无法选择86的手机号进行验证码发送。 Google上众多的方案是修改dom,而且时间大约是21年以前。 修改dom,对于现在的VUE、React框架来说是没有用的,所以不用尝试。 直接看…...

【JAVA基础题目练习】----第二天

JAVA基础题目练习 1. 键盘录入数据,比较大小2. 代码重构(简化代码,少做判断)3. 键盘录入月份的值,输出对应的季节4. 获取三个数据中的最大值使用IF语句5. 用switch语句实现键盘录入月份,输出对应的季节6. 求…...

node.js和npm的安装与环境配置(2023最新版)

目录 安装node.js测试是否安装成功测试npm环境配置更改环境变量新建系统变量 安装node.js 1、进入官网下载:node.js官网 我选择的是windows64位的,你可以根据自己的实际情况选择对应的版本。 2、下载完成,安装。 打开安装程序 接受协议 选…...

ke14--10章-1数据库JDBC介绍

注册数据库(两种方式),获取连接,通过Connection对象获取Statement对象,使用Statement执行SQL语句。操作ResultSet结果集 ,回收数据库资源. 需要语句: 1Class.forName("DriverName");2Connection conn DriverManager.getConnection(String url, String user, String…...

【IC验证】perl脚本——分析前/后仿用例回归情况

目录 1 脚本名称 2 脚本使用说明 3 nocare_list文件示例 4 脚本执行方法 5 postsim_result.log文件示例 6 脚本代码 1 脚本名称 post_analysis 2 脚本使用说明 help:打印脚本说明信息 命令:post_analysis help 前/后仿结束后,首先填…...

Ansible适合的场景是什么?

Ansible将编排与配置管理、供应和应用程序部署结合并统一在一个易于使用的平台上。Ansible的一些主要场景包括: 配置管理:集中配置文件管理和部署是Ansible的一个常见场景。 应用程序部署:当使用Ansible定义应用程序,并使用Ansible Tower管…...

Flink 读写 HBase 总结

前言 总结 Flink 读写 HBase 版本 Flink 1.15.4HBase 2.0.2Hudi 0.13.0官方文档 https://nightlies.apache.org/flink/flink-docs-release-1.17/zh/docs/connectors/table/hbase/ Jar包 https://repo1.maven.org/maven2/org/apache/flink/flink-sql-connector-hbase-2.2/1…...

记录一次chatGPT人机协同实战辅助科研——根据词库自动进行情感分析

有一个Excel中的一列,读取文本判断文本包含积极情感词.txt和消极情感词.txt的个数,分别生成两列统计数据 请将 ‘your_file.xlsx’ 替换为你的Excel文件名,Your Text Column’替换为包含文本的列名。 这个程序首先读取了积极和消极情感词&…...

Java_LinkedList链表详解

目录 前言 ArrayList的缺陷 链表 链表的概念及结构 链表的种类 1.单向或双向 2.带头或不带头 3.循环或不循环 LinkedList的使用 什么是LinkedList LinkedList的使用 LinkedList的构造 LinkedList的其他常用方法介绍 LinkedList的遍历 ArrayList和LinkedList的…...

MacOS 12 开放指定端口 指定ip访问

MacOS 12 开放指定端口 指定ip访问 在 macOS 上开放一个端口,并指定只能特定的 IP 访问,你可以使用 macOS 内置的 pfctl(Packet Filter)工具来实现。 以下是一些基本的步骤: 1、 编辑 pf 配置文件: 打开 /…...

LeedCode刷题---滑动窗口问题

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、长度最小的子数组 题目链接:长度最小的子数组 题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。…...

leetcode24. 两两交换链表中的节点

题目描述 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 输入:head [1,2,3,4] 输出&#…...

TCP传输层详解(计算机网络复习)

介绍:TCP/IP包含了一系列的协议,也叫TCP/IP协议族,简称TCP/IP。该协议族提供了点对点的连接机制,并将传输数据帧的封装、寻址、传输、路由以及接收方式都予以标准化 TCP/IP的分层模型 在讲TCP/IP协议之前,首先介绍一…...

【LuatOS】简单案例网页点灯

材料 硬件:合宙ESP32C3简约版,BH1750光照度模块,0.96寸OLED(4P_IIC),杜邦线若干 接线: ESP32C3.GND — OLED.GND — BH1750.GND ESP32C3.3.3V — OLED.VCC — BH1750.VCC ESP32C3.GPIO5 — OLED.SCL — BH1750.SCL E…...

百度APP iOS端包体积50M优化实践(七)编译器优化

一. 前言 百度APP iOS端包体积优化系列文章的前六篇重点介绍了包体积优化整体方案、图片优化、资源优化、代码优化、无用类优化、HEIC图片优化实践和无用方法清理,图片优化是从无用图片、Asset Catalog和HEIC格式三个角度做深度优化;资源优化包括大资源…...

STM32-新建工程(标准库)

目录 STM32F10x新建工程(标准库) 移植文件夹 新建工程 添加启动文件和必需文件 在工程中加载新添加的文件 在工程中添加文件路径 在工程中添加main函数 添加lib库 添加必需文件 添加宏定义 点亮LED(标准库) STM32F10x新…...

Android集成科大讯飞语音识别与语音唤醒简易封装

目录 一、语音唤醒部分 1、首先在科大讯飞官网注册开发者账号 2、配置唤醒词然后下载sdk 3、选择对应功能下载 4、语音唤醒lib包全部复制到工程目录下 5、把语音唤醒词文件复制到工程的assets目录 6、复制对应权限到AndroidManifest.xml中 7、唤醒工具类封装 二、语音识…...

【Linux】telnet命令使用

telnet命令 telnet命令用于使用telnet协议与另一台主机进行通信。如果在没有主机参数的情况下调用telnet,它将进入命令模式,由其提示(telnet>)指示。在这种模式下,它接受并执行下面列出的命令。如果使用参数调用它…...

VCG 标记使用(BitFlags)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 对于网格的每个单形,我们都有一个称为BitFlags的组件,该组件存储固定大小的32位向量,用于各种需求。管理这些标志的相关类:vcg::tri::UpdateFlags与vcg::tri::UpdateSelection。主要的标记有:删除标记、边界标记…...

Pandas中的Series(第1讲)

Pandas中的Series(第1讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔…...