
python
木盏
坐标 北京
喜欢写博客的CV工程师
levio@pku.edu.cn
展开
-
【python脚本】将背景色为白色的图片背景设置为透明
img文件夹存放你要转换的原图,rgba文件夹存放输出结果。原创 2025-03-06 16:43:07 · 190 阅读 · 0 评论 -
【已解决】operator “is not“ in taichi scope is not supported
图形处理库taichi不支持"is not"操作,本人在全网没找到合适的解决方案。通过小小的尝试,发现fix了这个bug,发帖记录一下,希望能够帮助到遇到同样困难的道友。原创 2024-12-23 15:59:11 · 138 阅读 · 0 评论 -
【优雅版】Python进行条件排序
由于sorted排序默认首字母排序,于是会导致上述的问题,"10"会排到"2"前面。工程上解决这个问题可以给每个文件补0,但这个需要修改文件名,做法不太优雅。众所周知,Python内置了排序函数sorted(),但sorted()经常排序不是我们想要的顺序。这种排序就是我们想要的了~原创 2024-12-06 15:53:47 · 152 阅读 · 0 评论 -
【优雅版】python在列表中查找符合条件的元素
Python处理列表是最基础的操作之一,但一不小心就容易不优雅。Python写得不优雅还不如去写cpp~原创 2024-12-06 15:39:29 · 132 阅读 · 0 评论 -
Overleaf中插图需要的pdf图片格式制作方法(python)
Overleaf很多模板中,需要用pdf格式来插入图片,即将png/jpg图片转化成pdf,才能插入此图。这么一来,就需要额外做一步转化。原创 2024-08-23 18:21:24 · 797 阅读 · 0 评论 -
【张量乘法】pytorch中的mul、dot、mm、matmul
张量的乘法是pytorch等神经网络开发框架中最常见、最基本的操作之一。原创 2024-05-27 10:11:10 · 921 阅读 · 2 评论 -
通过mask得到bbox(numpy实现)
在SAM的加持下,我们很容易得到物体的mask,但是物体的bbox信息通常也很有用。那么,我们可以写一个函数,立马可以通过mask得到bbox。原创 2024-05-07 17:33:41 · 578 阅读 · 0 评论 -
Django实验(远程访问+图片显示)
众所周知,Python除了不能生孩子什么都会。Python也是可以做web服务的。Python做web有一个重点优势是:做一个快速的AI Demo。第一步:安装一个版本5.0以上django第二步:构建咱们的Django工程,我取名为原创 2024-05-06 19:36:09 · 619 阅读 · 0 评论 -
kmeans聚类sklearn实现(Python实验)
Kmeans毫无疑问,好用又“便宜”的算法,经常在很多轻量化场景中实现。所谓的“聚类”(Clustering),就是通过欧氏距离找哪些点构成一个簇。我们怎么决定哪些点属于哪一簇,以及每簇的中心分别是什么?原创 2024-04-09 12:52:32 · 598 阅读 · 0 评论 -
Python求空间中两条直线的距离及各自最近的点
已知空间中有两条异面直线,它们各自必有一个点距离另一条直线最近,并且最近点的连接也分别垂直这两条直线。原创 2024-04-08 23:15:35 · 411 阅读 · 0 评论 -
conda在【已有环境】上新建虚拟环境
在做Python工程时,经常遇到的一个问题就是:为了复现某个项目需要特地新建一个虚拟环境。但是,我们两个Project需要的环境几乎相同,只是有少数模块的版本互斥,这个时候都从0装一遍虚拟环境,就比较耽误时间。今天介绍的方法是:我们在已经建立好的虚拟环境的基础上再新建一个虚拟环境,不会影响原虚拟环境,即克隆虚拟环境。命令行如下:原创 2024-04-02 01:59:42 · 1683 阅读 · 0 评论 -
将rgb图像加mask变差rgba图像(透明背景)
我们做demo的时候经常需要把人物或者物体分割出来,一个比较好的展示效果就是用分割mask把背景变成透明的,于是就需要将原本的rgb图像通过mask的指导变成rgba。原创 2024-04-01 14:01:03 · 389 阅读 · 0 评论 -
python读取ply文件
ply文件,是"Polygon File Format"的简称,即多边形文件格式。一般可以理解为,一个ply文件表示一个三维图形。python常见的读取ply文件的方法有两个:plyfile和open3d原创 2024-03-28 20:56:20 · 3503 阅读 · 0 评论 -
python对类对象进行排序
排序是最常见的操作之一,对于优雅的python而言,绝大部分情况下不需要手动快排,调用内置排序函数。直接对sorted函数增加一个key描述即可。但如果想根据类对象列表的某个类属性进行排序呢?原创 2024-03-28 01:10:07 · 421 阅读 · 0 评论 -
numpy矩阵做二维卷积
卷积在数据处理上是非常常用的手段,不局限于深度学习算法,比如传统的Sobel边缘检测等等,都需要用到卷积算法。这里用到scipy来做二维卷积。模式选用请参考文字《为什么需要用到numpy来做二维卷积呢?答:轻量、方便手写卷积核。原创 2024-03-27 16:34:04 · 954 阅读 · 0 评论 -
PSNR/SSIM/LPIPS图像质量评估三件套(含代码)
PSNR,峰值信噪比,是基于MSE的像素比较低质量评估,一般30dB以上质量就不错,到40dB以上肉眼就很难分别了。在图像质量评估上,有三个重要指标:PSNR,SSIM,LPIPS。LPIPS,利用AI模型来量化图像之间的相似性。取值范围也是[0,1],与SSIM相反,像这种常见的图像质量评价指标,都会收录到torchmetrics里面。SSIM,结构相似性,从分布上来比较相似性,量化到(0-1)之间,代码里给了两种PSNR实现方法,计算结果差别不大。LPIPS是越小则证明图像质量越好。原创 2024-03-21 15:16:20 · 2854 阅读 · 0 评论 -
Python自动发邮件
我经常需要用手机看服务器的运行情况,所以就写一个脚本,通过邮件把服务器运行情况发送给我,直接手机可以查看炼丹状态。事实证明还是很有用的,所以撰写一篇博文将脚本分享给大家。脚本由本人原创,借用请说明出处。这里只能使用QQ邮箱,如果使用其他邮箱需要改写对应的smtp服务器。同时,使用发送方邮箱时需要在设置中。如何开启SMTP服务器?两个python包。,否则将会无法登录。原创 2024-03-01 22:10:06 · 514 阅读 · 0 评论 -
python将图片序列保存成gif
这里用到的模块是imageio。用imageio.mimsave即可将图片序列保存成gif动态图。以下是本人编写的小实验:原创 2023-11-03 16:42:07 · 771 阅读 · 0 评论 -
python用cv2画图(line, rectangle, text等)
Python做图像图形研究的时候,通常需要画很多辅助几何形状(比如bounding box等)。基于opencv的几何图形绘制具有易用性,而且天然能和numpy数组交互。本文总结了几种常用的cv2画几何图形的方法,当一个简易的手册使用:原创 2023-11-03 13:48:10 · 1925 阅读 · 0 评论 -
numpy中的np.newaxis
空占一个维度而已,等价于None原创 2023-11-01 16:34:09 · 161 阅读 · 0 评论 -
numpy矩阵索引中的省略号和冒号
numpy是Python中最常见的矩阵操作工具。有时候,我们需要从一个大矩阵中读取一个小矩阵,则需要用一些索引技巧。原创 2023-11-01 15:58:37 · 335 阅读 · 0 评论 -
Python将自己的代码打包成whl
Python的模块化机制是值得所有编程语言学习的,一般来说,开发者想得到的库都会有Python版本的。这种优势便得益于Python的易打包性。本文介绍的方法至少有两种优势:将自己的代码变成开源库,直接通过pip install xxx即可安装,很容易做开源工作;将自己经常用的代码段打包成whl,使代码复用性更高,并且彻底解决python繁杂令人诟病的多级目录引用不方便的问题。原创 2023-08-22 15:49:09 · 3715 阅读 · 0 评论 -
【Python技巧】__init__.py搞定import
在开发较大规模的Python工程时,通常需要进行模块化管理。把各种开发好的模块用文件夹的形式,放在同一目录下,最后统一调用。之前介绍过sys.path.append、importlib 和imp来解决复杂模块调用问题,但苦于都不够优雅。今天介绍的__init__.py较为优雅,博主推荐指数:★★★★★原创 2023-07-26 16:30:31 · 1167 阅读 · 0 评论 -
Python中的logging模块
logging是Python中常见的日志工具,能够把一次运行的关键信息记录成日志,以便debug。为了让读者更快掌握这个工具,咱们逐步深入.原创 2023-05-22 16:31:08 · 1575 阅读 · 0 评论 -
Pytorch对张量进行排序(根据某列数值)
链接为:https://pytorch.org/docs/stable/generated/torch.sort.html。只支持按维度进行排序。但是,通常情况下,我们希望对一个二维张量按某一列的取值进行行的排序,比如。我们用confidence来对一组bounding box进行排序。那么,这种情况下,不能直接使用。pytorch自带的排序函数为。原创 2023-03-07 18:32:09 · 2343 阅读 · 0 评论 -
【AI数学】余弦相似性(含python实现)
Cosine Similarity,即余弦相似度,又叫余弦相似性。是一个中学数学的概念,即用两个向量之间的夹角余弦值代表这两个向量之间的相似度。Cosine Similarity虽然简单,但广泛应用在AI模型中,比如CLIP计算图像embedding和文本embedding之间的相似性等。Python实现(Pytorch版本)在代码实现中,通常先分别计算A⃗∣A∣\vec{A} \over{\vert{A}\vert}∣A∣A、B⃗∣B∣\vec{B} \over{\vert{B}\vert}∣B∣B原创 2022-12-05 11:54:37 · 3906 阅读 · 2 评论 -
Python使用LMDB(闪电内存映射数据库)
注意,lmdb存储和读取都是一个文件夹,因为要存’data.mdb’和’lock.mdb’两个文件。上述代码所示,就是存了一个样本对sample1。使用LMDB有2个优势:(1)把零碎文件合成一个大文件,更好管理和移动;我们把x和y都存到value里面,因为key具有唯一性,我们可以用一个num来表示。注意,刚刚存的时候用’\t’隔开的xy,在读取的时候也用’\t’来恢复出xy来。先思考一个问题,什么时候需要存储和快速读取大量键值对呢?组成,就可以用键值对的形式存到LMDB里面。然后闪电速度获取样本对。原创 2022-10-19 00:41:57 · 2761 阅读 · 0 评论 -
用Python读取超大文件中的部分行
Python文件读取一直是python的常见用法,通用方法是直接readlines加载所有行。对于大文件all_items.tsv,咱们只读取某一个区间的行来进行处理。如果是想遍历整个文件并处理每一行,其实并不需要一次加载所有行。对于超大文件(如100G的tsv),直接加载所有行会非常慢。先用迭代器滚动到start_line的位置,再开始读取。用一个while循环就可以完成从头到尾行的遍历。原创 2022-10-11 12:00:20 · 2063 阅读 · 0 评论 -
Python新建纯色图片(任意颜色)
这里用到的是cv2和numpy的组合。cv2会把图片都处理成uint8的numpy矩阵,同理,我们可以把符合图片通道要求的numpy uint8矩阵用cv2保存成图片。直接看代码:直接在第三行定义出你想要的图片颜色即可。可以加入随机数:...原创 2022-07-13 11:37:59 · 2785 阅读 · 0 评论 -
【Python】importlib直接import绝对路径
有时候常见的脚本喜欢写成api,这样自己用的时候不需要重复造轮子。把写好的api放到一个固定位置,每次直接引用就好了。这里用到的模块是importlib。假设我们写好了一个轮子,命名为a.py:咱们import这个api就可以参考以下脚本:............原创 2022-06-25 11:21:47 · 2076 阅读 · 3 评论 -
Python自动下载百度图片【含代码】
经常需要用爬虫爬爬百度图片,所以弄一篇博客记录一下。需求:输入关键词,程序自动下载百度搜索出来的图片,并保存在本地。假设代码保存为down_baidu.py使用:python down_baidu.py 篮球这个篮球就是你要搜索的关键词。最后看一下代码:import osimport os.path as ospimport argparseimport reimport requestsdef get_args(): parser = argparse.Argument原创 2022-05-19 17:04:50 · 881 阅读 · 1 评论 -
GradCAM神经网络可视化解释(原理和实现)
GradCAM是经典的特征图可视化工具,在CV任务中,能用于分析CNN学到了什么东西。先看一张图:这就是GradCAM做出的效果,它直观地表示出咱们模型认为图片是Dog的是依据哪些地方。GradCAM借用梯度来进行注意力表示,发表于ICCV2017,如今依然活跃在学术和工程界。GradCAM原理对于视觉任务,包括图像分类、目标检测等,通常都是backbone+head的形式。如图1所示。所以,GradCAM可以无差别地对各种视觉任务进行可视化。在操作上,GradCAM拿到backbone的输原创 2022-05-07 18:29:09 · 9728 阅读 · 5 评论 -
Python中的argparse
在脚本化python程序的过程中,经常需要解析args。例如:python download.py --url https://abc.bcd.io/tiq.mp4–url这个玩意儿就叫args。使用args可以不需要修改.py文件的代码就可以完成脚本配置。在python中,最常见的args工具就是argparse。直接看一段代码:import argparseparser = argparse.ArgumentParser('demo', add_help=False)parser.ad原创 2022-04-15 16:45:27 · 1444 阅读 · 0 评论 -
【解决】UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xef in position 0: ordinal not in range(128
问题描述:我用python打开一个tsv格式的文件,发现有编码问题,报错如下:原创 2022-04-11 15:55:15 · 4844 阅读 · 0 评论 -
Python设置断点breakpoint(免IDE)
习惯了Pycharm的用户,通常都喜欢Pycharm强大的debug配置。但pycharm虽好,但需要图形化的UI界面,事实上在很多项目开发上有UI界面是很奢侈的事情。所以在无界面的vim下debug,难道只能用print了?那效率就太低下了。事实上,python有内置的断点工具,直接在代码中插入即可完成断点调试。在python3.7之前,这个工具叫pdb,即python debugger的缩写。在python3.7之后,breakpoint直接变成了关键字,可以之际作为断点插入。断点工具的使原创 2022-04-02 15:23:34 · 16110 阅读 · 0 评论 -
Python中的多进程编程
众所周知,python的多线程提供的只是并发性,不会实际加快运行效率。而多进程则是用资源换取效率,可以实现真正的并行性。对于高阶Pythoner而言,掌握多进程非常有必要。这篇文章主要想帮助大家理解Python多进程的运行机制和基本概念,并且提供一个较为通用的多线程启动模板。原创 2022-03-21 16:39:02 · 2203 阅读 · 1 评论 -
Python读取zip文件中的图片(无需解压)
对于包含大量图片的大型zip文件而言,解压非常费时间,同时解压过程也会需要更大的硬盘空间。这个时候,如果Python能直接读取到zip中的图片的话,就非常有用了。本文提供PIL和cv2两种格式的图片读取。代码为本人原创,有问题可留言交流~这里用到的包是zipfile。假设有个zip文件叫“demo.zip”,其中包含"sing.jpg"、“dance.jpg”、"rap.jpg"和"basketball.jpg"四张图片。from zipfile import ZipFilefrom io impo原创 2022-03-15 21:09:11 · 7650 阅读 · 0 评论 -
Python光流实验(Optical Flow)
Optical Flow,即光流是一种经典的传统视觉算法。在视频层次的其他任务上,如视频目标检测、跟踪和分割等等,有着很大用武之地。原创 2021-12-06 17:18:57 · 7074 阅读 · 2 评论 -
Python中二维列表初始化的易错概念
如果用Python初始化一个长度为n的一维list,很简单,只需ls = [0] * n。但是对于二维,如果简单用这个方法扩展就很容易出错。原创 2021-11-28 23:55:24 · 1033 阅读 · 0 评论 -
C++扩展Python模块
Python中有些重复简单的计算可以丢给cpp做,从而实现加速。之前写过一个python调用c++模块的文章《python调用c++》,通过引用动态链接库来完成调用。今天介绍用Extension来扩展Python的方法。实验环境:ubuntu18.04python3.8.8setuptools这里需要额外安装一个setuptools。编写要调用的c++文件,命名为add.cpp:include<Python.h>#include<iostream>using nam原创 2021-07-26 17:20:32 · 1005 阅读 · 0 评论