![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础知识
leo0308
AI攻城狮
展开
-
CMakeList.txt 与makefile文件介绍
在C ++ 项目中, 我们经常可以看到CMakeList.txt 文件和makefile文件, 那么它们分别有什么用呢?下面的图示很好地解释了它们的作用以及两者之间的关系。原创 2024-06-26 20:54:15 · 124 阅读 · 0 评论 -
shell脚本中sudo密码自动输入
在shell脚本中, 我们可能需要用到sudo权限, 如果没有免密设置, 是需要输入密码的, 但是在自动化的脚本中,我们不希望进行手动密码输入,这时就需要用到密码自动输入。利用管道命令把密码传递给sudo命令。缺点是需要明文的密码。原创 2024-06-25 19:27:26 · 200 阅读 · 0 评论 -
linux 设置程序自启动
程序随系统开机自启动的方法有很多种, 这里介绍一种简单且常用的。原创 2024-06-25 19:21:57 · 342 阅读 · 0 评论 -
相机标定详解
在使用相机的视觉任务中,我们总是听到相机标定这个词, 那么相机标定到底是干什么, 为什么要进行相机标定呢?常用的相机标定方法又有哪些呢?本文试图从这几个方面来详细解释相机标定。与其他的文章不同, 本文抛开繁琐的数学公式以及成像几何原理, 用通俗易懂的方式来解释。原创 2024-05-11 19:15:31 · 412 阅读 · 0 评论 -
Ubuntu安装中文输入法
注意这个依赖的安装非常重要, 否则配置好中文输入法也无法输入中文。Ubuntu默认没有中文输入法, 本文将安装搜狗拼音输入法。-4 打开fcitx程序,在fcitx中配置输入法选项。1 安装搜狗拼音输入法。先去官网下载安装包,原创 2024-04-28 19:48:15 · 189 阅读 · 0 评论 -
nvidia-smi版本与nvcc-V
nvidia-smi 显示的版本是驱动的版本,而nvcc -V 显示的版本是cuda toolkit的版本。由于驱动版本是向下兼容的, 因此cuda toolkit版本小于等于驱动版本都可以正常使用。pytorch, cudadnn等要求的cuda版本都是指cuda toolkit的版本。原创 2024-03-02 15:06:57 · 768 阅读 · 0 评论 -
linux环境安装cuda toolkit
这里显示cuda版本是11.8, 这里显示的是驱动的版本。由于驱动是向下兼容的,因此只要cuda toolkit版本小于等于这个即可。由于安装时没有删除掉旧版本 ,因此现在环境中应该会存在多个cuda toolkit版本, 并且默认还是旧版本, 可以通过。安装过程中, 我们把驱动这一项去掉, 只安装cuda toolkit.如果环境中没安装过cuda版本, 这种情况下比较简单。首先要确认最高支持的版本,通过。如下为安装cuda toolkit 11.8.安装时为了避免更新驱动导致其他问题, 在执行。原创 2024-03-02 13:50:10 · 2471 阅读 · 0 评论 -
linux上pip3 install torch==1.11和pip3 install torch==1.11+cu115区别
在linux上安装torch时, 如果环境安装好了CUDA环境, 那么安装torch时不用刻意指定带cuda的版本, 最终安装的也是支持GPU的torch版本。但是仍然有一些小的区别,主要就是支持CUDA版本的不同。如上图, 安装torch时未指定需要安装gpu版本, 但是实际安装的也是支持gpu的版本。只是安装了支持cuda 10.2的版本。实际上系统的cuda版本是11.5.如果明确指定cuda版本, 则安装的就是对应的版本。注意, 直接安装可能会找不到对应版本, 需要通过。原创 2024-03-01 23:43:06 · 704 阅读 · 0 评论 -
conda常用操作
conda常用操作。原创 2024-03-01 21:08:13 · 341 阅读 · 0 评论 -
-o StrictHostKeyChecking=no用法
通过bash脚本后台执行对远程机器的操作时, 执行过程没有报错和其他提示信息, 执行之后却发现根本没有成功执行。其中一个原因就是没有加认证。最简单的解决办法就是忽略认证, 做法是添加"-o StrictHostKeyChecking=no"只不是脚本在后台执行的时候没有这个提示信息, 误认为没有问题, 其实脚本是没有执行成功的。原创 2024-02-29 15:06:52 · 847 阅读 · 0 评论 -
解决mp4视频无法拖动进度条的问题
海康威视的监控摄像头保存的视频,,mp4格式, 大小1G。用PotPlayer播放器进行播放, 不拖动进度条的话可以正常播放, 但拖动进度条后, 视频无法正常播放, 在 PotPlayer 中的表现就是只有进度条在走,视频画面停留在拖动前的画面。PS: 同时保存的有多个监控视频, 除了个别视频不能拖动进度条播放, 其他的都能拖动进度条播放。打开new.mp4尝试一下看是否能正常拖动进度条播放。视频文件有损坏, 时间轴信息丢失。原创 2023-12-20 22:34:07 · 8747 阅读 · 2 评论 -
判断一个点是否在一个多边形内部
通过观察可以发现, 当点在四边形内部时, 如果按顺时针方向的话, 点P在四条边AB, BC, CD, DA的右侧。当然如果按逆时针的话, 点P在四条边的左侧。点Q在AB,BC的右侧, 但在CD和DA的左侧。因此可以通过方向的一致性判断点是否位于多变形内部。如下图所示, 四边形ABCD, P在四边形内部,Q在四边形外部。原创 2023-09-07 12:18:55 · 604 阅读 · 0 评论 -
python使用matplotlib动画
使用matplotlib画动画。原创 2023-08-25 17:02:34 · 227 阅读 · 0 评论 -
python多帧图像合成视频
使用cv2.VideoWriter将多帧图像合成视频。原创 2023-08-23 19:29:22 · 579 阅读 · 0 评论 -
git clone使用https协议报错OpenSSL SSL_read: Connection was reset, errno 10054
在使用git 下载github上的代码时, 一般有ssh协议和https协议两种。解决方法也很简单, 设置正确的证书或者忽略证书。忽略证书的解决方法比较简单。如下设置即可忽略证书,这个设置是临时的。报错原因其实是证书错误问题。原创 2023-08-13 19:03:18 · 929 阅读 · 0 评论 -
深入理解mAP
目标检测中mAP指标深入理解。原创 2023-07-30 22:58:43 · 171 阅读 · 0 评论 -
计算机视觉常用数据集介绍
计算机视觉领域常用数据集总结。原创 2023-07-30 18:22:20 · 608 阅读 · 0 评论 -
通过网线连接获取树莓派的ip地址
通过网线连接获取树莓派ip地址原创 2022-11-28 15:31:24 · 3354 阅读 · 4 评论 -
Edge loss 解读
Edge loss原创 2022-06-24 21:25:29 · 6830 阅读 · 2 评论 -
python中partial函数的作用
partial是Python functools 的模块中的一个高阶函数。 它对普通函数进行封装, 主要功能是把一个函数的部分参数给固定住,返回一个新的函数。原创 2022-06-14 14:17:10 · 3829 阅读 · 0 评论 -
常用激活函数总结
激活函数在神经网络中具有重要的作用,是增强模型表达能力的重要模块。神经网络本质上就是一个**高维、非线性函数**, 高维通常就是通过加深模型来获得, 非线性主要是通过激活函数来获得。 我们常用的卷积, 池化,全连接, BN等操作, 他们都是线性操作, 即使堆叠再多层, 也无法获得非线性的表达能力, 而激活函数通常都是非线性的, 加入激活函数就可以在网络中引入非线性, 大大增强模型的表达能力。 ...原创 2022-06-13 23:27:55 · 99 阅读 · 0 评论 -
常用lr_scheduler总结
学习率网络训练中最重要的超参数之一, 通过学习率可以控制模型训练的速度。 因此, 一个好的学习率设置是非常重要的。 本文主要总结常用的学习率, 以及其用法。原创 2022-06-13 21:15:12 · 6852 阅读 · 0 评论 -
cv2.imread()读取图像的坑
cv2.imread()原创 2022-06-01 19:29:26 · 1134 阅读 · 0 评论 -
torch.scatter算子详解
0 scatter理解关于该算子, torch 官方的文档https://pytorch-cn.readthedocs.io/zh/latest/package_references/Tensor/#scatter_input-dim-index-src-tensor 是这么解释的:刚开始看了几次, 挺费解的。仔细理解之后, 发现其实用法也挺简单的。 这个操作的作用就是把src这个Tensor的值给更新到input这个Tensor中。 那更新到哪些位置呢, 就是由index 和dim去确定了。拿上面原创 2022-05-31 00:09:09 · 2370 阅读 · 0 评论 -
RuntimeError: cuda runtime error (700) : an illegal memory access was encountered at /pytorch/aten/s
在用torch + GPU运行程序的时候出现了这个错误,尝试了很多方法都没有解决, 最终踏破铁鞋无觅处, 解决办法竟然是升级了torch版本。在这里记录一下踩坑历程, 避免更多的人踩坑。遇到这个问题后, 我尝试了以下解决方案:1 首先怀疑的是, 是不是有数据在CPU上, 运算在GPU上, 初步排查没有发现。2 其次根据直接报错的位置进行分析, 发现报错的位置不是固定的, 但相对固定, 就那么2处, debug发现没问题,完整运行就出错, 后来发现不是一开始就出错, 而是推理到第9张图才报错。 检查了原创 2022-05-24 16:03:12 · 1741 阅读 · 0 评论 -
深入理解贝叶斯优化
参考: 贝叶斯优化基本原理总结 https://zhuanlan.zhihu.com/p/460839566这篇文章对贝叶斯优化的原理讲解的非常清楚。原创 2022-05-06 21:59:44 · 276 阅读 · 0 评论 -
Pycharm远程debug常见错误汇总
1 failed to add remote port forwarding解决办法有2个:1 重启Pycharm: File -> Invalidate Caches/ Restart2 重新设置Python Interpreter上面两种方法通常可以解决问题, 有时候需要多试几次。2 While creating remote tunnel for SshjSshConnection( @ )@6ac86b66: localhost:63342 == localhost:63342: G原创 2022-05-06 20:45:00 · 3696 阅读 · 0 评论 -
NMS理解
0 NMS介绍NMS(Non-maximum suppression)是非极大值抑制, 目的是过滤掉重叠的框。 为了保证检测的准确性, 检测网络的输出框一般都比较密集, 对一个物体, 会有多个预测框,NMS就是为了过滤掉这些重复的框, 保留质量最好的那一个框。1 算法1 首先对所有检测框按分类置信度进行排序, 选取置信度最高的那个框, 加入候选框集合;2 删除掉与候选框IoU大于某个阈值的框(大于阈值的说明与候选框是重复的,而已经选出来的候选框质量更高被保留);3 对剩余的框重复执行步骤1和2,原创 2022-04-26 19:35:53 · 1739 阅读 · 0 评论 -
python类定义私有成员和私有方法
0 引言在任何语言中,都会规定某些对象(属性、方法、函数、类等)只能够在某个范围内访问,出了这个范围就不能访问了。这是“公”、“私”之分。此外,还会专门为某些特殊的东西指定一些特殊表示,比如python类的名字就不能用class,def等,这就是保留字。除了保留字,python中还为类的名字做了某些特殊准备,就是“专有”的范畴。对于私有成员和私有方法, python不像C++那样有专门的关键字定义,如private。但是也有一些方法可以做到, 那就是以双下划线__开头(但不以双下划线结尾)的成员或方法是原创 2022-04-15 22:30:55 · 4775 阅读 · 0 评论 -
Expected object of device type cuda but got device type cpu...
Pytorch RuntimeError: Expected object of device type cuda but got device type cpu for argument #1 ‘self’ in call to _th_index_select这个报错的原因是:模型的部分参数或数据不在GPU而在CPU上。遇到这个问题需要仔细排查, 模型是否已经放在在GPU上, 通常使用model = model.cuda()data = data.cuda()把模型和数据分别放到GPU上。原创 2022-03-21 21:53:36 · 2688 阅读 · 0 评论 -
_pickle.UnpicklingError: pickle data was truncated报错解决
File "<string>", line 1, in <module>File "xx/anaconda/lib/python3.7/multiprocessing/spawn.py", line 105, in spawn_mainexitcode = _main(fd)File "xx/anaconda/lib/python3.7/multiprocessing/spawn.py", line 115, in _mainself = reduction.pickle.l原创 2022-03-18 21:51:28 · 9421 阅读 · 3 评论 -
每日论文速读
2022.02.21[1] Cyclical focal loss论文链接:https://arxiv.org/abs/2202.08978主要贡献:提出了一种新的周期性的focal loss, 并证明了它比交叉熵loss 和focal loss 更加通用, 在多个数据平衡/不平衡的任务上都取得了较好的结果。[2] DataMUX: Data Multiplexing for Neural Networks论文链接:https://arxiv.org/abs/2202.09318主要贡献: 提出原创 2022-02-21 20:49:59 · 1722 阅读 · 0 评论 -
深度学习benchmark汇总
1 图像分类http://rodrigob.github.io/are_we_there_yet/build/classification_datasets_results.html#494c5356524332303132207461736b2031按数据集汇总了各个算法的benchmark结果。 这些数据集包括:MNISTCIFAR-10CIFAR-100STL-10SVHNILSVRC2012 task 12 Browse State-of-the-Arthttps://pap原创 2021-12-19 22:05:08 · 4088 阅读 · 2 评论 -
Embeding层与fc层的理解
Embeding在自然语言处理中是十分重要而且常见的操作, 目的是把符号化的字符用数字表示便于计算机的处理, 同时具有一定的语义信息。比如, 假设英文词表有30000个词汇,当然最简单的办法是把这30000个词汇编号, 如0-29999, 这样也完成了数字化,但这个编号毫无语义信息, 编号的大小也没有什么意义, 因此简单的编号不是一个好的方案。One-Hot编码是一种可行的方案, 但是当词表非常大的时候(比如本例中的30000), One-Hot编码会非常稀疏, 也非常浪费计算和存储。Embedding就是原创 2021-11-21 19:34:17 · 2491 阅读 · 0 评论 -
pytorch分布式训练方法总结
0 概述在深度学习中, 出于训练效率的考虑, 甚至有时候模型太大导致单个GPU卡放不下的情况, 这时候都需要用到分布式训练。 从大的方面分类, 并行训练可以分为数据并行, 模型并行以及混合并行3种。其中数据并行应用最为广泛, 也比较成熟。而模型并行目前还不够成熟, 缺乏统一的方案。本文主要介绍数据并行的方式, 并且主要关注pytorch训练框架。pytorch的并行训练主要有3种方式:DP (DataParallel)DDP (Distributed DataParallel)Horovod原创 2021-11-20 22:57:50 · 2698 阅读 · 0 评论 -
通俗易懂理解核函数
关于核函数的理解可以参考[1] 机器学习中的核函数与核方法(是什么?为什么?怎么做?)[2] 一步一步带你分析核函数的原理-Kernel Method视频讲解的非常详细, 强烈建议一看, 对深入理解核很熟非常有帮助。分享几点自己的理解:1 为什么内积非常重要?因为距离、角度的计算都可以转换为内积的运算,而距离和角度这些几何性质完全表征了数据在特征空间的关系。2 映射函数确定了, 核函数也就确定了, 为什么要搞出个核函数?一是高维空间的内积运算太复杂; 二是因为映射函数一样不好找, 还不如一原创 2021-11-07 16:38:57 · 271 阅读 · 0 评论 -
gdb调试工具使用指南
python中gdb调试工具的使用使用场景段错误(无法被捕捉的 Python 异常)卡住的进程(这种情况下面没法使用 pdb 来进行跟踪)控制之外的后台处理 daemon 进程使用方法1 安装gdb工具和python扩展sudo apt-get install gdb python3.7-dbg注意: 不安装python3.7-dbg只安装gdb也可使用, 只是无法用python 工具查看python的调用栈, 只能查看到C的调用栈。 python3.7-dbg的安装包比较新, 国内镜像原创 2021-08-13 19:34:46 · 1469 阅读 · 2 评论 -
混合精度训练
1 什么是混合精度训练?通常说的混合精度训练是指float32与float16的混合。混合精度训练比较经典的工作是百度和Nvidia等提出的MIXED PRECISION TRAINING (https://arxiv.org/pdf/1710.03740.pdf)2 为什么要混合精度训练?通常的训练都是用float32进行的,但随着深度网络的发展, 模型变得越来越大, 对计算和存储都提出了巨大的挑战。 float16 的存储天然只有float32的一半, 那么用float16代替float32就能减原创 2021-05-30 17:11:51 · 1438 阅读 · 0 评论 -
彻底搞懂float16与float32的计算方式
1 float 16与float 321.1 float161.1.1 计算方式float 16又称半精度, 用16个比特也就是2个字节表示一个数。如下图所示, 其中1位符号位, 5位指数位, 10位小数位。那么, 这16个比特位是怎么表示1个数的呢 ? 分3部分:符号位 , 指数部分, 小数部分。a 符号位: 1代表负数, 0代表正数。b 指数部分,5个比特位, 全0和全1有特殊用途,所以是00001~11110, 也就是1到30, 减去偏置15,指数部分最终范围为-14 ~15.c 小原创 2021-05-30 15:34:00 · 43779 阅读 · 15 评论