- 博客(185)
- 收藏
- 关注
原创 图像质量评估
那么我们说的图像质量指的是什么呢?简单来说,图像设备的目标是“通过重现图像的方式,以可视化的方式传输目标信息给观察者或用户”。因此,可以说图像质量是观察者满意程度的评估指标。
2024-09-19 11:34:03 446
原创 OpenCV读取图片与PIL读取图片的差别
注意:Image.open()函数只是保持了图像被读取的状态,但是图像的真实数据并未被读取,因此如果对需要操作图像每个元素,如输出某个像素的RGB值等,需要执行对象的load()方法读取数据Image.open()读取的通道顺序是RGB,cv2.imread()读取的通道顺序为BGR。PIL函数读取图片的时候,结合np.array()使用。注意:PIL.Image.save()直接保存RGB的图片cv2.imwirte()保存图片的时候相当于做了BGR2RGB再去保存。
2024-09-13 11:14:26 396
原创 PyTorch:优化读取LMDB数据的五大策略
然而,与常规文件格式相比,LMDB的读取速度可能较慢。这主要是因为LMDB将所有数据存储在内存中,这意味着在读取数据时需要更多的内存和更复杂的数据结构。此外,PyTorch在读取LMDB数据时可能受到其他因素的影响,如I/O瓶颈、CPU和GPU之间的数据传输延迟等。优化PyTorch从LMDB中读取数据的速度可以提高模型训练和推理的效率。通过使用多进程、分批读取、高速缓存、GPU加速、优化模型结构和使用量化技术等方法,可以显著提高数据处理的速度,使PyTorch在深度学习领域中更加高效。
2024-09-05 14:10:24 547
原创 在隔离环境安装vscode serve
一句话概括:找到你的vscode client(就是软件)的commit,然后下载serve,拷贝到~/.vscode-server/bin/ 下就可以了。额外提供一个很好用的extension离线下载网址:https://open-vsx.org/
2024-08-28 15:07:21 198
原创 vscode extension old version下载 离线安装
如果你不幸在一个没有任何proxy的封闭环境下进行开发,而环境遗留的都是上个实际的软件,而刚好需要适配vscode,又想有些有用的extension的话,适配版本问题就很突出了,可以用一下的地址下载各种老版本的extension,拿走不谢~
2024-07-25 10:44:05 406
原创 Jupyter extension for VSCode on Linux throws error when doing anything Jupyter related
【代码】Jupyter extension for VSCode on Linux throws error when doing anything Jupyter related。
2024-05-29 17:00:48 280
原创 COCO eval 源码详解
COCO数据集的测试过程比较复杂,需要一定的时间才能够掌握。由于目前我有更重要的事情要忙,所以先贴出两个我认为写的非常棒的博客,阅读时注意先后顺序。等我有空了,就自己梳理一遍,写一个符合自己理解方式的源码详解。, 这篇博客讲清楚了COCO eval具体想测什么。这个是别人写的源码详解,感觉不错。
2024-05-22 16:28:40 254
原创 pkl 序列化和反序列化时环境必须一致
在上面的示例中,我们首先创建了一个Python字典对象data,然后使用pickle模块的dump()函数将其保存到名为data.pkl的pkl文件中。pkl文件是Python中pickle模块的产物,pickle模块可以将Python对象结构化并保存到文件中,以便之后可以重新加载和恢复。在Python中,我们可以使用pickle模块的dump()函数将Python对象序列化并保存到pkl文件中,使用load()函数从pkl文件中反序列化并加载Python对象。
2024-05-22 11:32:28 389
原创 pandas SettingWithCopyWarning解决办法
解决办法和说明:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy按照说明,将想要使用的slice 后的 dataframe进行深拷贝,一般就解决了问题。但最好确定你的目的是什么,比如如果是 slice 后就是要改变具体某个值(在原内存上),那最好用.loc来做。或者目的就是生成新的 dataframe 然后做操作,那最好先 deepcopy 下。
2024-05-20 15:01:15 479
原创 vscode中对 python 快速增加header 描述
之后在 python 开头,输入 header,则自动生成所需的 header 描述。然后再 Code/User/snippets/python.json文件中写入。在首选项→配置用户代码片段→python。
2024-04-25 20:04:57 487
原创 python 中的 collections 使用详解
可以设置一个默认值作为字典中新key的默认值。该默认值可以是任何对象, 包括函数、列表、元组、集合等。默认值不需要像dict那样事先定义,因为它在需要的时候会自动创建使用defaultdict,可以简化代码并提高代码的可读性,而且可以防止KeyError异常的出现。同时,defaultdict的性能与普通字典相当,因为底层实现并不影响字典的性能。
2024-04-07 22:11:19 1336
原创 记录下两个在用的做 lidar odometry 的算法 repo
熟肉:https://blog.csdn.net/qq_29320587/article/details/131534824。
2024-04-02 16:25:15 231
原创 图解PyTorch中的torch.gather函数和 scatter 函数
官方文档对torch.gather()的定义非常简洁定义:从原tensor中获取指定dim和指定index的数据看到这个核心定义,我们很容易想到gather()的基本想法其实就类似从完整数据中按索引取值般简单,比如下面从列表中按索引取值上面的取值例子是取单个值或具有逻辑顺序序列的例子,而对于深度学习常用的批量tensor数据来说,我们的需求可能是选取其中多个且乱序的值,此时gather()就是一个很好的tool,它可以帮助我们从批量tensor中取出指定乱序索引下的数据,因此其用途如下。
2024-04-01 20:03:03 768
原创 monocular depth estimation 网络的 regression loss 选择
其具体实现见:https://github.com/marcelampc/d3net_depth_estimation/blob/master/pytorch/util/loss_bank.py。
2024-04-01 19:49:53 191
原创 contextlib.redirect_stdout 使用
contextlib.redirect_stdout(io.StringIO()) 是 Python 中的一个上下文管理器,用于临时重定向标准输出流(stdout)到指定的文件对象或文件类对象。通常情况下,标准输出流指向终端(console),但有时你可能希望将输出重定向到内存中的字符串缓冲区,以便在代码中捕获和处理输出内容。在这个示例中,我们首先创建了一个字符串缓冲区 output_buffer。
2024-03-29 15:28:56 510
原创 利用lidar生成深度图
深度图像(Depth Images),也被称为距离影像(Range Images),是指将图像采集器到场景中各点的距离(深度)值作为像素值的图像,它直接反映了景物可见表面的几何形状,利用它可以很方便的解决3D目标描述中的许多问题。深度图像经过坐标转换可以计算为点云数据,有规则及必要信息的点云数据也可以反算为深度图像数据。从数学模型上看,深度图像可以看作是标量函数 在集合 上的离散采样,得到 ,其中 为二维网格(矩阵)的索引,
2024-03-28 20:11:16 971
原创 python函数参数中独立星号*的作用
python函数中间有一个()分隔,星号后面为*命名关键字参数,星号本身不是参数**。命名关键字参数,在函数调用时必须带参数名字进行调用。
2024-03-28 17:25:37 187
原创 视觉问答(Visual_Question_Answering, VQA)介绍
VQA任务定义如下:给机器输入一张图片和一个跟这幅图片相关的问题,机器需要根据图片信息对问题进行回答。训练阶段,需要先在一个由图像,问题,答案组成的三元组集上训练一个模型。测试阶段,给该预训练模型输入一张新的图像和一个新的问题,要求模型能够预测正确的答案。设模型参数为,则该任务的目标为求取!对于open-Ended问题,机器的输出是自然语言(算法需要生成一个字符串来回答问题)。对于multi-choice问题,机器挑选出正确答案。
2024-03-18 20:09:45 2890
原创 vscode vim 快捷键汇总
进入 insert mode 后就和之前的模式一样,快捷键有些是和原理的 vscode 一致,有些不一致。shift +a/i 防止 curcor 即可编辑全部目标。CRTL +D选中目标。
2024-01-26 14:49:49 1395
原创 常见几种加密算法的Python实现
全称:MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。md5加密算法是不可逆的,所以解密一般都是通过暴力穷举方法,通过网站的接口实现解密。
2023-12-15 17:05:44 2537
原创 Active learning Tiny Review for autonomous driving
阅读某一特定主题的一本书不会使你成为专家,阅读多本包含相似内容的书也不会。真正掌握一项技能或领域的知识需要来自多样化信息源的大量信息。这对于自动驾驶和其他人工智能技术同样适用。负责自动驾驶功能的深度神经网络需要经过详尽的训练,不仅要在日常行程中可能遇到的情况下,还要在希望它们永远不会遇到的异常情况下进行训练。成功的关键在于确保它们受到了正确数据的训练。什么是正确的数据呢?那些新颖或不确定的情境,而不是反复出现相同的场景。
2023-10-26 11:28:51 175
原创 git 误删分支恢复方法
2.使用git branch recover_branch[新分支] commit_id命令用这个commit创建一个分支。在使用git的过程中,因为人为因素造成分支(commit)被删除,可以使用以下步骤进行恢复。3.切换到recover_branch_abc分支,检查文件是否存在。首先用以下步骤创建一个新分支,修改一些文件后删除,以便进行恢复。3.切换到abc分支,随便修改一下东西后 commit。可以见到recover_branch_abc已创建。5.查看分支列表,abc分支已不存在。
2023-09-28 17:37:47 2695
原创 Python 关于整除以及负数取余遇到的问题
这里面就可以发现-13用 “//” 除以10的时候,结果是-2,从结果中我们可以看出,“//”是向下取整,“-1.3”会被取成-2,如果想要得到-1,就需要用“/”,然后将结果强制转换为int型。不过在“a//n”这一步,当a是负数的时候,我们上面说了,会向下取整,也就是说向负无穷方向取整。最近在编码的过程中,在整除以及取余的时候遇到了一些比较迷的问题,这里码一下这些问题,以备日后查看。在Python中,取余的计算公式与别的语言并没有什么区别:r=a-n*[a//n]这里r是余数,a是被除数,n是除数。
2023-09-28 17:35:22 248
原创 EOFError: Ran out of input
使用pickle.load(f)加载pickle文件时,报错:EOFError: Ran out of input.1、加载前判断文件是否为空。解决办法:加载非空文件。可能原因:文件为空。
2023-09-28 17:21:07 3579 1
原创 Python如何优雅地可视化目标检测框
通过cv2.rectangle 函数设置 thickness, 我们可以得到填充后的图像,进而利用opencv中的 cv2.add_weight 函数可以实现透明效果.上述代码中, 首先计算标签文本的大小, 然后据标签文本大小进行矩形填充, 最后使用函数cv2.putText 来画出对应的标签文本.接下来我们来给矩形框添加标签,我们观察上述画图函数,注意最后一个参数thickness,如果此值等于-1,那么将对矩形框执行填充效果.
2023-09-28 17:18:46 1668
原创 Python3中类型注解(typing)详解
学习和编写过C++和Java的工程师应该都熟悉在声明变量或方法时,需要指定变量或方法的返回值的类型,即显式声明变量。而在Python中,声明变量时无需指定其类型、定义方法时需声明其返回值类型。Tips: Python的动态类型、一切即为对象概念的体现。虽然这些操作给Python的编写带来的极大的便利,使得人们可以更加注重与相关逻辑的实现;但同时也会降低代码的可维护性与牺牲一部分代码的可读性。人们常常会为方法增加大量的方法注释和变量注释;
2023-09-28 16:50:52 814
原创 Python中Generators教程
要想创建一个iterator,必须实现一个有__iter__()和__next__()方法的类,类要能够跟踪内部状态并且在没有元素返回的时候引发StopIteration异常.这个过程很繁琐而且违反直觉.Generator能够解决这个问题.python generator是一个简单的创建iterator的途径.前面讲的那些繁琐的步骤都可以被generator自动完成.简单来说,generator是一个能够返回迭代器对象的函数.
2023-09-28 16:40:51 123
原创 Python 日期和时间戳的转换
datetime.date: 表示日期,常用的属性有year、month和daydatetime.time: 表示时间,常用的属性有hour、minute、second和microseconddatetime.datetime: 表示日期时间datetime.timedelta: 表示两个date、time和datetime实例之间的时间间隔,最小单位可达微秒datetime.tzinfo: 时区相关对象的抽象基类,由time和datetime类使用。
2023-09-28 16:30:37 331
原创 Python 类中的 __init__、__new__、__call__ 方法
任何事物都有一个从创建,被使用,再到消亡的过程,在程序语言面向对象编程模型中,对象也有相似的命运:创建、初始化、使用、垃圾回收,不同的阶段由不同的方法(角色)负责执行。定义一个类时,大家用得最多的就是方法,而和使用得比较少,这篇文章试图帮助大家把这3个方法的正确使用方式和应用场景分别解释一下。
2023-09-28 16:00:52 289
原创 static_cast、const_cast用法
用法说明:该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。来源:为什么需要static_cast强制转换?它主要有如下几种用法:•用于类层次结构中基类和子类之间指针或引用的转换。进行上行转换(把子类的指针或引用转换成基类表示)是安全的;进行下行转换(把基类指针或引用转换成子类指针或引用)时,由于没有动态类型检查,所以是不安全的。•用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。
2023-09-28 15:44:12 239
原创 yml文件中&、<<、 * 是什么意思
development: &default 表示设置development的别名为default。重复的节点(对象)首先由锚(&)定义别名,然后用星号(*)引用别名。表示把default节点的所有信息插入到production节点中。*default表示引用名称为default的别名节点信息。*用来引用节点数据,其实就是从节点取数据。
2023-09-28 15:01:38 426
原创 Linux shell 脚本中, $@ 和$# 分别是什么意思
示例:编写如下shell脚本,保存为test.sh。Linux shell 脚本中,$#:表示返回所有脚本参数的个数。$@:表示所有脚本参数的内容。# 分别是什么意思?
2023-09-28 14:58:59 3094
原创 给 shell 自定义快捷键
现在我们知道了本质上我们输入的快捷键会被终端模拟器转换成一系列的字符序列传给 shell。常见的终端模拟器例如 iterm2 和 VSCode 的 xterm 都支持将你的快捷键转换输入一段指定的字符序列。而在 zsh 中我们可以通过 bindkey 命令来定义快捷键,也就是在 zsh 接收到某个字符序列时执行某个操作。
2023-09-28 14:55:43 305
原创 Apollo高精地图(hdmap) 信号灯数据结构
百度的Apollo项目主要是依赖地图,配上各类传感器(加速度传感器,GPS,激光雷达,摄像头等)来实现定位,导航,决策,避障,遵守交规等行为。据我所知,高精地图对perception感知模块的用途是很大,比如说要用CNN分割周围车辆行人物体,hdmap能迅速给出需要关注的区域大小,可以删除不需要关注的绿化带和周围建筑等。另外2.0版本的信号灯识别,就依赖于地图里信号灯的位置和轮廓给定数据,然后投射到图像对应位置,能比所谓的纯图像识别要精确可靠。
2023-09-28 14:40:03 338
原创 在对bbox 进行坐标系转换时heading的处理--使用向量的旋转
接下来我们对这个结论进行一下简单的推广,对于任意两个不同的点A和B(对于求点绕另一个点旋转后的坐标时,A B重合显然没有太大意义),求A点绕B点旋转θ角度后的坐标,我们都可以将B点看做原点,对A和B进行平移变换,计算出的点坐标后,在其横纵坐标上分别加上原B点的横纵坐标,这个坐标就是A’ 的坐标。结论的进一步推广:对于任意非零向量AB(零向量研究意义不大),对于点C进行旋转,我们只需求出点A和B对于点C旋转一定角度的坐标即可求出旋转后的向量A’ B’ ,因为向量旋转后仍然是一条有向线段。
2023-09-22 18:06:14 174
原创 pytorch 使用DataParallel 单机多卡和单卡保存和加载模型的正确方法
这里我为了把三个模块save到同一个文件里,我选择对所有的模型先封装成一个checkpoint字典,然后保存到同一个文件里,这样就可以在加载时只需要加载一个参数文件。
2023-09-22 18:03:50 782
原创 MonoDETR: Depth-guided Transformer for Monocular 3D Object Detection 论文解读
单目目标检测在自动驾驶领域,一直是一个具有挑战的任务。现在大部分的方式都是沿用基于卷积的2D 检测器,首先检测物体中心,后通过中心附近的特征去预测3D属性。但是仅仅通过局部的特征去预测3D特征是不高效的,且并没有考虑一些长距离的物体之间的深度关系,丢失了很多的有意义的信息。在本作中,作者介绍了一种基于DETR框架的用于单目检测的网络。作者通过对原始的transformer网络进行改造,加入了以深度为引导的transformer结构。作者将此网络结构命名为MonoDETR。
2023-08-31 20:14:10 1667
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人