
tools
木盏
坐标 北京
喜欢写博客的CV工程师
levio@pku.edu.cn
展开
-
Linux终止进程(kill process)的一些玩法
经常运行一个程序时,表面上已经终止了,实际上还在后台运行。一来呢,它可能占据端口,导致端口复用的时候报错。二来呢,它可能占用GPU,让你显存直接少一块。很直接,但是不够优雅。用这个命令时需要特别小心,确保不伤及无辜进程。一行命令,就能终止所有的相关进程。原创 2025-04-07 17:09:17 · 254 阅读 · 0 评论 -
MOV视频格式转换到MP4格式
苹果手机拍摄的视频默认是MOV格式,MOV格式是苹果专用的,很多时候不利于传播到其他操作系统直接使用。原创 2025-02-25 20:45:13 · 122 阅读 · 0 评论 -
【已解决】“ptxas fatal : Value ‘sm_30‘ is not defined for option ‘gpu-name‘”
我在用Ubuntu20.04源码编译安装COLMAP时,遇到了一个报错如上。Log显示GPU架构没被认出来。参考来自:https://github.com/colmap/colmap/issues/1944。原创 2024-11-04 18:48:12 · 287 阅读 · 0 评论 -
文件传输工具magic-wormhole(比scp好用太多!)
今天介绍一个很简洁优雅的文件传输工具magic-wormhole。这个工具用“虫洞”为名,就很形象,发送端把文件传到云端,接收端从云端下载。原创 2024-10-08 16:47:12 · 820 阅读 · 0 评论 -
那些能提升vim编辑效率的命令【持续更新】
如果想用vim提高编辑效率,需要对vim的四种模式有一定了解。众所周知,vim有四种模式:正常模式(Normal Mode)、插入模式(Insert Mode)、命令模式(Command Mode)、可视模式(Visual Mode)。原创 2023-07-21 18:43:08 · 449 阅读 · 0 评论 -
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 评论 -
【已解决】Git下载私有仓库时报错Authentication failed
用git下载partner提供的private repo时,提示需要输入username和password。但怎么输入都报Authentication failed 的错误。原创 2022-09-06 16:22:38 · 17075 阅读 · 1 评论 -
【实用工具】Image Assistant下载指定页面的所有图片
今天推荐一个浏览器插件ImageAssistant,可以方便快捷下载一个页面的所有图片。然后开始使用插件,只需找到你要下载的page,用浏览器打开。找到右上角,选插件就好了。支持Chrome,Edge等多个浏览器。本文以Edge为例进行讲解。点击右上角安装即可,上面我已经安装成功就显示【Remove】了。在链接1中找到Edge浏览器插件的。选择下载就好了,方便又好用~...原创 2022-07-28 14:24:08 · 3136 阅读 · 0 评论 -
Vim下快速删除字符串
巧妙学会用命令删除字符串,将大大提高vim开发效率。首先用vim打开一个文件,假设文件内容为:name = 'cxk'hobby = "Sing, Dance"如果想把第一行中的’cxk’用命令删掉,只需把光标移动到第一行,输入:da'命令的意思是,删除所有单引号中的内容,包括引号。删除后:name = hobby = "Sing, Dance"你会发现,连引号都没了。如果你想保留引号,你可以输入:di'如果你想删除以后,直接变成插入模式,可以输入:ci'这样你可以直接原创 2022-05-08 18:31:09 · 4250 阅读 · 0 评论 -
git clone提速(好用的github镜像)
github有时候git clone太慢了,用国内镜像的话就可以大大加速。我目前发现2个镜像网站:https://hub.fastgit.orghttps://github.com.cnpmjs.org目前测评来看,第一个镜像比较稳定,速度也快。使用方法:将git clone https://github.com/xxx/xxx.git改成git clone https://hub.fastgit.org/xxx/xxx.git...原创 2021-11-30 17:35:23 · 15821 阅读 · 4 评论 -
在Pycharm中调试python -m
当我们需要把库当脚本运行的时候,就需要使用python -m了。举个栗子:比如使用pytorch进行分布式开发的时候,可能会用到:python -m torch.distributed.launch --nproc_per_node 1 --master_port 12345 main.py --eval --cfg configs/swin_tiny_patch4_window7_224.yaml --resume models/swin_tiny_patch4_window7_224.pth --d原创 2021-10-13 17:53:04 · 1922 阅读 · 3 评论 -
mim install mmdetection不成功的解决办法
mim可以很方便安装mmdetection大礼包,但有时候会遇到长时间无法安装的问题。其实,主要是github访问的问题。咱们替换个github镜像链接就可以解决:mim install mmdetection -f https://github.com.cnpmjs.org/open-mmlab/mmdetection.git...原创 2021-09-26 17:37:30 · 5928 阅读 · 0 评论 -
linux查询本机IP地址(可用于SSH访问)
ifconfig | grep inet返回结果:第一排是局域网IP(v4),第二排是局域网IPv6第三排是广域网IP(v4),第四排是广域网IPv6咱们只需要看第三排就Ok了。第三排inet后面那四个数,就是咱们远程ssh连接本机时用到的。假设第三排是"inet 10.11.12.123",那么ssh连接只需:ssh username@10.11.12.123这时默认连接端口是22。...原创 2021-08-30 11:24:27 · 11956 阅读 · 3 评论 -
linux卸载nvidia驱动
首先,nvidia驱动直接影响桌面显示。所以对于有图形界面的Linux,需要先关掉桌面,按Ctrl+Alt+F1进入无桌面终端,然后关掉桌面(对于无桌面的系统则可以省去这步):sudo service lightdm stop然后,cd /usr/binsudo nvidia-uninstall再输入:nvidia-smi如果“command not found: nvidia-smi”,则证明你卸载成功了。...原创 2021-08-05 20:36:06 · 19747 阅读 · 0 评论 -
vs code快捷键一览表
官方链接:https://code.visualstudio.com/shortcuts/keyboard-shortcuts-linux.pdf原创 2021-05-10 11:22:05 · 358 阅读 · 0 评论 -
einops张量操作神器(支持PyTorch)
今天做visual transformer研究的时候,发现了einops这么个神兵利器,决定大肆安利一波。先看链接:https://github.com/arogozhnikov/einops安装:pip install einops基础用法einops的强项是把张量的维度操作具象化,让开发者“想出即写出”。举个例子:from einops import rearrange# rearrange elements according to the patternoutput原创 2021-04-27 17:19:04 · 29661 阅读 · 6 评论 -
vs code远程开发项目(本地win10+远程ubuntu)
vs code远程开发项目,相比于pycharm大概有3大优势:1. 无须买专业版;2. 无须远程和本地都保留代码;3. 可以开发python以外的程序;光这三大优势,就足以让每个pythoner拥抱vs code了。1. 本地安装vs code自己戳链接:https://code.visualstudio.com/2. 安装remote development插件3. 配置公钥私钥1. 配置本地公钥:ctrl+R,输入cmd呼出终端,然后输入:ssh-key.原创 2021-04-21 14:27:45 · 1055 阅读 · 0 评论 -
拥抱Detectron2
detectron2是FAIR团队在维护的计算机视觉库,持续收集和实现各种SOTA的目标检测/分割算法。类似的库还有CUHK和商汤维护的MMDetection。对我而言,其最大的优势是可以方便快速下载到各种检测算法的pre-trained模型,同时比torchvision更追新一点。对于demo党而言,能够让你如此轻易实现SOTA算法的demo,那也是很苏糊的。为什么要拥抱Detectron2而不是Detectron呢? 答:Detectron2完全由PyTorch框架重写了一遍,为了迎合学术界的趋势。原创 2021-04-08 11:38:22 · 394 阅读 · 0 评论 -
【Python可视化】matplotlib画动态曲线
matplotlib是python里最popular的画图工具,最近发现它可以用来画动态图。可以看看AI模型训练时候的loss曲线,accuracy变化等等。客观上,比tensorboard更简洁。代码还是很简单滴:import matplotlib.pyplot as pltfrom random import randomdef do_something(): for p in range(10000000): res += pfig, ax = plt.su原创 2021-01-05 20:35:21 · 10768 阅读 · 9 评论 -
linux终端分割工具tmux
tmux可以把linux下的terminal分割成用户想要的样子,可以方便观测。1. 安装方法:(ubuntu下)sudo apt-get install tmux2. 快速使用方法tmux安装好以后,直接在终端输入tmux,就可以进入tmux会话。然后就可以分割窗口了。上下分割:tmux split-window左右分割:tmux split-window -h调整分割比例:左手按住ctrl+b不动,右手按方向键(上、下、左、右)。即可完成相应调整。 ..原创 2021-01-04 15:46:08 · 1409 阅读 · 0 评论 -
pytorch多卡训练(含demo)
用pytorch进行多GPU训练,只需要学会把单卡训练的代码稍微改一下即可。不用弄得太麻烦。通过一个demo来做是最快入手的。1. 要知道机器有几张卡:nvidia-smi2. 模型用DataParallel包装一下:device_ids = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 10卡机model = torch.nn.DataParallel(model, device_ids=device_ids) # 指定要用到的设备model = model..原创 2020-10-27 19:20:12 · 42211 阅读 · 17 评论 -
Pytorch使用TensorBoard做可视化
TensorBoard是一款优秀的基于浏览器的机器学习可视化工具。之前是tensorflow的御用可视化工具,由于tensorboard是并不是读取tf张量,而是读取log进行可视化。所以,其他框架只需生成tensorboard可读的log,即可完成可视化。之前,我一直用visdom做pytorch可视化,也是非常易用。不过现在跟tensorboard对比,我还是更推荐tensorboard。visdom相比tensorboard只有一个优点,那就是自动实时刷新。而tensorboard无论从可视化原创 2020-10-09 20:42:48 · 9881 阅读 · 1 评论 -
pytorch中的gather()函数
首先,给出官方文档的链接:https://pytorch.org/docs/stable/generated/torch.gather.html?highlight=gather#torch.gather然后,我用白话翻译一下官方文档。gather,顾名思义,聚集、集合。有点像军训的时候,排队一样,把队伍按照教官想要的顺序进行排列。还有一个更恰当的比喻:gather的作用是根据索引查找,然后讲查找结果以张量矩阵的形式返回。1. 拿到一个张量:import torcha = tor原创 2020-09-22 17:19:58 · 17969 阅读 · 11 评论 -
Ubuntu重装显卡驱动
本机环境如下:系统:ubuntu16.04GPU:RTX 2080tiCUDA: 10.1NVIDIA driver: 430.40不知为何,每用一段时间,显卡驱动就会崩。大概两个月会重装一次显驱,所以把步骤用博客记录一下:一共分6步1. 开机跳到F1界面:CTRL+ALT+F12. 关掉图形界面:sudo service lightdm stop3. 改变显驱文件的模式:sudo chmod a+x NVIDIA-Linux-x86_64-430.40.ru原创 2020-09-09 18:01:25 · 1878 阅读 · 0 评论 -
pytorch中view的用法(重构张量)
view在pytorch中是用来改变张量的shape的,简单又好用。pytorch中view的用法通常是直接在张量名后用.view调用,然后放入自己想要的shape。如tensor_name.view(shape)Example:1. 直接用法:>>> x = torch.randn(4, 4)>>> x.size()torch.Size([4, 4])>>> y = x.view(16)>>>...原创 2020-09-08 16:11:38 · 4215 阅读 · 0 评论 -
【pytorch】RuntimeError: Integer division of tensors using div or / is no longer supported【解决】
ok, 能搜到这篇文章大概遇到了我已经遇到过的问题。今天把pytorch升级到1.6.0,发现tensor和int之间的除法不能直接用'/'。明明1.5.0都是可以用的-_-。火炬这种邻代兼容性有点值得吐槽。对于这个问题直接看官方文档就可以了:https://pytorch.org/docs/stable/generated/torch.div.html或者,看我的解决方案:对于tensor A和整数n之间的除法:result = A / n # not supported in to原创 2020-08-26 18:22:05 · 12225 阅读 · 0 评论 -
Linux终端自定义命令(超实用技巧)
今天记录的是一个能够体验linux terminal操作体验的技巧。技巧描述为:linux终端的任何命令都可以替换成其他的字符串来代替。具体怎么玩呢?逐步往下看,惊喜会越来越多。比如,我觉得查看GPU运行状态的nvidia-smi太长,每次输入都很麻烦,我想改成"mygpu"。操作如下:vim ~/.bashrc在文末加上一句:alias mygpu='nvidia-smi'然后:wq保存推出,再source一下:source ~/.bashrc这个时候,你的l原创 2020-08-18 21:27:30 · 15857 阅读 · 2 评论 -
Linux下的终端中用shell命令打开文件夹窗口
用惯了linux,总会一言不合ctrl+alt+t打开terminal操作文件。有的时候想看看文件,terminal那种文件显示太朴素,对于图像视频等文件的缩略图看不出来。所以今天推荐的工具是nautilus直接在命令行输入:nautilus直接会打开根目录的文件夹窗口。如果想打开当前目录的文件夹窗口,可以:nautilus .直接解决需求,干净又卫生。...原创 2020-07-31 14:56:10 · 5270 阅读 · 0 评论 -
networkx+python构建图结构数据并可视化
目前处理非欧数据最常见的方法还是构建图,而networkx一个专门的构建图数据的工具。方便又好用。先给链接:https://networkx.github.io/官方文档:https://networkx.github.io/documentation/latest/networkx的安装方法上面的官方文档已经很详细记录,阿盏就不赘述了。官方文档里给了几个demo,虽然便利,但泛化性不强。我这边给一个泛化性强一些的demo:import networkx as nximport ma原创 2020-06-29 14:11:34 · 10072 阅读 · 1 评论 -
【pickle】python保存任何类型的中间结果
用python处理数据的过程中,经常涉及计算量相对较大但是不太变动的中间结果。如果每次想拿到这个中间结果就跑一遍计算的话,会非常浪费时间(比如预处理的训练数据)。这个时候会思考,如果有种便捷的方法来保存这些 中间结果,就不用进行反复计算了。对于str类型或者简单的list类型的中间结果,我们可以直接用txt文件保存;对于dict类型的中间结果,我们可以用json保存。But, 如果中间结果是特...原创 2020-04-09 01:09:45 · 3074 阅读 · 1 评论 -
linux用sleep设置定时启动脚本
在Linux开发的过程中,经常需要定时执行脚本。比如你做一个AI项目,第一步需要先下载数据集,第二部跑训练代码。当下载数据集需要一个半小时,你需要等下完以后才能python train.py。如果你不想守着下完,你可以把这两个脚本定时执行。本文给的方法是用sleep的方法。正常情况下,你需要守住两个时间点:1. wget下载完成;2,tar解压完成。wget https://xx...原创 2019-11-07 12:55:10 · 3662 阅读 · 0 评论 -
两种基于网页的神经网络画图工具
写论文的时候需要画神经网络的结构图,用PPT和VISIO之类的工具画效率会比较低。本文将介绍2种基于网页的神经网络画图工具,让结构图更加酷炫。1. NN-SVG这个工具有三种画图风格:FCNN、LeNet、AlexNet。网页链接为:http://alexlenail.me/NN-SVG/只需选择一种喜欢的风格,然后在左侧配置栏里填入自己网络的详细参数,就可以实现自动画图...原创 2019-04-16 15:34:13 · 45307 阅读 · 10 评论 -
tf.concat()详解
tensorflow中用来拼接张量的函数tf.concat(),用法:tf.concat([tensor1, tensor2, tensor3,...], axis)先给出tf源代码中的解释: t1 = [[1, 2, 3], [4, 5, 6]] t2 = [[7, 8, 9], [10, 11, 12]] tf.concat([t1, t2], 0) # [[1, ...原创 2018-09-04 11:17:02 · 180515 阅读 · 14 评论 -
超实用工具you-get(爬取视频数据神器)
最近发现一款超实用的Python工具包,可以直接下载网页上的视频。适用于python3安装方法:pip install you-get使用方法:you-get https://v.qq.com/x/cover/mzc00200hoz43g8.html然后就可以得到mp4格式的视频了~爬取视频数据的神器!...原创 2019-09-07 23:54:48 · 8106 阅读 · 5 评论 -
python+opencv横向拼接视频
如果想利用python+opencv把两段视频拼接在一起,可以有两种想法:1. 第二个视频直接接在第一个视频后边,延长帧。这种我称为“纵向拼接”;2. 第一个视频和第二个视频每一帧平铺,这样就可以同时看两个视频了;如果你是第1个目的点进本文的,那么不好意思,本文不满足你的要求。本文主要面向横向拼接视频,把自己写的脚本记录一下,免得下次再写~import cv2import nu...原创 2019-09-06 18:03:42 · 7893 阅读 · 1 评论 -
python+opencv安装方法,以及关键问题解决【win,linux,mac】
本人早前写了一篇python安装opencv的文章,时过境迁,旧方法已经不是那么好用。于是,本文更新一下安装opencv的方法。大家只需看分割线之前即可。适用系统:windows,linux, macOS适用python版本:python 2/3适用opencv版本:all简而言之,你可以用本文的方法安装各种版本对应各种系统的opencv。你可以使用:pip inst...原创 2018-02-03 15:52:50 · 11588 阅读 · 41 评论 -
非root用户安装或升级CUDA和CUDNN版本
很多框架的版本都受限于CUDA和CUDNN的版本,而如果没有服务器的root权限的话,这将很不方便。非root用户也是可以修改CUDA和CUDNN版本的。亲测有效。方法来自:https://blog.youkuaiyun.com/sinat_20280061/article/details/80421532环境:Ubuntu==16.04.2GPU: GTX 1080Ti原CUDA...原创 2018-12-06 14:53:04 · 10387 阅读 · 4 评论 -
linux下使用python脚本查看CUDA和CUDNN版本
先说说用shell命令查看CUDA和CUDNN版本的方法:查看CUDA版本的命令如下:cat /usr/local/cuda/version.txt查看CUDNN版本:cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2其实CUDA和CUDNN的版本信息写在对应的文件里,如果用上述命令找不到版本信息,那么就用...原创 2018-12-06 12:33:39 · 10195 阅读 · 1 评论 -
Linux查看服务器配置
1.查看GPUnvidia-smi输出:查看CUDA版本:cat /usr/local/cuda/version.txt查看GPU使用情况还有一个神器,叫gpustat:(可以点击https://github.com/wookayin/gpustat了解更多) 先安装: pip install gpustat使用:gpustat -ucp ...原创 2018-11-02 14:22:07 · 4770 阅读 · 0 评论 -
实用的shell技巧(二)——查找历史命令
$ history在交互窗口输入history就可以查看历史命令。要消除全部历史命令可以$ history -c要删除某一行历史命令(比如990行)$ history -d 990这么一来就可以做一些坏事还不留下踪迹了。但是,要想找很早以前的指令,history会显示所有历史命令,要具体找某一个命令可以用下面的方法:ctrl+r 然后输入关键字就可以找到想找的...原创 2018-09-11 11:11:08 · 5849 阅读 · 0 评论