探究高空视频全景AR技术的实现原理
1. 引言
笔者认为现阶段AR技术的应用是还是比较坑爹的,大都是噱头多但是实用的成分少,拿出来做做DEMO是可以,但是难以在实际的项目中落地产生实际的经济价值。一方面是很难在业务上难以找到合适的应用场景(可能管线相关的项目算一个),另一方面技术上也存在一些难以突破的问题。不管是手持设备还是AR眼镜,这些比较适合AR的硬件性能还是太弱了,导致其重建的空间信息与现实部分的空间信息存在较大的差距,这样的话就谈不上对现实的增强了。
不过笔者最近遇到了一个高空视频全景AR的项目,感觉具有不错的应用价值。具体可以参看这个案例:【数智实践】AR云景全局掌控,为园区装上“智慧之眼”,其中一张操作演示的的动态图如下:
这个案例看起来与我们经常碰到的AR应用有所不同,不过笔者认为尽管这个案例可能没有用到像AR Core/AR Kit这样的AR组件,也不是这些组件提供的功能点,但也是AR技术的应用案例。所谓AR(Augmented Reality,增强现实),指的就是虚实结合,以达到对现实增强的效果。在这个案例中,“实”的部分就是高空摄像头视频画面,“虚”的部分就是点的地理位置标注;更关键的地方在于,这些注记随着摄像头画面的移动和缩放而移动,并不是固定在某个像素位置。从GIS的角度上来看,这似乎在操作一张地图,这张地图还是动态的。
在AR Core中,像这样的功能被称为运动追踪,通常通过SLAM(simultaneous localization and mapping,实时定位和地图构建)技术来实现。SLAM主要解决这样的问题:一个机器人在未知环境中,通过计算机视觉等技术让机器人知道自己的具体位置,进而描绘出此环境完全的地图。但是笔者认为这个案例中应该用不到这种比较复杂的技术,基础的GIS+测绘+计算机视觉技术足应该以实现这种效果。
2. 详论
需要事先声明的是,由于高空视频全景AR的案例需要很多硬件上的操作和支持,笔者并没有条件具体实现其中的功能,更多的是从理论上探究其中的实现原理,如果哪里说的不太对,也请读者进行斧正。
2.1 静止画面
首先将这个问题简化成最基本的场景,也就是无操作画面静止的情况(不是画面中的视频不会动,指的是拍摄的位置不会变化)。在这种情况下,注记实际代表的地理位置(物方坐标)是不会变化的,像素的位置(相方坐标)也不会变化,那么我们只需要关心注记的位置如何投射到视频画面中。很显然,这个过程与相机标定的过程非常相似,已知一组点的物方坐标和像方坐标,那么可以标定出相机的内参和外参。具体可以参考笔者的这篇文章《一次实践:给自己的手机摄像头进行相机标定》。
在这个案例中,物方坐标可以通过GPS采集得到。不过GPS采集的点是WGS84地理坐标系的点。WGS84地理坐标系坐标是经纬度坐标,需要将其转换成笛卡尔坐标,也就是ECEF(地心地固直角坐标系)坐标。ECEF坐标的值很大,最好进一步将其转换成ENU(东北天站心坐标系)坐标,具体可参看笔者这篇文章《地心地固坐标系(ECEF)与站心坐标系(ENU)的转换》。理论上使用投影坐标系也可以,不过笔者认为还是ENU坐标系更加严密一点。另一方面,像方坐标可以在视频画面中刺点得到。由于获取像方点比较容易有误差,因此最好选取一些有明显特征的位置作为控制点来获取物方坐标和像方坐标。
经过笔者验证,即使获取了一些控制点的物方坐标和像方坐标,仍然不能像《一次实践:给自己的手机摄像头进行相机标定》这篇文章一样直接使用calibrateCamera
接口计算出摄像头的内参和外参。这个接口要求对于非平面标定,需要一个初始的相机内参矩阵作为输入。因为标定解算是一个非线性方程组迭代求解的过程,初始值差距太大就有很大概率求解失败。因此,内参不能在这里进行联合解算,还是要先进行预先解算,将摄像头的内参标定好。
在获取正确的内参之后,这个问题就简化成了PnP(Perspective-n-Points)问题:通过世界空间的一组点(最少3个)的物方坐标和像方坐标,计算出摄像头的外参(位置+姿态)。这个问题可以通过OpenCV的cv::solvePnP
接口来解决。实际上,这个过程就是《摄影测量学》中的后方交会。通过摄像机内参加上一组点的物方坐标和像方坐标,可以得到摄像机的外参,通常是三个旋转参数,三个平移参数。
总结下来就是,对于不用操作摄像头的静止画面,需要预先标定一次内参,然后通过实际的控制点标定一次外参。
2.2 缩放画面
摄像头静止不动的单幅画面比较好解决,但现在即使是一个普通的监控摄像头,也具备调焦和旋转角度的能力,当进行这些操作的时候,画面的注记是如何随着摄像头的动作而移动呢?
如果我们知道一点三维可视化的知识就知道,三维场景中如果要放大一个区域,有两种方式,一种是移动摄像头,将其与物体靠近;另外一种就是调整摄像头的焦距。调整焦距更加符合现实摄像头的操作,一般来说,将焦距调的越长,能看清的场景就可以越远,视场角也就会越小,就会产生画面放大的效果。基于这个思想,我们只需要实时获取在画面缩放时的焦距,加上其他内参和外参,就可以解算出注记点物方坐标对应的相方坐标,并在画面上做出调整即可。
话是这样说,不过另外一个问题在于前面我们说到摄像头的包括焦距的内参是通过相机标定的操作来实现的。我们要知道摄像头执行了调焦操作,必须使用接入摄像头对应的SDK,SDK会传出具体的焦距吗?传出的焦距与我们标定的焦距不一致该怎么办?对于专业相机,可能会提前将相机标定做好,会在SDK中传出具体的内参包括焦距值。但是对于普通相机,可能就还是需要自己进行标定了。
根据笔者的设想,调整焦距的操作并不是线性调整而是调整到几个固定的值,例如相机参数中经常可以看到的x0.5,x1.0,x2.0,x4.0这些值。也就是说,我们只需要在这些具体的调焦值时候进行相机标定,得到具体的摄像头内参;然后通过SDK获取这些调焦值,将其与摄像头内参关联上,就可以解算出正确的相方坐标,从而实现注记随缩放的动态移动。
总结:对于进行实时调焦的摄像头,要保证视频画面中的注记随着画面缩放而移动,需要预先进行有限次数的内参标定,然后通过实际的控制点标定一次外参。
2.3 缩放+旋转
内参的问题比较好解决,最多预先在不同情况下标定内参的值就可以了。但是如果要实现旋转就有点麻烦了,因为旋转参数是外参,是无法事先进行标定的。另外,旋转参数的获取也很麻烦,要知道摄像头旋转了必须通过摄像头SDK来获取,但是SDK获取的就一定的是我们想要的旋转参数吗?甚至我很怀疑是否能提供旋转参数。
在接着进行论述之前,笔者需要先介绍一下线性代数的理论知识。在线性代数的观点下,矩阵其实就是向量的张成空间。例如旋转变换决定的旋转矩阵,它的三个列向量这个三维坐标空间的三个基向量也就是基向量。旋转矩阵可以看成是这样的一个三维空间,一个X轴(1,0,0)、Y轴(0,1,0)、Z轴(0,0,1)标准笛卡尔坐标系经过旋转变换后形成的坐标系空间,旋转矩阵的三个列向量X、Y、Z轴的轴向量。
为了实时知道摄像头是否旋转了以及具体的旋转量,我们假设摄像头SDK一定会提供旋转参数,通常是是类似于“左右旋转-160度到+160度,上下旋转-75度到+75度”之间这样描述的数值。虽然我们并不知道这个摄像头给出的旋转决定的三维空间坐标系(相机坐标系)是如何描述的,但是我们可以将其复位到单位矩阵,也就是“左右旋转0度,上下旋转0度的位置”。在这个姿态下标定一次外参,令这个外参决定的旋转矩阵为 R a R_a Ra。接下来,摄像头旋转到任意位置的旋转参数都可以基于这个 R a R_a Ra来计算,因为在这种情况下,相当于是从世界坐标系通过旋转变换到了相机坐标系,世界坐标系下的 R a R_a Ra就是相机坐标系的单位矩阵。
如果“左右旋转X度,上下旋转Y度的位置”得到了一个旋转矩阵为 R b R_b Rb,那么摄像头在任意旋转姿态的旋转矩阵就是:
R = R b ⋅ R a R = R_b \cdot R_a R=Rb⋅Ra
注意这里使用的右乘,先变换的变换在矩阵级联的右边。并且忽略了一些细节,比如左右手坐标系,坐标系的X、Y、Z轴的轴对应关系。
总结:对于摄像头缩放+旋转的情况,需要预先进行有限次数的内参标定,然后通过实际的控制点在相机坐标系原点位置标定一次相对外参标定,从而得到任意姿态的绝对外参。
2.3 移动+旋转+缩放画面
虽然笔者讨论了只存在摄像头旋转的情况,但是笔者很怀疑一般的相机摄像头是不是能做到只旋转而不移动位置。传感器是非常精密的设备,即使从外观上看摄像机是旋转了角度,但是很可能传感器的成像中心已经产生了偏移。其实高空摄像头可能会搭配专门的移动和旋转的装置,也就是所谓的“云台”,可以通过电机驱动实现摄像头的移动、旋转、倾斜和俯仰。这样的话,外参的平移量也需要我们自己进行标定了。
我们还是假设高空云台相机的SDK能提供旋转参数和平移参数,因为毕竟你要知道摄像头动起来,就必须从摄像头的SDK获取参数。不过很显然了,从摄像头的SDK获取参数不是摄像头真正的外参,这里的外参应该是相对于整个高空云台相机局部坐标系的参数。在这种情况与只旋转的解法也比较相似,只不过计算要复杂一点。在平移参数为0,旋转参数为0的位置标定外参,假设得到的结果是平移量决定的平移矩阵 T a T_a Ta,旋转量决定的旋转矩阵 R a R_a Ra。之后通过云台移动相机,得到相对平移矩阵 T b T_b Tb,相对旋转矩阵 R b R_b Rb,那么摄像头在任意位置姿态的外参矩阵就是:
M = T b ⋅ R b ⋅ T a ⋅ R a M ={T_b} \cdot {R_b} \cdot {T_a} \cdot {R_a} M=Tb⋅Rb⋅Ta⋅Ra
其实这里有个问题,这里SDK提供的相对外参 T b T_b Tb和 R b R_b Rb怎么来的呢?其实也是要通过预先标定得到,不过相对外参的标定就有点复杂了,有时间再研究一下。
总结:对于摄像头移动+旋转+缩放的情况,需要预先进行有限次数的内参标定,然后通过实际的控制点在高空云台相机局部坐标系的原点位置标定一次相对外参标定,从而得到任意位态的绝对外参。
3. 总结
从本文提供的解决思路可以看到,这个技术方案与摄像头硬件的关系很大,不是纯软件能够搞定的事情。因此最好能使用专业的工业级相机与计算机视觉相机,能够通过SDK提供的API动态获取这些内参和外参,它们分别是:
- 内参:焦距、主点、像素尺寸、畸变系数。
- 外参:三个位置参数,三个姿态参数。通常是相对于局部的相机坐标系的外参。
如果是普通相机,需要做的工作就多了,主要是:
- 进行内参和外参标定。
- 开发SDK输出标定的内参和外参。
- 项目部署前在局部的相机坐标系的原点位置,通过一组控制点进行一次相对外参标定。
- 得到任意位态的绝对外参,加上内参实时计算出任意注记点的像素坐标。
相关文章:
探究高空视频全景AR技术的实现原理
1. 引言 笔者认为现阶段AR技术的应用是还是比较坑爹的,大都是噱头多但是实用的成分少,拿出来做做DEMO是可以,但是难以在实际的项目中落地产生实际的经济价值。一方面是很难在业务上难以找到合适的应用场景(可能管线相关的项目算一…...
大连指令数据集的创建--数据收集与预处理_02
1.去哪儿爬虫 编程语言:Python爬虫框架:Selenium(用于浏览器自动化)解析库:BeautifulSoup(用于解析HTML) 2.爬虫策略 目标网站:去哪儿(https://travel.qunar.com/trav…...
SOME/IP-SD -- 协议英文原文讲解5
前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 5.1.2.5 S…...
C#异步编程之async与await
一:需求起因 在 C# 中使用异步编程(特别是使用 async 和 await 关键字)通常是为了提高应用程序的响应性和性能,特别是在需要进行 I/O 操作或执行长时间运行的任务时。 常见应用场景如下: 1. 网络请求 HTTP 请求&…...
Spring Security 登录流程中的自定义解密实现
文章目录 前言1. Spring Security 核心组件介绍2. 前端密码多加密场景的处理3. 重写 DaoAuthenticationProvider4. 让 Spring Security 使用自定义 Provider5. 验证流程总结6. 完整性与调试 总结 前言 在现代 Web 安全体系中,Spring Security 是最常用的安全框架之一…...
考研出分24小时,人类精神状态图鉴
2月24日,上午10点起,各省考研初试成绩陆续公布,考生们或紧张的输入准考证号,或抱团等待“审判”。然而更魔幻的还在后头——下午4点,教育部竟在同一天直接发布了《2025年研考国家分数线》。 不少网友表示:…...
顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-大模型电话机器人
语音流直接对接Realtime API 多模态大模型 直接把音频流输出给大模型,大模型返回音频流。 顶顶通CTI对Realtime API 的支持 提供了以下2个APP可对接任意 •cti_audio_stream 通过TCP推流和播放流,适合用于人机对话场景。 •cti_unicast_start 通过旁…...
《Kafka 理解: Broker、Topic 和 Partition》
Kafka 核心架构解析:从概念到实践 Kafka 是一个分布式流处理平台,广泛应用于日志收集、实时数据分析和事件驱动架构。本文将从 Kafka 的核心组件、工作原理、实际应用场景等方面进行详细解析,帮助读者深入理解 Kafka 的架构设计及其在大数据领域的重要性。 1. Kafka 的背…...
【前端】XML,XPATH,与HTML的关系
XML与HTML关系 XML(可扩展标记语言)和 HTML(超文本标记语言)是两种常见的标记语言,但它们有不同的目的和用途。它们都使用类似的标记结构(标签),但在设计上存在一些关键的差异。 XML…...
(九)趣学设计模式 之 桥接模式!
目录 一、 啥是桥接模式?二、 为什么要用桥接模式?三、 桥接模式的实现方式四、 桥接模式的优缺点五、 桥接模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支…...
Web Worker 使用教程
一、概述 JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。前面的任务没做完,后面的任务只能等着。随着电脑计算能力的增强,尤其是多核 CPU 的出现,单线程带…...
算法仿真平台搭建1-FFMPEG+RtspSever快速搭建一个RTSP服务器
一、前言 本文相关的全部源码和RtspSever库,我已打包上传,欢迎大家免费下载,testRTSPSever。 每一个嵌入式视觉算法工程师,都应该有一套属于自己的算法仿真和测试环境。可以方便地进行视频、图像等素材进行在线导入,可…...
网络安全审计员
在当今数字化时代,随着信息技术的迅猛发展,网络安全问题日益凸显,成为各行各业不容忽视的重要议题。特别是对于企业、政府机构等组织而言,网络安全不仅关乎数据资产的安全,更与组织的声誉、客户信任乃至法律法规的遵从…...
SQL Server查询计划操作符(7.3)——查询计划相关操作符(7)
7.3. 查询计划相关操作符 58)Nested Loops:该操作符执行Inner Join,Left Outer Join,Left Semi Join,以及Left Anti Semi Join等逻辑操作。该操作符用其外(上面)输入中的每行数据对其内(下面)输入进行一个搜索,典型场景为其使用一个索引。查询处理器基于预期的成本决…...
数据库测试
TPCH 22条SQL语句分析 - xibuhaohao - 博客园 TPCH模型规范、测试说明及22条语句 - zhjh256 - 博客园 TPC-DS 性能比较:TiDB 与 Impala-PingCAP | 平凯星辰 揭秘Oracle TPC-H性能优化:如何提升数据库查询速度,揭秘实战技巧与挑战 引言 T…...
数据结构——排序4
上次我们讲解了快速排序的递归的几种做法。 那么,作为一名合格的程序员,改递归为非递归是必要的,现在我们来学习一下非递归的做法: 快速排序非递归: 首先,我们先了解一下,为什么要改为非递归…...
Pycharm中怎么加快下载三方包速度
Pycharm中怎么加快下载三方包速度 使用命令行下载,-i pip install transformers -i https://mirrors.aliyun.com/pypi/simple/ 在Windows系统的PyCharm中使用Python 3.12环境时,可通过以下几种方式配置不同镜像源来加快下载包的速度。 方式一:在PyCharm界面中直接配置镜…...
Spring MVC框架二:创建第一个MVC程序
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 有两种方式 利用配置 1、利用IDEA新建一个Maven项目,添加一个web支持 2、导入常用的依赖 <dependencies><dependency><groupId…...
Netty为什么性能很高?
大家好,我是锋哥。今天分享关于【Netty为什么性能很高?】面试题。希望对大家有帮助; Netty为什么性能很高? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Netty是一款高性能的网络通信框架,主要用于构建高性能的网络应用程序。…...
目标检测tricks
A. Stochastic Weight Averaging (SWA) 1. 基本思想 SWA 的核心思想是通过对训练过程中不同时间点的模型参数进行加权平均,从而获得一个更好的模型。具体来说,SWA 在训练过程的后期阶段对多个不同的模型快照(snapshots)进行平均…...
ai-2、机器学习之线性回归
机器学习之线性回归 1、机器学习2、线性回归2.1、梯度下降法 3、python下调用scikit-learn 1、机器学习 2、线性回归 ####所以y可以当成我们需要的结果,根据公式可以求的y一撇的值更小,所以更接近需要的结果,所以y一撇拟合性更好 2.1、梯度下…...
版图自动化连接算法开发 00001 ------ 直接连接两个给定的坐标点
版图自动化连接算法开发 00001 ------ 直接连接两个给定的坐标点 引言正文定义坐标点的类绘图显示代码直接连接两个坐标点引言 由于人工智能的加速普及,每次手动绘制版图都会觉得特别繁琐,作者本人在想可否搞一个自动化连接器件端口的算法,后期可以根据一些设定的限制进行避…...
删除变慢问题
问题: 有一个场景,每天都会删除数据,SQL为delete from xxx where record_date < DATE_SUB(now(), INTERVAL ? DAY) limit 1000 ,一直循环执行,当执行到最后一次满足条件的时候,就会很慢 原理分析 索引与…...
第十四届蓝桥杯Scratch11月stema选拔赛真题——小猫照镜子
编程实现: 小猫照镜子。(背景非源素材) 具体要求: 1). 运行程序,角色、背景如图所示; 完整题目可点击下方链接查看,支持在线编程~ 小猫照镜子_scratch_少儿编程题库学习中心-嗨信奥https://www.hixinao.com/tiku/s…...
Python标准库【os.path】操作路径
文章目录 1 该模块的源文件2 提取路径信息3 获取文件信息4 判定路径状态5 变换路径6 路径拆分 os.path模块实现了一些操作路径相关的函数。它们都接收字符串、字节串格式的路径或类路径对象(实现os.PathLike协议)为参数。 接收字符串时,函数返回的结果也是字符串&am…...
vue3 keep-alive 页面切换不触发onActivated和onDeactivated方法周期
<script setup lang"ts"> import { onActivated, onDeactivated, shallowRef } from vue import CompA from ../components/CompA.vue import CompB from ../components/CompB.vue const current shallowRef(CompA) onActivated(() > {console.log(组件被激…...
Qt 中集成mqtt协议
一,引入qmqtt 库 我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台时 方便,直接编译就行了。 原始仓库路径:https://github.com/emqx/qmqtt/tree/master 二,使用 声明一个单例类,将订阅到…...
JAVA面试_进阶部分_23种设计模式总结
1. 单例模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这 个实例。 (1)懒汉式 public class Singleton { /* 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载…...
初阶数据结构(C语言实现)——3顺序表和链表(3)
3.链表 3.1 链表的概念及结构 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 链表的物理结构 1.从上图可看出,链式结构在逻辑上是连续的,但是在物理上不一定连续…...
Vue打包(webpack)缓存
解决方法: 1、修改vue.config.js文件 const Timestamp new Date().getTime();module.exports defineConfig({configureWebpack{output: {filename: [name].${Timestamp}.js,chunkFilename: [name].${Timestamp}.js},},css: {extract: { // 打包后css文件名称添加…...
磁盘阵列新秀GSx并行文件存储是HPC高性能计算/AI 大模型-1替3好省预算
Infortrend 普安存储GSx 并行文件存储系统凭一体化设计,颠覆了传统存储系统的复杂配置模式。内置并行文件系统,支持私有协议或 CIFS 协议,实现客户端/服务器与存储设备的直接连接,无需额外配置I/O节点、元数据服务器及并行系统软件࿰…...
数据基础4: 线性代数基础行列式(矩阵)
二阶 三阶 矩阵和数据之间的关系。 行列式 n,n ;矩阵m行,n列 逆序数 在行列式的计算中,逆序数用于决定每一项前面的符号。 如果一个排列的逆序数是偶数,则该项前面的符号为正; 如果是奇数,则符号为负。 …...
【Project】基于Prometheus监控docker平台
一、设计背景 1.1项目简介 本项目旨在创建一个全面的容器化应用程序监控解决方案,基于Prometheus监控Docker平台上的各种服务。在当今的软件开发环境中,容器化技术已成为一种关键的工具,使应用程序能够更快速、可靠地交付和扩展。然而&…...
AcWing 蓝桥杯集训·每日一题2025·密接牛追踪2
密接牛追踪2 农夫约翰有 N 头奶牛排成一排,从左到右依次编号为 1∼N。 不幸的是,有一种传染病正在蔓延。 最开始时,只有一部分奶牛受到感染。 每经过一个晚上,受感染的牛就会将病毒传染给它左右两侧的牛(如果有的话…...
面试(进阶) —虚拟列表在什么场景使用,如何实现?
面试(进阶) —虚拟列表在什么场景使用,如何实现? 在前端开发中,当需要渲染大量数据时,传统的渲染方式往往会遇到性能瓶颈。一次性将大量数据渲染到DOM中,不仅会导致页面加载缓慢,还可能占用大量内存&#x…...
Linux基础 -- ARM 32位常用机器码(指令)整理
ARM 32位常用机器码(指令)整理 1. 数据处理指令(运算、逻辑、比较) 指令含义示例备注MOV赋值(寄存器传输)MOV R0, R1直接将 R1 复制到 R0MVN取反MVN R0, R1R0 ~R1ADD加法ADD R0, R1, R2R0 R1 R2ADC带进…...
【JAVA】阿里云百炼平台对接DeepSeek-V3大模型使用详解
1、DeepSeek简介 DeepSeek的火热让全世界见证了一场国产AI大模型走向巅峰的盛宴。DeepSeek的横空出世一方面让AI大模型的格局得到重塑,另一方面,对于普通人来说,也有机会零距离的体验到更懂国人的AI大模型。从很多使用过后的小伙伴们的反馈来…...
STM32之时钟树
左边是时钟产生电路,右边是时钟分配电路。中间的SYSCLK就是系统时钟72MHz,在产生电路有四个时钟源,分别是内部8MHz高速RC振荡器,外部的4-16MHz高速石英晶体振荡器,这个一般接8MHz,第三个是外部的32.768kHz低速晶振&…...
QT day1
作业 代码 class Widget: public QWidget {QPushButton* button; //按钮Widget* other; //显示对面 public:Widget(){button new QPushButton("按钮",this); //控件 认this作父this->resize(300,300); //界面大小button->resize(100,10…...
【机器学习】梯度下降法及使用一元二次方程模拟使用梯度下降法的代码实现
梯度下降法 一、摘要二、梯度下降法三、线性方程中使用梯度下降法 一、摘要 文本主要讲述了梯度下降法作为机器学习中的一种优化方法,用于最小化损失函数。它并非直接解决机器学习问题,而是作为求解最优参数的工具。通过二维坐标图直观展示了梯度下降法…...
Hive配置
目录 1. 引言2. 通过docker-compose联动启动Hadoop和MySQL容器3. 配置Hive3.1 下载并解压Hive-4.0.12.2 配置环境变量2.3 安装mysql-connector的jar包2.4 配置Hive2.4.1 hive-env.sh2.4.2 hive-site.xml2.4.2.1 javax.jdo.option.ConnectionURL2.4.2.2 javax.jdo.option.Connec…...
网络安全 越权分为几种
1. 权限查看 Linux 系统中的每个文件和目录都有访问许可权限,通过其确定谁可以通过何种方式对文件和目录进行访问和操作。 文件或目录的访问权限分为只读、只写和可执行3种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改…...
PHP面试题--后端部分
本文章持续更新内容 之前没来得及整理时间问题导致每次都得找和重新背 这次整理下也方便各位小伙伴一起更轻松的一起踏入编程之路 欢迎各位关注博主不定期更新各种高质量内容适合小白及其初级水平同学一起学习 一起成为大佬 数组函数有那些 ps:本题挑难的背因为…...
HTTP~文件 MIME 类型
MIME(Multipurpose Internet Mail Extensions)类型,即多用途互联网邮件扩展类型,是一种标准,用来表示文档、文件或字节流的性质和格式。最初是为了在电子邮件系统中支持非 ASCII 字符文本、二进制文件附件等而设计的&a…...
工程化与框架系列(4)--Webpack 高级配置详解
Webpack 高级配置详解 🛠️ Webpack 是前端工程化中最流行的构建工具之一,掌握其高级配置可以帮助我们构建更高效、更优化的应用。本文将深入探讨Webpack的高级配置技巧和最佳实践。 Webpack 核心概念回顾 🌟 💡 小知识…...
Let‘s Encrypt免费证书的应用示例
文章目录 前言证书申请证书介绍cert.pemchain.pemfullchain.pemprivkey.pem 使用步骤搭建简易demo应用新建nginx配置文件测试SSL是否生效 总结 前言 最近在搞苹果应用上架的问题,据说用HTTP会被拒,但貌似不绝对,2017年苹果曾发公告说必须要求…...
线性模型 - 支持向量机
支持向量机(SVM)是一种用于分类(和回归)的监督学习算法,其主要目标是找到一个最佳决策超平面,将数据点分为不同的类别,并且使得分类边界与最近的数据点之间的间隔(margin)…...
455. 分发饼干(LeetCode)
题目来源: 455. 分发饼干 - 力扣(LeetCode) 题目内容: 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i]…...
Harmony os next~鸿蒙应用开发入门教程
鸿蒙应用开发入门教程 基础准备与环境搭建 1. 了解鸿蒙系统 1.1 核心理念学习 HarmonyOS(鸿蒙系统)是华为推出的全场景分布式操作系统,其核心特点如下: 分布式能力 设备协同:手机、平板、智能手表、IoT设备等可无…...
数据库数据恢复—SQL Server附加数据库报错“错误 823”怎么办?
SQL Server数据库附加数据库过程中比较常见的报错是“错误 823”,附加数据库失败。 如果数据库有备份则只需还原备份即可。但是如果没有备份,备份时间太久,或者其他原因导致备份不可用,那么就需要通过专业手段对数据库进行数据恢复…...