1、Cmake相关

cmake -S . -B build
-S . 表示CMakeLists.txt在哪个目录
-B build CMake生成结果在哪个路径 build就是路径名

简短
cmake -B build
或进入build 文件夹下 cmake

cmake --build build
在build文件夹下编译

常量:CMAKE_CURRENT_LIST_DIR      CMAKE_BUILD_TYPE

# INC_DIR
set(INC_DIR ${CMAKE_CURRENT_LIST_DIR}/../include CACHE INTERNAL "Header files directory for this project" FORCE)

# 第三方库头文件目录
set(INC_GTEST ${3RDPARTY_DIR}/googletest/${CMAKE_BUILD_TYPE}/include CACHE INTERNAL "INC_GTEST" FORCE)

# 设置第三方库文件路径
set(LINK_LIB_DIR_GTEST ${3RDPARTY_DIR}/googletest/${CMAKE_BUILD_TYPE}/lib CACHE INTERNAL "LINK_LIB_DIR_GTEST" FORCE)
set(LINK_DLL_DIR_GTEST ${3RDPARTY_DIR}/googletest/${CMAKE_BUILD_TYPE}/bin CACHE INTERNAL "LINK_DLL_DIR_GTEST" FORCE)

# 引入头文件
macro(include_headers)
    # 引入头文件
    include_directories(
            ${INC_DIR}
    )

    # 引入头文件(第三方)
    include_directories(
            ${3RDPARTY_INC_DIR}
    )
endmacro()

2、Linux命令

1、在 Linux 中,可以使用tar命令将文件目录压缩成tar.gz格式
     tar -czvf file.tar.gz file.txt
     tar -czvf files.tar.gz file1.txt file2.txt file3.txt
     tar -czvf mydir.tar.gz mydir
2、在Linux中,使用tar命令解压tar.gz格式文件
     tar -xzvf file.tar.gz -C mydir

3、在Linux中,新建文件夹
     mkdir fileName

4、删除文件或文件夹
     rm -rf file

5、修改文件的访问权限
     chmod 777 fileName

6、cmake编译
     cmake -S pathInput -B pathOut
     pathInput是 .cmake文件所在目录 还需要main.cpp和CMakeLists.txt文件
     pathOut是编译生成的目录

3、CV相关

1、视频插帧算法:GitHub - baowenbo/DAIN: Depth-Aware Video Frame Interpolation (CVPR 2019)

DAIN的全称是Depth-Aware Video Frame Interpolation,即深度感知视频帧插值。

视频帧插值的目的是在原始帧之间合成不存在的帧。

2、常用的光流方法包括 Lucas-Kanade 光流法、Horn-Schunck 光流法等。

常用的深度学习方法包括DAIN、Super SloMo。

3、Quadratic Video Interpolation(QVI)方法考虑了视频中帧间物体运动的加速度信息,采用匀加速运动模型进行插帧。该方法包括两个关键模块:quadratic flow prediction 模块和 flow reversal 模块。quadratic flow prediction 模块通过分析相邻帧之间的像素变化,预测出物体的运动轨迹和加速度信息。然后,根据这些信息生成一个二次函数来描述物体的运动。flow reversal 模块则用于反转光流,以确保生成的插值帧在时间上的连续性。

4、新视角合成:GitHub - bmild/nerf: Code release for NeRF (Neural Radiance Fields)

GitHub - HengyiWang/spann3r: [3DV'25] 3D Reconstruction with Spatial Memory

GitHub - graphdeco-inria/gaussian-splatting: Original reference implementation of "3D Gaussian Splatting for Real-Time Radiance Field Rendering"

4、OpenCV相关

1、计算两个平面间的透视变换矩阵

Mat findHomography(InputArray srcPoints, InputArray dstPoints, int method=0, double ransacReprojThreshold=3, OutputArray mask=noArray() )

输入数据格式CV_32FC2或者vector<Point2f>,输出矩阵3*3

目标寻找透视变换矩阵H,满足如下:s_i \begin{bmatrix} x_i' \\ y_i' \\ 1 \end{bmatrix} \approx H \begin{bmatrix} x_i \\ y_i \\ 1 \end{bmatrix}

反投影误差:\sum_i[(x_i'-\frac{h_{11}x_i+h_{12}y_i+h_{13}}{h_{31}x_i+h_{32}y_i+h_{33}})^2+(x_i'-\frac{h_{21}x_i+h_{22}y_i+h_{23}}{h_{31}x_i+h_{32}y_i+h_{33}})^2]

2、计算4组点对间的透视变换矩阵

Mat getPerspectiveTransform(InputArray src, InputArray dst, int solveMethod = DECOMP_LU)

Mat getPerspectiveTransform(const Point2f src[], const Point2f dst[], int solveMethod = DECOMP_LU)

输入数据格式Point2f[],输出矩阵3*3,是findHomography的特殊版本

3、对2D/3D点做透视变换

void perspectiveTransform(InputArray src, OutputArray dst, InputArray m )

输入为CV_32FC2 / CV_32FC3, 透视变换矩阵为3*3 / 4*4 CV_32FC1,输出格式与src一致

4、对图片做透视变换

void warpPerspective( InputArray src, OutputArray dst, InputArray M, Size dsize, int flags = INTER_LINEAR)

输入为图片src,M为3*3矩阵,dsize为输出图像尺寸,输出为图片dst

5、计算2个2D点击间最优的2D仿射变换

cv::Mat estimateAffine2D(InputArray from, InputArray to, OutputArray inliers = noArray())

输入为2组2D点集,输出为2*3矩阵

6、计算3组点对间的仿射变换矩阵

Mat getAffineTransform( const Point2f src[], const Point2f dst[] )

Mat getAffineTransform( InputArray src, InputArray dst )

输入为3组点对,输出为2*3矩阵

7、计算仿射变换的逆变换

void invertAffineTransform( InputArray M, OutputArray iM )

输入为2*3矩阵,输出为2*3矩阵

8、元素的矩阵变换

void transform(InputArray src, OutputArray dst, InputArray m )

输入m为2*2 / 2*3 CV_32FC1,src.channels=m.cols or m.cols-1,输出dst.channels=m.rows

9、对图片做仿射变换

void warpAffine( InputArray src, OutputArray dst, InputArray M, Size dsize, int flags = INTER_LINEAR)

输入为图片src, 仿射变换M为2*3矩阵,输出为图片dst

10、计算最优的3D仿射变换

int estimateAffine3D(InputArray src, InputArray dst, OutputArray out, OutputArray inliers, double ransacThreshold=3, double confidence=0.99)

输入两个3D点集,输出3D仿射变换矩阵3*4

11、寻找初始相机参数

Mat initCameraMatrix2D(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, Size imageSize, double aspectRatio=1.)

12、投影3D到图像平面

void projectPoints(InputArray objectPoints, InputArray rvec, InputArray tvec, InputArray cameraMatrix, InputArray distCoeffs, OutputArray imagePoints, OutputArray jacobian=noArray(), double aspectRatio=0 )

输入:3*N/N*3的1通道 or 1*N/N*1的3通道(or vector<Point3f>)

输出:2*N/N*2的1通道 or 1*N/N*1的2通道(or vector<Point2f>)

13、计算目标位姿从3D-2D点

bool solvePnP(InputArray objectPoints, InputArray imagePoints, InputArray cameraMatrix, InputArray distCoeffs, OutputArray rvec, OutputArray tvec, bool useExtrinsicGuess=false, int flags=ITERATIVE )

输入:3D点集和2D点集、相机参数、畸变参数

输出:旋转向量和平移向量

PnP(Perspective-n-Point)是求解 3D 到 2D 点对运动的方法。它描述了当我们知道n个 3D 空间点以及它们的投影位置时,如何估计相机所在的位姿。

已知量是空间点的真实坐标和图像坐标,未知量是相机的位姿。

求解方法,例如用三对点估计位姿的 P3P 、直接线性变换(DLT)、EPnP。

5、深度估计

https://cloud.tencent.com/developer/article/2443971

深度估计是一种计算机视觉任务,旨在从2D图像估计深度。该任务需要输入RGB图像并输出深度图像。深度图像包括关于从视点到图像中的物体的距离的信息,该视点通常是拍摄图像的相机。

1、基于深度学习方法depth-estimation的开山之作:Depth Map Prediction from a Single Image using a Multi-Scale Deep Network

https://arxiv.org/abs/1406.2283

2、再看2024年较火的由港大&字节提出用于任意图像的深度估计大模型:Depth Anything

  • 首先, 基于数据集 Dl 学习一个老师模型 T;
  • 然后, 利用 T 为数据集 Du 赋予伪标签;
  • 最后, 基于两个数据训练一个学生模型 S 。

https://zhuanlan.zhihu.com/p/704319608

单目深度估计(Monocular Depth Estimation, MDE)旨在从单张图像中恢复出场景的三维结构。

6、搜索算法

两种常见的搜索算法:深度优先搜索(Depth-First Search,DFS)和广度优先搜索(Breadth-First Search,BFS)。

1、深度优先搜索是一种基于栈数据结构的搜索算法。它从起始节点开始,沿着一条路径尽可能深地探索下去,直到无法继续前进时,再回溯到上一个节点,尝试其他未探索的路径。

通常使用递归或者栈来模拟深度优先搜索的过程。

优点:内存占用相对较少,适合搜索深度较大的问题,能处理复杂的树形结构。

缺点:可能陷入无限循环(环路),不保证找到最优解。

应用场景:

  1. 图的连通性问题:判断一个图是否连通,通过深度优先搜索遍历图中的所有节点,若能访问到所有节点,则图是连通的。

  2. 迷宫求解:在迷宫中寻找出路,深度优先搜索可以不断尝试新的路径,直到找到出口或遍历完所有可能的路径。

  3. 回溯算法:许多问题可以通过回溯算法解决,而深度优先搜索是回溯算法的一种实现方式,例如八皇后问题、数独求解等。

2、广度优先搜索是一种基于队列数据结构的搜索算法。它从起始节点开始,依次访问其所有相邻节点,然后再依次访问这些相邻节点的相邻节点,如此逐层向外扩展,就像以起始节点为中心,一层一层地向外扩散搜索。

使用队列来实现广度优先搜索。

优点:一定能找到最短路径,不会陷入无限循环。

缺点:内存消耗较大 ,搜索时间可能较长。

应用场景:社交网络中的好友关系搜索、地图导航、层次遍历二叉树。

7、形态学

形态学通常用于二值图像。

膨胀就是求局部最大值的操作,核B与图像卷积,即计算核B覆盖的区域的像素点的最大值,并把这个最大值赋值给参考点指定的像素。

腐蚀就是求局部最小值的操作。核B与图像卷积,即计算核B覆盖的区域的像素点的最小值,并把这个最小值赋值给参考点指定的像素。

开运算其实就是先腐蚀再膨胀,开运算可以用来可以去掉目标外的孤立点,消除小物体。

闭运算其实就是先膨胀再腐蚀,闭运算能够可以去掉目标内的孔。

形态学梯度就是膨胀图与腐蚀图之差。

顶帽就是原图与开运算图之差。

黑帽就是原图与闭运算图之差。

膨胀的原理应该是用结构的原点遍历所有原图中的背景点,看结构与原图中的前景点有没有重叠的部分,若有重叠的部分,则标记原图中的该背景点,使之成为新的前景点。

8、压缩模型

参考:模型压缩之知识蒸馏 - 飞桨AI Studio星河社区 (baidu.com)

1、知识蒸馏迁移学习,通过采用预先训练好的负载模型(Teacher model)的输出作为监督信号去训练另一个简单的网络,这个简单的网络被称为student model。

softmax:输入一个实数向量并返回一个概率分布,输出的每一个元素都是非负,并所有元素的综合等于1,第i个softmax(x)的计算方式为

\frac{e^{x_{i}}}{\sum_{j=1}^{n}e^{x_{j}}}

log_softmax:对softmax处理之后的结果执行一次对数运算, 即,log(softmax(output))。

NLLLoss:全称是negative log likelihood loss

CrossEntropy:交叉熵损失,等价于log_softmax+nll_loss,对于N分类问题,对于一个特定样本,已知真实标签,CrossEntropy计算公式为

其中,p表示真实值,one-hot形式,q是经过softmax计算后的结果,qk表示神经网络认为该样本为第k类的概率。

若该样本的真实标签为y,则CrossEntropy计算公式为

知识蒸馏:2014年,Geoffrey Hinton在 Distilling the Knowledge in a Neural Network 中提出知识蒸馏(KD)概念:把从一个复杂的大模型(Teacher Network)上学习到的知识迁移到另一个更适合部署的小模型上(Student Network),叫知识蒸馏。

2、剪枝

3、量化

量化是一种将较大尺寸的模型(如 LLM 或任何深度学习模型)压缩为较小尺寸的方法。量化主要涉及对模型的权重参数和激活值进行量化。

7B的大模型FP16部署权重14G,INT8是8G,INT4再砍半是4G。

量化两大作用:降低显存需要,提升推理性能。

FP32:深度学习默认使用精度,-3.4*10^38~3.4*10^38,精度10^-6

FP16:-65504~65504,精度10^-3

Int32:-2.15*10^9~2.15*10^9,精度1

Int16:-32768~32767,精度1

Int8:-128~127,精度1

Int4:-16~15,精度1

9、编译动态库

#include <string>
#ifndef IMAGEMULTIFOCUSHECHENG_d
#define IMAGEMULTIFOCUSHECHENG_d/* 宏定义导出*/
#ifndef MY_DLL
#define MY_DLL_API __declspec(dllexport)
#else
#define MY_DLL_API __declspec(dllimport)
#endifMY_DLL_API int myFunc(const std::string &strRtPth, const std::string &strPth);
#endif

https://blog.csdn.net/qq_42279379/article/details/138598351

10、结构光相机

单目结构光相机

        奥比中光的结构光深度相机激光发射器projectorIR相机RGB相机以及一块专门用于计算深度的处理器(深度引擎)组成。(IR表示红外,projector表示投影仪)

       结构光的基本原理:由激光模组发射散斑打在物体上O点,然后由IR模组接收由不同距离物体反射回来的散斑K1点,对于激光发出的同一射线PO,经过参考平面上的R点,在IR sensor上的成像点为R1。因此对于R1和K1来说,该成像点实际上同一射线在不同距离下的投影点,这组匹配点位置的差作为视差d,而O到相机平面的距离称之为深度Z,所以Z与视差d的相关可以根据相似三角形得知:

双目结构光

        双目结构光三维测量的硬件通常由单个DLP投影仪一对双目相机组成,DLP用于投影光栅条纹到测量物体表面,然后通过触发信号至双目相机,并采集反射的条纹图像。

        编码方式通常采用相移+时域相位解包,目的是为了获取绝对相位信息。其中,相移方法为了获取包裹相位,时域相位解包方法,例如格雷码方法、多频外差方法、倍频方法、Phase-coding方法,对相移方法得到的包裹相位进行解包,获取绝对相位信息。

11、

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/913444.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913444.shtml
英文地址,请注明出处:http://en.pswp.cn/news/913444.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GIT操作 学习

登录gitee登录方式&#xff1a;通过网站登录&#xff0c;使用注册时的账号&#xff08;通常是手机号&#xff09;和密码进行认证创建仓库 &#xfeff;新建仓库步骤命名规范&#xff1a;仓库名称应尽量符合规范&#xff0c;避免与已有仓库冲突&#xff0c;建议使用有意义的命名…

[论文精读]StruQ: Defending Against Prompt Injection with Structured Queries

StruQ: Defending Against Prompt Injection with Structured Queries [2402.06363] StruQ: Defending Against Prompt Injection with Structured Queries usenix security 2025 提示注入攻击是一个重要的威胁&#xff1a;它们诱使模型偏离原始应用程序的指令&#xff0c;转…

磁悬浮轴承的反馈线性化:非线性控制的智能解耦之道

摘要:磁悬浮轴承凭借无摩擦、高速度、长寿命等优势,成为高速旋转机械的理想支撑方案。然而,其本质非线性与强耦合特性使得传统线性控制方法难以满足高性能要求。本文深入解析反馈线性化技术如何精确解除磁悬浮系统的非线性耦合,揭示其从微分几何理论到工程实现的核心路径,…

探寻《答案之书》:在随机中寻找生活的指引

我强烈推荐4本可以改变命运的经典著作&#xff1a; 《寿康宝鉴》在线阅读白话文《欲海回狂》在线阅读白话文《阴律无情》在线阅读白话文《了凡四训》在线阅读白话文 在快节奏的现代生活中&#xff0c;人们常常面临各种困惑与抉择。当常规的思考与决策方式无法带来清晰答案时&am…

【PTA数据结构 | C语言版】计算1~n平方的和加上1~n的和

本专栏持续输出数据结构题目集&#xff0c;欢迎订阅。 文章目录 题目代码 题目 给定正整数 n&#xff0c;请编写程序&#xff0c;求 (12⋯n^2 )(12⋯n) 的值。 输入格式&#xff1a; 输入在一行中给出正整数 n&#xff08;≤100&#xff09;。 输出格式&#xff1a; 在一行中…

Assistant API的原理及应用

&#x1f9e0; 什么是 Assistants API&#xff1f; &#x1f4c5; **发布日期&#xff1a;**2023年11月6日&#xff0c;OpenAI在开发者大会上发布了 Assistants API —— 一款面向开发者的工具&#xff0c;用于在应用中构建 AI 助手。 ✅ 它可以做什么&#xff1f; Assistants …

《北京市加快推动“人工智能+医药健康“创新发展行动计划(2025-2027年)》深度解读

引言 随着新一轮科技革命和产业变革的深入推进,人工智能技术与医药健康的深度融合已成为全球科技创新的重要方向。北京市于2025年7月正式发布《北京市加快推动"人工智能+医药健康"创新发展行动计划(2025-2027年)》,旨在充分发挥北京在人工智能技术策源、头部医疗…

DPDK 关于 IOMMU 设置

一、IOMMU 基础概念 定义:IOMMU(Input/Output Memory Management Unit)即输入 / 输出内存管理单元,它是一种硬件机制,用于将设备发出的内存访问请求进行地址转换。在现代计算机系统中,它在设备与内存之间起到桥梁作用,提供内存保护和设备隔离功能。作用: 内存保护:防止…

pg_class 系统表信息

SELECT c.relname, c.relkind, CASE WHEN c.relkind r THEN 普通表 WHEN c.relkind p THEN 分区表 WHEN c.relkind f THEN 外表 WHEN c.relkind v THEN 视图 WHEN c.relkind m THEN 物化视图 ELSE 其他 END as table_type_desc FROM pg_class c JOIN pg_namespace …

【C++开源库使用】使用libcurl开源库发送url请求(http请求)去下载用户头像文件(附完整源码)

目录 1、libcurl介绍 2、libcurl库源码下载与编译 3、调用libcurl库的API接口实现http/https请求发送&#xff0c;实现头像文件下载 4、发送图片url下载图片文件的完整代码展示 5、使用libcurl发送https请求时可能会遇到的两个错误 在某SDK项目中&#xff0c;第三方…

在Docker容器中更改,保存为新的镜像

# 1. 进入原始容器 docker run -it --name mydev ubuntu:20.04 /bin/bash# 2. 在容器内做大量修改 apt update && apt install -y python3 mkdir /app && echo print("Hello from modified container") > /app/app.py# 3. 退出容器 exit# 4. 保存…

【网络与爬虫 13】智能伪装:Scrapy-Fake-UserAgent反检测技术实战指南

【网络与爬虫 13】智能伪装&#xff1a;Scrapy-Fake-UserAgent反检测技术实战指南 关键词&#xff1a;Scrapy-Fake-UserAgent、反爬虫、智能伪装、浏览器指纹、用户代理、爬虫检测规避、自动更新UA 摘要&#xff1a;本文深入解析Scrapy-Fake-UserAgent库的工作原理与应用技巧&a…

前端开发常见问题

前端开发常见问题技术文章大纲 引言 简要介绍前端开发在当前技术环境中的重要性&#xff0c;以及开发者常遇到的挑战和痛点。 浏览器兼容性问题 不同浏览器对CSS、JavaScript的支持差异常见的Polyfill和转译工具&#xff08;如Babel、PostCSS&#xff09;如何利用Can I Use…

文心开源大模型ERNIE-4.5-0.3B-Paddle私有化部署保姆级教程及技术架构探索

一起来轻松玩转文心大模型吧&#x1f449;一文心大模型免费下载地址: https://ai.gitcode.com/theme/1939325484087291906 前言 2025年6月30日&#xff0c;百度正式开源文心大模型4.5系列&#xff08;ERNIE 4.5&#xff09;&#xff0c;涵盖10款不同参数规模的模型&#xff0…

【操作系统】内存管理

要求&#xff1a; 1、在该实验中&#xff0c;采用可变分区方式完成对存储空间的管理&#xff08;即存储空间的分配与回收工作&#xff09;。 2、设计用来记录主存使用情况的数据结构&#xff1a;已分区表和空闲分区表。 3、在设计好的数据结构上设计一个主存分配算法&#xff0…

【算法笔记】5.LeetCode-Hot100-矩阵专项

1. 矩阵置零(t73) 中等难度&#xff0c;题目示例如下&#xff1a; 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用原地算法。示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&…

ORACLE 日常查询

一. 查询索引相关1. 查询索引所在的表空间&#xff0c;单个索引的大小SELECT ui.table_name, us.segment_name AS index_name, us.tablespace_name,ROUND(SUM(us.bytes) / 1024 / 1024 / 1024, 2) AS total_size_GB FROM dba_indexes ui JOIN dba_segments us ON ui.index_name…

【DeepSeek实战】17、MCP地图服务集成全景指南:高德、百度、腾讯三大平台接入实战

引言:为什么MCP是地图服务的下一代革命? 在数字化时代,位置服务已成为电商、出行、物流等行业的核心基础设施。但单一地图服务商的局限性日益凸显:某外卖平台因高德地图API突发故障导致30分钟订单配送延迟,某打车软件因百度地图路线规划偏差引发用户投诉激增,某物流企业…

设计模式之【动态代理】

目录 动态代理中存在的概念 JDK动态代理 代理工厂【ProxyFactory】实现【InvocationHandler】 目标类的接口【TargetInterface】 目标类【Target】实现了接口 测试类【JDKDynamicProxyTest】 CGLIB动态代理 添加Maven依赖 代理工厂【ProxyFactory】实现【MethodInterc…

【Linux驱动-快速回顾】一次性快速回顾TTY体系知识点(新手友好)

我将遵循一条严格的“问题驱动”和“演进”的逻辑线索来构建整个TTY知识体系。每引入一个新概念&#xff0c;都是为了解决前一个阶段出现的问题。这样&#xff0c;你不仅能知道“是什么”&#xff0c;更能深刻理解“为什么是这样设计的”。 第〇阶段&#xff1a;最原始的需求 …