pytracking 代码测试
pytracking 是基于 PyTorch 的视觉目标跟踪算法官方实现。其包括 ToMP (CVPR 2022), KeepTrack (ICCV 2021), LWL (ECCV 2020), KYS (ECCV 2020), PrDiMP (CVPR 2020), DiMP (ICCV 2019), and ATOM (CVPR 2019) 跟踪器,包含这些算法的完整的训练代码和训练模型。本篇记录 pytracking 代码测试运行的经过,包括代码下载、环境配置、模型测试等。以 Ubuntu18.04、miniconda 为例演示。
代码下载直接访问 github 网址:GitHub - visionml/pytracking: Visual tracking library based on PyTorch.
首先,克隆 pytracking 源码下载到本地,本篇为了方便把工程放到用户目录下
12cdgit clone https://github.com/visionml/pytracking.git
然后,克隆子模块到本地
12cd ~/pytrackin ...
visdom 可视化工具
visdom 是一款灵活的可视化工具,由 meta 公司开发。与谷歌开发的 tensorboard(TensorFlow 可视化工具) 类似,visdom 是 pytorch 的可视化工具(相比于 tensorboardX 性能更好)。visdom 支持 torch、numpy 等。客户端与服务器端通过 tornado 进行非阻塞交互。
安装visdom 的安装非常简单,只需要执行下面的命令即可
1pip install visdom
启动 visdomvisdom 的启动可以使用如下两种方法
1visdom
1python -m visdom.server
启动后默认是运行在本机的 8097 端口,不过可以通过如下方法修改端口、增加用户名密码等
1VISDOM_USERNAME=jinzhongxu VISDOM_PASSWORD=112233 VISDOM_USE_ENV_CREDENTIALS=1 /usr/local/miniconda/bin/visdom -base_url /visdom -enable_login -port 7908
注意,想要设置用户名和 ...
python 模块依赖
Python 中的包或模块具有依赖关系。有时候离线安装时总会提示缺少依赖包,此时就需要知道安装的模块依赖哪些包。然后下载相应的模块即可。那如何查看某个模块的依赖包有哪些呢?本篇介绍一些方法。
使用 pip如果模块是通过 pip 安装的,而不是通过 conda 安装的,可以使用如下的方法查看
1pip show visdom
结果大概是这样
12345678910Name: visdomVersion: 0.1.8.9Summary: A tool for visualizing live, rich data for Torch and NumpyHome-page: https://github.com/facebookresearch/visdomAuthor: Jack Urbanek, Allan Jabri, Laurens van der MaatenAuthor-email: jju@fb.comLicense: CC-BY-NC-4.0Location: /usr/local/miniconda/lib/python3.9/site-packagesRequire ...
通过 pip 离线安装 whl、tar.gz 到 anaconda
Python 包管理工具 pip 可以在线安装 Python 包,也可以离线安装,只需要将包对应的 whl 文件下载下来,然后像直接安装即可。但是,当我们安装的 Python 是通过 anaconda 安装时,直接离线安装包,可能无法安装在 anaconda 的第三方库文件夹中,而是安装在当前用户的 .local 文件夹中,这可能会导致 jupyterhub 上的其他用户无法使用该包。这是因为 anaconda 的安装是管理员安装的,我这边只是 jupyterhub 的一个用户,如果我离线安装一个包,只会安装到我的用户目录下的 .local 中,而不是安装到 anaconda 的第三方库中。本篇给出解决方法。
下载 whl 文件通过访问 pypi 官网 检索我们需要的包,如 fuzzywuzzy,进入该包的主页,如:fuzzywuzzy · PyPI,然后点击左边的导航里的 Download files,选择合适的版本,如:fuzzywuzzy-0.18.0-py2.py3-none-any.whl,下载该文件即可。
该文件不分具体的 Python 版本,只要是 Python2.x ...
Linux 安装 MATLAB
MATLAB 是美国的 The MathWorks 公司出品的商业数学软件。其可用于数据可视化、数据分析、数值计算、算法开发(如计算机视觉中的目标跟踪)等。从 2006 年开始,发行编号以年份来命名,每年推出两个版本,上半年(3 月份)标识为 a 版,下半年(9 月份)标识为 b 版,如发行编号 R2017a 表示 2017 年上半年推出的 MATLAB 软件,其对应的版本号是 MATLAB 9.2。本篇介绍如何在 Linux 系统(以 Ubuntu 为例)上安装 MATLAB,发行编号 R2017a. 所有命令以普通用户运行,但部分代码需要用户有 sudo 权限。
软件下载因为 MATLAB 是商业软件,所以使用其需要进行许可证购买,永久购买大概是 15500 元人民币,或者 6200元人民币/年。本篇介绍的软件是破解版,如果能力允许建议购买正版软件。
破解版软件下载地址:MATLAB_R2017a_Linux
百度网盘提取码是:6ygs
下载后,我们需要使用到如下几个文件:
1234567tree /home/jinzhongxu/MATLAB_R2017a_Lin ...
systemd 的使用
在配置程序开机自启时,常常会用到 systemctl,其是 systemd 的主命令,用于管理系统。systemd 名字来源于 Unix 中的一个惯例:在 Unix 中常以 ‘d’ 作为系统守护进程(daemon,亦称为后台进程)的后缀标识。systemd 是 Linux 系统下的一套中央化系统及设定管理程式(init),包括守护进程、程式库以及应用软体,由 Lennart Poettering 带头开发。目前绝大多数的 Linux 发行版都已采用 systemd 代替原来的 System V,除了 systemctl,systemd 还引入了 localectl、timedatectl、hostnamectl 等新命令,使得系统配置更方便。本篇以 Ubuntu 为例,所有命令以普通用户运行,部分命令需要 sudo 权限。
常用命令设置开机自启支持 systemd 的软件,在安装的时候会自动在 /lib/systemd/system 目录中添加一个配置文件。设置开机自启命令如下
123sudo systemctl enable docker# orsudo systemctl en ...
Python 中调用 Go 代码
Python 简洁优美,开发效率高。Go 静态强类型、编译型、并发型,运行效率高。将复杂计算部分使用 Go 开发,编译成动态链接库,在 Python 中调用,能够提高开发效率和提高运算速度。
动态链接库动态链接库文件是一种不可执行的二进制程序文件,它运行程序共享执行特殊任务所必需的代码和资源。
在 Windows 中动态链接库常以 .dll 结尾;在 Linux 系统中动态链接库常以 .so 结尾。
动态链接就是把一些经常会共用的程式码制作成 DLL 文件,当执行档呼叫到 DLL 档中的函数时,Windows 作业系统才会把 DLL 档载入记忆体内,DLL档本身的结构就是可执行档,当程式有需求时函数才进行链接。通过动态链接方式,记忆体浪费的情形可大幅降低。静态链接则是直接连结到执行档。DLL 的最初目的是节约应用程序所需的磁盘和内存空间。
Go 代码这里给出一个简单的 Go 代码,内容如下,保存为 add.go 文件
1234567891011121314151617181920212223package mainimport "C" //必须引入 C 库im ...
Sherman Morrison 公式
在线性代数中,Sherman-Morrison 公式以 Jack Sherman 和 Winifred J. Morrison 命名,用于计算 $A + uv^T$ 的逆,其中 $A$ 为可逆方阵,$u, v$ 为列向量,$uv^T$ 为向量外积(outer product)。Sherman-Morrison 公式是 Woodbury 公式的一类特殊情况。
问题陈述定理1(Sherman-Morrison formula) 假设 $A \in \mathbb{R}^{n\times n}$ 是一个可逆方阵,并且 $u, v\in \mathbb{R}^n$ 是列向量。那么 $A + uv^T$ 是可逆的当且仅当 $1 + v^T A^{-1} u \neq 0$. 当 $A + uv^T$ 可逆时,满足如下等式:
$$(A + uv^T)^{-1} = A^{-1} - \frac{A^{-1}uv^TA^{-1}}{1+v^TA^{-1}u} \tag{i}.$$
这里,$uv^T$ 表示两个向量 $u,v$ 的外积。
外积(outer product)说明:假设
$ ...
linux 上查询 ip 归属地
公网 ip 地址唯一标识了服务器在互联网上的地址。那如何知道自己服务器的公网 ip 地址,又如何知道某一个 ip 地址的归属地呢?本篇介绍一个命令来查询上面的信息。所有命令以普通用户运行。
查询自己电脑的公网 ip123456# linux or Mac curl cip.cc# Windowstelnet cip.ccftp cip.cc
结果类似下面这样,ip 地址不同输出结果不同
12345678IP : 43.188.123.xxx地址 : 日本 日本数据二 : 日本数据三 : 中国 | 腾讯URL : http://www.cip.cc/43.188.123.xxx
如果只想知道自己的电脑的 ip 地址,不想输出其他信息
123456# linux or Mac curl ip.cip.cc# Windowstelnet ip.cip.ccftp ip.cip.cc
结果只有 ip 地址。
查询 ip 地址归属地该命令只需要在上面的命令中增加 ip 地址即可,方法如下
123456# linux or Mac curl cip.cc/43.188.123.xx ...
使用 sshfs 挂载远程文件系统
在两台服务器间借助 SSH 连接使用 SFTP 或 SCP 可以互相传输文件,但这确不能共享整个文件系统。当我们想要像访问本地服务器的文件系统一样访问远程服务器的文件系统时,可以使用 sshfs 工具,它通过 SSH 文件传输协议 (SFTP) 挂载远程的文件系统。本篇以 ubuntu 系统为例,所有代码以普通用户运行,部分代码需要 sudo 权限。
安装12sudo apt updatesudo apt install sshfs
挂载远程服务器文件系统假设本地的用户 jinzhongxu 能够通过 SSH 连接到远程服务器 tencent.test.com
123456# 创建挂载点sudo mkdir /mnt/tencentsudo chown -R jinzhongxu:jinzhongxu /mnt/tencent# 挂载远程文件系统到挂载点sshfs jinzhongxu@tencent.test.com:/home/jinzhongxu /mnt/tencent -o allow_other -o reconnect
注意,挂载时因为指定了 reconnect ...
apt 和 apt-get 命令的区别
Debian 作为 Ubuntu、Linux Mint 和 elementary OS 等 Linux 操作系统的母板,Debian 类使用一套名为 Advanced Packaging Tool(APT,请不要把它与 apt 命令混淆)的工具来管理软件包。
最常用的 Debian 类包管理命令都被分散在了 apt-get、apt-cache 和 apt-config 这三条命令当中。apt 命令的引入就是为了解决命令过于分散的问题,它包括了 apt-get 命令出现以来使用最广泛的功能选项,以及 apt-cache 和 apt-config 命令中很少用到的功能。在使用 apt 命令时,用户不必再由 apt-get 转到 apt-cache 或 apt-config,而且 apt 更加结构化,并为用户提供了管理软件包所需的必要选项。简单来说就是 apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。
apt 和 apt-get 的区别虽然 apt 与 apt-get 有一些类似的命令选项,但它并不能完全向下兼容 apt-get ...