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

计算机视觉——基于人工智能视觉注意力的在线广告中评估检测技术

概述

自2023年在线广告行业估计花费了7403亿美元以来,很容易理解为什么广告公司会投入大量资源进行这一特定领域的计算机视觉研究。

尽管这个行业通常较为封闭和保守,但偶尔也会在arxiv等公共存储库中发布一些研究,这些研究暗示了更先进的专有工作,涉及面部和眼神识别——包括年龄识别,这是人口统计分析的核心内容:

这些研究很少出现在公共存储库中,它们以合法招募的参与者为基础,通过人工智能驱动的分析来确定观众在多大程度以及以何种方式与广告互动。

人类视觉本能

在这方面,广告行业自然对确定误报(分析系统错误解读受试者行为的情况)感兴趣,并希望明确界定观看广告时观众没有全神贯注的标准。

就屏幕广告而言,研究通常集中在两种环境中的两个问题上。这两种环境分别是“桌面”和“移动”,每种环境都有其特定的特征,需要定制的跟踪解决方案;而从广告商的角度来看,这两个问题分别是猫头鹰行为蜥蜴行为——观众倾向于不全神贯注地观看面前的广告。

如果你将整个头部转向广告之外,这就是“猫头鹰”行为;如果你头部姿势保持静止,但眼睛却从屏幕上移开,这就是“蜥蜴”行为。在分析和测试新广告的受控条件下,系统能够捕捉到这些行为至关重要。

SmartEye收购Affectiva后的一篇新论文解决了这些问题,提出了一种架构,利用多个现有框架提供涵盖所有必要条件和可能反应的组合特征集,并能够判断观众是否无聊、专注,或者以某种方式远离广告商希望他们观看的内容。

论文指出:

“有限 研究关注了在线广告期间的注意力监测。这些研究专注于估算头部姿势或注视方向以识别注意力转移的实例,但忽略了诸如设备类型(桌面或移动)、相机相对于屏幕的放置以及屏幕尺寸等关键参数。这些因素对注意力检测有着显著影响。”

“在本文中,我们提出了一种注意力检测架构,涵盖检测各种干扰因素,包括‘猫头鹰’和‘蜥蜴’行为(注视屏幕外)、说话、困倦(通过打哈欠和长时间闭眼)以及屏幕无人看管等情况。”

“与以往方法不同,我们的方法将设备特定特征(如设备类型、相机放置、桌面设备的屏幕尺寸以及移动设备的相机方向)与原始注视估算相结合,以提高注意力检测的准确性。”

方法和数据

由于这类系统的保密性和闭源性质,新论文并未将作者的方法与竞争对手直接进行比较,而是仅以消融研究的形式呈现其发现;此外,论文总体上也未遵循计算机视觉文献的常规格式。因此,我们将按照论文的呈现方式来审视这项研究。

作者强调,只有少数研究专门针对在线广告背景下的注意力检测。在AFFDEX SDK中,它提供实时多面孔识别,注意力仅从头部姿势推断,如果参与者的头部角度超过定义的阈值,则被标记为不专注。

在2019年的合作研究《Automatic Measurement of Visual Attention to Video Content using Deep Learning》中,一个包含约28000名参与者的数据库被标注了各种不专注行为,包括看向别处闭眼或从事不相关活动,并训练了一个CNN-LSTM模型,用于从面部外观随时间检测注意力。

然而,作者指出,这些早期的努力并未考虑设备特定因素,例如参与者是使用桌面设备还是移动设备;也没有考虑屏幕尺寸或相机放置。此外,AFFDEX系统仅专注于识别注视转移,而忽略了其他分心来源,而2019年的研究尝试检测更广泛的不专注行为集合——但论文指出,其使用的单一浅层卷积神经网络可能不足以完成这项任务。

作者观察到,这一领域的部分热门研究并未针对广告测试进行优化,广告测试的需求与驾驶或教育等领域不同——在驾驶或教育领域,相机放置和校准通常会提前固定,而广告测试依赖于未校准的设置,并且操作在桌面和移动设备的有限注视范围内。

因此,他们设计了一种用于检测在线广告期间观众注意力的架构,利用两个商业工具包:AFFDEX 2.0和SmartEye SDK。

这些先前的工作提取了低级特征,如面部表情、头部姿势和注视方向。这些特征随后被处理以产生高级指标,包括屏幕上的注视位置;打哈欠;以及说话。

该系统识别四种分心类型:屏幕外注视困倦说话;以及无人看管的屏幕。它还根据观众是使用桌面设备还是移动设备调整注视分析。

数据集:注视

作者使用了四个数据集来驱动和评估注意力检测系统:其中三个分别专注于注视行为、说话和打哈欠,第四个则来自真实广告测试会话,包含多种分心类型的混合。

由于工作的特定需求,为每个类别创建了定制数据集。所有策划的数据集都来自一个包含数百万次记录会话的专有存储库,这些会话记录了参与者在家庭或工作场所环境中观看广告的情况,使用基于网络的设置,并在获得知情同意的情况下进行——但由于这些同意协议的限制,作者表示新研究的数据集无法公开。

为了构建注视数据集,参与者被要求跟随屏幕上不同位置(包括边缘)的移动点,并在四个方向(上、下、左、右)上将视线移开屏幕,重复三次序列。通过这种方式,建立了捕捉与覆盖之间的关系:

移动点的片段被标记为专注,而屏幕外的片段被标记为不专注,从而产生了一个包含正例和负例的标记数据集。

每个视频大约持续160秒,分别针对桌面和移动平台创建了不同版本,桌面和移动平台的分辨率分别为1920×1080和608×1080。

共收集了609个视频,包括322个桌面和287个移动记录。标签根据视频内容自动应用,并将数据集拆分为158个训练样本和451个测试样本。

数据集:说话

在这个上下文中,定义“不专注”的一个标准是当一个人说话时间超过一秒钟(这种情况可能是短暂的评论,甚至是咳嗽)。

由于受控环境不记录或分析音频,因此通过观察估计的面部标志的内部运动来推断说话。因此,为了在没有音频的情况下检测说话,作者基于完全来自其内部存储库的视觉输入创建了一个数据集,并将其分为两部分:第一部分包含大约5500个视频,每个视频由三名标注者手动标记为说话或不说话(其中4400个用于训练和验证,1100个用于测试)。

第二部分包含16000个会话,这些会话根据会话类型自动标记:10500个会话显示参与者静默观看广告,5500个显示参与者对品牌发表意见。

数据集:打哈欠

尽管存在一些“打哈欠”数据集,包括YawDD和Driver Fatigue,但作者认为没有一个适合广告测试场景,因为它们要么包含模拟的哈欠,要么包含可能被误认为是恐惧或其他非打哈欠行为的面部扭曲。

因此,作者从其内部收藏中选择了735个视频,选择可能包含持续时间超过一秒钟的下巴下垂的会话。每个视频由三名标注者手动标记为显示活跃不活跃的打哈欠。只有2.6%的帧包含活跃的哈欠,突显了类别不平衡,数据集被拆分为670个训练视频和65个用于测试。

数据集:分心

分心数据集也来自作者的广告测试存储库,参与者在没有任何指定任务的情况下观看了实际广告。总共随机选择了520个会话(193个在移动设备上,327个在桌面环境中),并由三名标注者手动标记为专注不专注

不专注行为包括屏幕外注视说话困倦无人看管的屏幕。这些会话涵盖了世界各地的不同地区,桌面记录更为常见,因为网络摄像头的放置更加灵活。

注意力模型

提出的注意力模型处理低级视觉特征,即面部表情、头部姿势和注视方向——通过上述AFFDEX 2.0和SmartEye SDK提取。

这些特征随后被转换为高级指标,每个分心因素由一个独立的二元分类器处理,每个分类器都在自己的数据集上进行训练,以便独立优化和评估。

注视模型通过归一化的注视坐标确定观众是否在看屏幕或看向别处,桌面和移动设备分别进行校准。辅助这一过程的是一个线性支持向量机(SVM),它在空间和时间特征上进行训练,并包含一个记忆窗口,以平滑快速的注视转移。

为了在没有音频的情况下检测说话,系统使用裁剪的嘴部区域和一个3D-CNN,该网络在对话和非对话视频片段上进行训练。根据会话类型分配标签,时间平滑减少了可能由短暂嘴部运动导致的假阳性。

打哈欠通过全脸图像裁剪检测,以捕捉更广泛的面部运动,使用3D-CNN在手动标记的帧上进行训练(尽管打哈欠在自然观看中的频率较低,并且与其他表情相似)。

屏幕无人看管通过面部缺失或极端头部姿势来识别,预测由决策树完成。

最终注意力状态通过固定规则确定:如果任何模块检测到不专注,则将观众标记为不专注——这种方法优先考虑敏感性,并针对桌面和移动环境分别进行调整。

测试

如前所述,测试采用消融方法,移除组件并观察对结果的影响。

注视模型通过三个关键步骤识别屏幕外行为:归一化原始注视估计、微调输出以及估算桌面设备的屏幕尺寸。

为了理解每个组件的重要性,作者分别移除了它们,并在两个数据集中的226个桌面和225个移动视频上评估性能。结果通过G-mean和F1分数衡量,如下所示:

在每种情况下,移除步骤后性能都有所下降。归一化在桌面设备上尤其有价值,因为桌面设备的相机放置变化比移动设备更大。

该研究还评估了视觉特征如何预测移动相机的方向:面部位置、头部姿势和眼睛注视的分数分别为0.75、0.74和0.60,而它们的组合达到了0.91,这突显了——作者指出——整合多个线索的优势。

说话模型在垂直唇部距离上进行训练,在手动标记的测试集上达到了0.97的ROC-AUC,在更大的自动标记数据集上达到了0.96,表明在两者之间表现一致。

打哈欠模型仅使用嘴部纵横比达到了96.6%的ROC-AUC,当与AFFDEX 2.0的动作单元预测相结合时,提高到了97.5%。

无人看管屏幕模型在AFFDEX 2.0和SmartEye未能检测到面部超过一秒钟时将时刻分类为不专注。为了评估这一模型的有效性,作者手动标注了真实分心数据集中所有此类无面部事件,并识别了每个激活的潜在原因。模糊不清的情况(例如相机遮挡或视频失真)被排除在分析之外。

如下表所示,只有27%的“无面部”激活是由于用户实际离开了屏幕。

论文指出:

“尽管无人看管屏幕仅占触发无面部信号实例的27%,但该信号也可能因其他表明不专注的原因而被激活,例如参与者以极端角度看向屏幕外、进行过多运动或用物体/手显著遮挡面部。”

在最后的定量测试中,作者评估了逐步添加不同的分心信号——屏幕外注视(通过注视和头部姿势)、困倦、说话和无人看管屏幕——对整体注意力模型性能的影响。

测试在两个数据集上进行:真实分心数据集和注视数据集的一个测试子集。使用G-mean和F1分数衡量性能(尽管困倦和说话因在该上下文中相关性有限而被排除在注视数据集分析之外)。

如下所示,随着更多分心类型的添加,注意力检测性能持续提高,其中屏幕外注视这一最常见的分心因素提供了最强的基线。

关于这些结果,论文指出:

“首先,我们可以得出结论,整合所有分心信号有助于增强注意力检测。其次,注意力检测的改进在桌面和移动设备上都是一致的。第三,真实数据集中的移动会话在看向别处时头部运动显著,易于检测,因此移动设备的性能高于桌面设备。第四,添加困倦信号与其他信号相比,改进相对较小,因为它通常很少发生。最后,无人看管屏幕信号在移动设备上的改进相对大于桌面设备,因为移动设备更容易被留置无人看管。”

作者还将他们的模型与用于广告测试的先前系统AFFDEX 1.0进行了比较,即使当前模型的头部注视检测在两种设备类型上都优于AFFDEX 1.0:

“这一改进是由于纳入了头部在偏航和俯仰方向的运动,以及对微小变化进行头部姿势归一化。真实移动数据集中显著的头部运动导致我们的头部模型表现类似于AFFDEX 1.0。”

作者以一个(或许有些敷衍的)定性测试环节结束论文,如下所示。

作者指出:

“结果表明,我们的模型在不受控制的环境中能有效检测各种分心因素。然而,在某些边缘情况下,它可能会偶尔产生假阳性,例如在保持对屏幕注视的同时严重倾斜头部、嘴巴被遮挡、眼睛过于模糊或面部图像过于昏暗。”

结论

尽管结果代表了对先前工作的适度但有意义的进展,但这项研究的更深层价值在于它提供了一个窥探观众内心状态的视角。尽管数据是在获得同意的情况下收集的,但这种方法指向了未来可能超出结构化市场研究环境的框架。

这一有些偏执的结论得到了这一特定研究领域封闭、受限和保守的性质的支持。

原文地址:https://www.unite.ai/looking-for-owls-and-lizards-in-an-advertisers-audience/

相关文章:

计算机视觉——基于人工智能视觉注意力的在线广告中评估检测技术

概述 自2023年在线广告行业估计花费了7403亿美元以来,很容易理解为什么广告公司会投入大量资源进行这一特定领域的计算机视觉研究。 尽管这个行业通常较为封闭和保守,但偶尔也会在arxiv等公共存储库中发布一些研究,这些研究暗示了更先进的专…...

opencv函数展示

一、图像基础 I/O 与显示 1.cv2.imread() 2.cv2.imshow() 3. cv2.waitKey() 4. cv2.imwrite() 5. cv2.selectROI() 6. cv2.VideoCapture() 二、颜色空间与转换 1. cv2.cvtColor() 2. cv2.split() 三、阈值处理 1. cv2.threshold() 2. 特殊阈值方法...

Redis 的不同数据结构分别适用于哪些微服务场景

我们一块来分析下Redis 的不同数据结构在微服务场景下的具体应用: 1. String (字符串) 特点: 最基本的数据类型,二进制安全,可以存储任何类型的数据(文本、序列化对象、图片等),最大 512MB。支持原子性的…...

用node编写git钩子hooks的示例

关于 git 钩子函数,就是在 git 进行提交的时候触发一些可执行脚本的功能,详情可以看这篇博客【GIT知识】git进阶-hooks勾子脚本_git hooks-CSDN博客,我这里稍微演示一下怎么用 node 编写钩子的脚本 以 pre-commit 钩子为例,会在用…...

RISC-V架构新生态:鸿道Intewell操作系统×全志D1芯片

在全球化技术博弈与自主可控需求的双重驱动下,RISC-V架构正从开源革命走向产业落地。然而,RISC-V生态的成熟不仅需要硬件层面的突破,更需操作系统与芯片的深度协同。鸿道Intewell操作系统与全志D1(RISC-V架构)芯片的适…...

盈达科技:重新定义GEO优化的技术边界与商业未来​

​ ​​——以硬核技术领跑生成式AI时代的认知主权争夺战​​ ​​01 技术架构:AICC 2.0智能协同中心​​ ​​生成式AI优化的「核动力引擎」​​ 盈达科技独创的​​AICC 2.0(自适应-智能-认知-动态响应)智能协同中心​​,构建…...

芯片测试工具系统Demo示例

芯片测试工具系统Demo示例 一个简单的芯片测试工具系统Demo示例,包含基础功能和模拟测试流程,使用Python实现: python import time import random import csv from datetime import datetime class VirtualChip: """模…...

从单模态到多模态:五大模型架构演进与技术介绍

前言 1. ResNet — 残差神经网络背景核心问题与解决方案原理模型架构ResNet 系列变体技术创新与影响 2. ViT — Vision Transformer背景核心思想发展历程Transformer的起源:ViT的出现:ViT的进一步发展: 模型架构技术创新与影响 3. Swin Trans…...

基于 Java 的淘宝 API 调用实践:商品详情页 JSON 数据结构解析与重构

一、引言 在电商领域,淘宝拥有海量的商品数据。通过调用淘宝 API 可以获取商品详情页的 JSON 数据,这对于商家进行市场分析、竞品调研等具有重要意义。本文将详细介绍如何使用 Java 调用淘宝 API,获取商品详情页的 JSON 数据,并对…...

Sentinel源码—3.ProcessorSlot的执行过程二

大纲 1.NodeSelectorSlot构建资源调用树 2.LogSlot和StatisticSlot采集资源的数据 3.Sentinel监听器模式的规则对象与规则管理 4.AuthoritySlot控制黑白名单权限 5.SystemSlot根据系统保护规则进行流控 3.Sentinel监听器模式的规则对象与规则管理 (1)Sentinel的规则对象 …...

【C++11】列表初始化、右值引用、完美转发、lambda表达式

📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🌐 C 语言 上篇文章:unordered_map、unordered_set底层编写 下篇文章:C11:新的类功能、模板的可…...

Spring中IOC的重点理解(笔记)

Spring: 出现在2002左右.解决企业级开发的难度.减轻对项目模块 类与类之间的管理帮助开发人员创建对象,管理对象之间的关系. 补充:什么是OCP原则?(面试) (1)是软件七大开发当中最基本的一个原则&#xff…...

数据库系统概论|第三章:关系数据库标准语言SQL—课程笔记4

前言 前面详细介绍了关于SELECT语句的相关使用方法,继续上文的介绍,本文将继续介绍数据查询的其他相关操作,主要包括排序(ORDER BY)子句、分组(GROUP BY)子句。与此同时,介绍完单表…...

【1】CICD持续集成-docker本地搭建gitlab代码仓库社区版

‌一、gitlab社区版概述 GitLab社区版(Community Edition, CE)是一个开源的版本控制系统,适用于个人开发者、中小团队及大型企业。‌ GitLab社区版采用MIT许可证,用户可以免费使用和修改源代码。其主要功能包括代码托管、版本控制…...

Verdi工具使用心得知识笔记(一)

Verdi工具使用知识点提炼 本文来源于移知,具体文档请咨询厚台 一、基础概念 波形依赖 Verdi本身无法生成波形,需配合VCS等仿真工具生成.fsdb文件。核心功能模块 • nTrace:代码调试与追踪 • nSchema:原理图分析 • nState&…...

【25软考网工笔记】第二章 数据通信基础(4)数据编码

目录 一、曼彻斯特编码 1. 以太网 2. 题型(考试过的选择题) 1)题目解析 二、差分曼彻斯特编码 三、两种曼彻斯特编码特点 ​编辑 1. 双相码 2. 将时钟和数据包含在信号数据流中 3. 编码效率低 4. 数据速率是码元速率的一半 5. 应用案例 ​编辑 1&…...

【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——USB OTG测试

1)实验平台:正点原子ATK-DLMP257B开发板 2)浏览产品:https://www.alientek.com/Product_Details/135.html 3)全套实验源码手册视频下载:正点原子资料下载中心 第四章 ATK-DLMP257B功能测试——USB OTG测试…...

现代c++获取linux系统磁盘大小

现代c获取linux系统磁盘大小 前言一、命令获取系统磁盘大小二、使用c获取系统磁盘大小三、总结 前言 本文介绍一种使用c获取linux系统磁盘大小的方法 一、命令获取系统磁盘大小 在linux系统中可以使用lsblk命令显示当前系统磁盘大小,如下图所示 lsblk二、使用c获…...

tcp和udp的数据传输过程以及区别

tcp和udp的数据传输过程以及区别 目录 一、数据传输过程 1.1 UDP 数据报服务图 1.2 TCP 字节流服务图 1.3 tcp和udp的区别 1.3.1 连接特性 1.3.2 可靠性 1.3.3 数据传输形式 1.3.4 传输效率与开销 应用场景 一、数据传输过程 1.1 UDP 数据报服务图 这张图展示了 UDP 数据报服务…...

C++项目-衡码云判项目演示

衡码云判项目是什么呢?简单来说就是这是一个类似于牛客、力扣等在线OJ系统,用户在网页编写代码,点击提交后传递给后端云服务器,云服务器将用户的代码和测试用例进行合并编译,返回结果到网页。 项目最大的两个亮点&…...

C 语言中的 volatile 关键字

1、概念 volatile 是 C/C 语言中的一个类型修饰符,用于告知编译器:该变量的值可能会在程序控制流之外被意外修改(如硬件寄存器、多线程共享变量或信号处理函数等),因此编译器不应对其进行激进的优化(如缓存…...

mysql表类型查询

普通表 SELECT table_schema AS database_name,table_name FROM information_schema.tables WHERE table_schema NOT IN (information_schema, mysql, performance_schema, sys)AND table_type BASE TABLEAND table_name NOT IN (SELECT DISTINCT table_name FROM informatio…...

JavaScript事件循环

目录 JavaScript 执行机制与事件循环 一、同步与异步代码 1. 同步代码(Synchronous Code) 2. 异步代码(Asynchronous Code) 二、事件循环(Event Loop) 1. 核心组成 2. 事件循环基本流程 3. 运行机制…...

Linux》》bash 、sh 执行脚本

通常使用shell去运行脚本,两种方法 》bash xxx.sh 或 bash “xxx.sh” 、sh xxx.sh 或 sh “xxx.sh” 》bash -c “cmd string” 引号不能省略 我们知道 -c 的意思是 command,所以 bash -c 或 sh -c 后面应该跟一个 command。...

Git完全指南:从入门到精通版本控制 ------- Git 查看提交历史(8)

Git提交历史深度解析:从代码考古到精准回退 前言 在软件开发的生命周期中,提交历史是团队协作的时空胶囊。Git作为分布式版本控制系统,其强大的历史追溯能力可帮助开发者: 精准定位引入Bug的提交分析代码演进趋势恢复误删的重要…...

精益数据分析(2/126):解锁数据驱动的商业成功密码

精益数据分析(2/126):解锁数据驱动的商业成功密码 大家好!在如今这个数据爆炸的时代,数据就像一座蕴含无限宝藏的矿山,等待着我们去挖掘和利用。最近我在深入研读《精益数据分析》这本书,收获了…...

【ssti模板注入基础】

一、ssti模板注入简介 二、模板在开发中的应用 为什么要使用模板 为什么要用模板来提升效率: 不管我们输入什么,有一部分内容都是不会变的 除了内容之外其他都不会变,如果我们有成千上万的页面,如果不用模板,就算复…...

如何在 Kali 上解决使用 evil-winrm 时 Ruby Reline 的 quoting_detection_proc 警告

在使用 Kali Linux 运行 Ruby 工具(例如 evil-winrm)时,你可能会遇到以下警告: Warning: Remote path completions is disabled due to ruby limitation: undefined method quoting_detection_proc for module Reline这个警告会导…...

从零开始搭建PyTorch环境(支持CUDA)

从零开始搭建PyTorch环境(支持CUDA) 本文将详细介绍如何在Windows系统上为RTX 3050显卡配置支持CUDA的PyTorch环境。 环境准备 本教程基于以下环境: 显卡:NVIDIA RTX 3050操作系统:WindowsPython版本:3.1…...

【扩散模型连载 · 第 2 期】逆向扩散建模与神经网络的角色

上期回顾 我们在第 1 期中介绍了 正向扩散过程(Forward Process),并用 CIFAR-10 图像演示了加噪过程: 正向过程是固定的,无需训练,但我们感兴趣的是:如何从纯噪声一步步“还原”出真实图像&…...

Mysql约束

约束其实就是创建表的时候给表的某些列加上限制条件。 主键约束和自增长约束比较重要 一、Mysql约束-主键约束 简介 指定的主键不能重复也不可以出现空值 1.添加单列主键 语法1:create table 表名(字段名 数据类型 primary key); 点开…...

力扣热题100—滑动窗口(c++)

3.无重复字符的最长子串 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。 unordered_set<char> charSet; // 用于保存当前窗口的字符int left 0; // 窗口左指针int maxLength 0; // 最长子串的长度for (int right 0; right < s.siz…...

Linux网络编程第一课:深入浅出TCP/IP协议簇与网络寻址系统

知识点1【网络发展简史】 **网络节点&#xff1a;**路由器和交换机组成 交换机的作用&#xff1a;拓展网络接口 路由&#xff1a;网络通信路径 1、分组交换 分组的目的&#xff1a; 数据量大&#xff0c;不能一次型传输&#xff0c;只能分批次传输&#xff0c;这里的每一批…...

论文阅读笔记:Generative Modeling by Estimating Gradients of the Data Distribution

1、参考来源 论文《Generative Modeling by Estimating Gradients of the Data Distribution》 来源&#xff1a;NeurIPS 2019 论文链接&#xff1a;https://arxiv.org/abs/1907.05600 参考链接&#xff1a; 【AI知识分享】真正搞懂扩散模型Score Matching一定要理解的三大核心…...

C++零基础实践教程 函数 数组、字符串与 Vector

模块四&#xff1a;函数 (代码复用与模块化) 随着程序变得越来越复杂&#xff0c;把所有代码都堆在 main 函数里会变得难以管理和阅读。函数 (Function) 允许你将代码分解成逻辑上独立、可重用的块。这就像把一个大任务分解成几个小任务&#xff0c;每个小任务交给一个专门的“…...

照片处理工具:基于HTML与JavaScript实现详解

在当今数字时代,处理照片已成为日常需求。 本文将详细介绍一个基于HTML和JavaScript的照片处理工具的实现原理,这个工具可以调整图片尺寸、格式,并精确控制输出文件大小。 实现如下,不需要任何编辑器,txt文本、浏览器就行!! 工具功能概述 这个照片处理工具提供以下核心…...

MyBatis-OGNL表达式

介绍 OGNL&#xff08;Object-Graph Navigation Language&#xff09;是一种强大的表达式语言&#xff0c;用于获取和设置Java对象图中的属性。在MyBatis中&#xff0c;OGNL常用于动态SQL构建&#xff0c;如条件判断、循环等。以下是关于OGNL表达式的整合信息&#xff0c;包括…...

Web Worker在uniapp鸿蒙APP中的深度应用

文章目录 一、Web Worker核心概念解析1.1 什么是Web Worker&#xff1f;1.2 为什么在鸿蒙APP中使用Web Worker&#xff1f;1.3 性能对比实测 二、uniapp中的Web Worker完整实现2.1 基础配置步骤2.1.1 项目结构准备2.1.2 鸿蒙平台特殊配置 2.2 Worker脚本编写规范2.3 主线程通信…...

无人机故障冗余设计技术要点与难点!

一、技术要点 1. 冗余架构设计 硬件冗余&#xff1a;关键部件&#xff08;飞控、电机、电池、通信模块&#xff09;采用双余度或三余度设计&#xff0c;例如&#xff1a; 双飞控系统&#xff1a;主飞控失效时&#xff0c;备用飞控无缝接管。 电机动力冗余&#xff1a;六轴无…...

MySQL数据库表查询

测试表company.employee5 mysql> create database company; #创建一个库&#xff1b; 创建一个测试表: mysql> CREATE TABLE company.employee5(id int primary key auto_increment not null,name varchar(30) not null,sex enum(male,female) default male not null,hi…...

ADB的安装及抓取日志(2)

三、ADB抓取日志 在使用ADB抓取日志前&#xff0c;首先要保证电脑已经安装并配置ADB&#xff0c;在上一节已经验证完成。连接设备&#xff1a;可通过USB或者WI-FI&#xff0c;将安卓设备与电脑连接&#xff0c;并启用USB调试模式&#xff0c;此处我选择的是通过电脑与安卓设备…...

【C++】 —— 笔试刷题day_17

一、小乐乐改数字 题目解析 这道题&#xff0c;它们给定一个数&#xff0c;我们要对它进行修改&#xff1b;如果某一位是奇数&#xff0c;就把它变成1,&#xff1b;如果是偶数&#xff0c;就把它变成0&#xff1b; 让我们输出最后得到的数。 算法思路 这道题&#xff0c;总体…...

traceId传递

1、应用内传递通过ThreadLocal,InheritableThreadLocal传递 2、跨进程的应用间传递&#xff0c;这种会涉及到远程rpc通信&#xff0c;mq通信&#xff0c;数据库通信等。 feign:拦截器中改变请求头 feign.RequestInterceptor, 这个机制能够实现修改请求对象的目的&#xff0c…...

自然科技部分详解

光的反射 凸面镜与凹面镜 凸透镜和凹透镜 空气开关原理 短路是指电路中突然的电流过大&#xff0c;这会让线圈的磁性增大&#xff0c;来克服内设的弹簧导致断开 过载会让电流增大&#xff0c;两金属片受热膨胀触发断开 核电荷数是指原子核所带的电荷数。 在原子中&#xf…...

蓝桥杯 9. 九宫幻方

九宫幻方 原题目链接 题目描述 小明最近在教邻居家的小朋友小学奥数&#xff0c;而最近正好讲述到了三阶幻方这个部分。 三阶幻方是指将 1 ~ 9 不重复地填入一个 33 的矩阵中&#xff0c;使得每一行、每一列和每一条对角线的和都是相同的。 三阶幻方又被称作九宫格&#x…...

算法——希尔排序

目录 一、希尔排序定义 二、希尔排序原理 三、希尔排序特点 四、两种解法 五、代码实现 一、希尔排序定义 希尔排序是一种基于插入排序的排序算法&#xff0c;也被称为缩小增量排序。它通过将待排序的数组分割成若干个子序列&#xff0c;对子序列进行排序&#xff0c;然后…...

亚马逊热销变维权?5步搭建跨境产品的安全防火墙

“产品热卖&#xff0c;引来维权”——这已经悄然成为越来越多跨境卖家的“热销烦恼”。曾经拼品拼量&#xff0c;如今却要步步谨慎。商标侵权、专利投诉、图片盗用……这些问题一旦发生&#xff0c;轻则下架、账号被限&#xff0c;重则冻结资金甚至封店。 别让“热销”变“受…...

20250416-Python 中常见的填充 `pad` 方法

Python 中常见的填充 pad 方法 在 Python 中&#xff0c;pad 方法通常与字符串或数组操作相关&#xff0c;用于在数据的前后填充特定的值&#xff0c;以达到指定的长度或格式。以下是几种常见的与 pad 相关的用法&#xff1a; 1. 字符串的 pad 操作 虽然 Python 的字符串没有…...

JavaEE-0416

今天修复了一个查询数据时数据显示哈希码&#xff1a; 搜索检阅后得到显示该格式的原因&#xff1a; 重写 POJO 类的 toString 方法 在 Java 编程中&#xff0c;默认情况下&#xff0c;对象的 toString() 方法会返回类似于 com.cz.pojo.Score2a266d09 的字符串。这是由于默认…...

团体程序设计天梯赛L2-008 最长对称子串

对给定的字符串&#xff0c;本题要求你输出最长对称子串的长度。例如&#xff0c;给定Is PAT&TAP symmetric?&#xff0c;最长对称子串为s PAT&TAP s&#xff0c;于是你应该输出11。 输入格式&#xff1a; 输入在一行中给出长度不超过1000的非空字符串。 输出格式&…...