OpenCV (Python) 中 BGR 和 RGB 的转换
在目标跟踪中经常会使用到 OpenCV 和 Pillow 库等来处理图像。但是,它们处理图像的方式有所不同,比如 OpenCV 把图像看作一个 ndarray 数组对象,而 Pillow 把图像看作一个自定义的 Image 对象;OpenCV 中图像是以 BGR (blue, green , red) 顺序存储的,而 Pillow 中的图像是以 RGB (red, green , blue) 存储的。因此,如果想要同时使用两种库的函数,需要进行相应的 BGR 和 RGB 的转换。
OpenCV 中图像的 BGR 和 RGB 的转换可以有两种方法:
通过 OpenCV 内置的 cvtColor() 函数;
直接改变 ndarray 的存储顺序。
图像读取与写入12345678910111213141516# 导入包import cv2import numpy as npfrom PIL import Image# OpenCV 中以 BGR 的顺序读取图像 ndarray 对象,以同样方式写入。# 打开时才可正常显示im_bgr_cv = cv2.imread('da ...
把 EXCEL 表格转换为 LATEX 代码
使用 $\LaTeX$ 书写论文被越来越多的人采用,其主要的优势是让写作者不用在格式上花费太多的时间,把主要时间用在文章的内容写作上。我们平常处理的数据大多会以 EXCEL 表格的形式保存,那么如何将 EXCEL 表格中的数据快速复制到 $\LaTeX$ 源文件中呢,下面介绍一种工具,它能够非常快捷准确的将表格数据转化为 $\LaTeX$ 格式,并利用 $\LaTeX$ 中的包快速编译出表格信息。本篇默认 EXCEL 和 $\LaTeX$ 编译器已经安装且可使用。
下载 Excel2LATEX在 CTAN 官网上可以下载最新版的 Excel2LATEX: https://ctan.org/pkg/excel2latex.
安装解压缩后,将文件夹放在一个自己喜欢的目录下,放好后该文件夹不应该移动或删除,点击文件:Excel2LaTeX.xla 并启用即可使用它。
如果想让 EXCEL 默认加载该程序,可以在 EXCEL 程序中点击文件—选项—加载项—转到—浏览(选择文件 Excel2LaTeX.xla)—方框内打勾—确定。
使用利用 EXCEL 打开一个表格,选择表格内容,点击加 ...
Linux 中的 awk 命令
awk 是一个处理文本的应用程序,也是一门语言。基本上所有的 Linux 发行版都自带该程序。它依次处理文件的每一行,并读取里面的每一个字段,尤其是日志文件、CSV文件等。本篇介绍 awk 如何在命令行上使用,以 Debian 10.8 为例。
基本用法12345678910111213141516# 模式或条件可省略awk '模式 {动作}' 文件名# 例子 1awk 'NR < 3 {print $0}' ~/.bashrc# 例子 2echo '21 25 26' | awk '{print sin($1), cos($NF)}'0.836656 0.646919# 例子 3echo '21:25:26' | awk -F ':' '{print sin($1), cos($NF)}'0.836656 0.646919# 例子 4echo '2 ...
在 Mac 上使用 caffeinate 保持进程运行
当把 Mac Book Pro 的显示器盖合上后,有些进程会无法继续运行。下面介绍一种方法能让进程一直运行下去。
12345# 该命令能让进程一直保持运行caffeinate -w <进程号># 只保持3600秒caffeinate -t 3600
如何获取进程号
1234567891011121314151617# 添加 -v grep是为了避免匹配到 grep 进程ps -ef | grep "ssh -L" | grep -v grep | awk '{print $2}'# 名称首字母加[]的目的是为了避免匹配到 awk 自身的进程ps -ef | awk '/[n]ame/{print $2}'# 只使用 x 参数,则 pid 位于第一位ps x | awk '/[n]ame/{print $1}'# 简单获取 pidpgrep -f name# 杀掉 pidpkill -f name# 如果是可执行程序pidof n ...
设置 Jupyter Cell Proxy
Jupyter Notebook/Lab 提供了交互式的 Python 等编程范式,下面介绍一种设置 Proxy 的方法,方便 Python 代码的运行。
只需要在 Jupyter Notebook/Lab 第一个 Cell 上添加如下代码即可:
12345678# 导入模块import os# 设置代理。这里 1080 既可以是 http 代理的端口,也可以是 socks5 代理的端口proxy = 'http://127.0.0.1:1080'os.environ['http_proxy'] = proxyos.environ['HTTP_PROXY'] = proxyos.environ['https_proxy'] = proxyos.environ['HTTPS_PROXY'] = proxy
视觉目标跟踪算法简介
单目标跟踪是指给定第一帧目标框的情况下,在视频的后续帧中自动地给出目标的位置和大小。难点在于复杂场景下目标姿态变化、环境光照变化、尺寸变化、背景干扰、遮挡等,以及实际应用中需要满足实时性。
算法分类目标跟踪算法的发展大致分成两个阶段,一个是2012年以前,一个是2012年以后。以深度学习方法的引入为拐点。
目标跟踪算法的种类大致分为两类,一类是生成式(generative)算法,一类是判别式(discriminative)算法,目前判别式算法是主流算法。
目标跟踪算法的研究大致分为两个方向,一个是相关滤波方向,一个是深度学习方法,基于相关滤波的跟踪算法因利用快速傅里叶变换,处理速度较快,基于深度学习的跟踪算法因能自动提取目标图像更强大的特征,精度较高。
生成式算法生成式算法采用特征模型描述目标的外观特征,再最小化跟踪目标与候选目标之间的重构误差来确认目标。此方法着重于目标本身的特征提取,忽略目标的背景信息,因而在目标外观发生剧烈变化或者遮挡时,容易出现目标漂移或目标丢失。
生成式目标跟踪算法主要是在2010年以前发展起来的,代表算法有卡尔曼滤波(Kalman Filters)、C ...
CNN 模型计算力 FLOPs
在撰写论文时,当进行模型比较时,常常会比较模型准确度,但模型计算力消耗、参数个数也是重要的指标,特别是模型落地时。
FLOPsFLOPS 与 FLOPs 不同:
FLOPS: FLoating point Operations Per Second,表示每秒浮点运算次数,衡量硬件(如 GPU )的计算性能,可理解为计算速度;
FLOPs: FLoating point Operations,表示浮点运算数,衡量模型(如深度学习模型 CNN )的复杂程度,可理解为计算量。
计算 FLOPs计算 FLOPs 常常指深度学习模型前向传播是的计算量,而 CNN 中计算量主要集中在卷积层,除此之外,也有池化层、批归一化层、激活层,上采样层等。下面主要介绍卷积层计算 FLOPs 的方法。
假设卷积核的大小是 $k \times k$,通道数是 $c$,输出特征图的大小是 $H \times W$,通道数是 $C$,则计算力消耗是
$k \times k \times c \times H \times W \times C$
开源库一种方便的开源库是 ptflops
1pip ins ...
在 Jupyter 中使用 Matlab
Jupyter 为创建交互式脚本提供了一个强大且广泛的平台,在这里介绍一种在 Jupyter 中调用 Matlab 的方法。假设已经安装了 Miniconda 或者 Anaconda, Matlab 版本是 2020a,安装在路径:/usr/local/MATLAB 下。
创建虚拟环境因为 Matlab 2020a 对应的 Python 版本最高为 3.7,所以这里安装对于版本,虚拟环境名字命名为 jmatlab
各版本对应关系:matlab-python-compatibility
1conda create -vv -n jmatlab python=3.7 jupyter
激活 jmatlab 环境1conda activate jmatlab
安装 jupyterlab 和 matlab 内核123pip install jupyterlabpip install matlab_kernelpython -m matlab_kernel install
查看安装的内核1jupyter kernelspec list
您应该在可用内核列表中看到 Matlab.
安装 ...
在 Ubuntu 上挂载 ISO 文件
我这里需要安装 MATLAB,但是下载的软件是 ISO 文件,无法直接读取,需要挂在到 Ubuntu 上才能读取,因此,使用如下方法挂载和卸载 ISO 文件
创建挂在点文件夹1sudo mkdir /media/iso
挂载 ISO 文件到挂载点1sudo mount -o loop /home/jinzhongxu/Matlab98R2020a_Lin64.iso /media/jinzhongxu
卸载1sudo umount /media/iso
参考链接
How to mount an ISO file?
分组卷积、深度卷积和全局深度卷积
卷积能够提取图像特征,不同的卷积操作能够获得不同的效果,同时有些卷积能够降低待学习的参数量,达到正则化的目的。
分组卷积分组卷积(Group Convolution)最早见于2012年 ImageNet 竞赛中的 AlexNet 网路中,被用来切分网络,使得模型能够在2个GPU上并行运行,AlexNet 的网络结构如下:
分组卷积的定义对于常规卷积,如果输入的特征图是 $C * H * W$,卷积核个数是 $N$,输出特征图的数量也是 $N$,其与卷积核的数量相同。假设卷积和的尺寸是 $C * K * K$,那么 $N$ 个卷积核的总参数量为 $N * C * K * K$,输入特征图与输出特征图的连接方式如下左图:
分组卷积是对输入特征图先分组,然后每组分别卷积。假设输入特征图的尺寸仍为 $C * H * W$,输出特征图的数量为 $N$个,如果要分成 $G$ 个组,则每组的输入特征通道数为 $\frac{C}{G}$,每组的输出特征图通道数为 $\frac{N}{G}$,每个卷积核的尺寸为 $\frac{C}{G} * K * K$,卷积核的总数仍为 $N$个,但每组的卷 ...
Windows 远程连接 Ubuntu 桌面
想从 Windows 10 远程桌面访问 Ubuntu,通过使用 xrdp 来达成这一目的。
Ubuntu 上安装软件安装远程桌面协议 (RDP) 服务器 xrdp
1sudo apt install xrdp
运行远程桌面共享服务器xrdp
1sudo systemctl enable --now xrdp
为传入流量打开防火墙端口 3389
1sudo ufw allow from any to any port 3389 proto tcp
Windows上远程连接移至 Windows 10 主机并打开远程桌面连接客户端。使用搜索框搜索远程关键字,然后单击打开按钮。
输入 Ubuntu 的 IP 地址和端口号 3389,验证连接
可能问题在启动到 Xrdp 远程桌面协议 (RDP) 服务器的远程连接后,我有时会收到黑屏。虽然我不确定如何完全解决这个问题,但在建立远程连接之前从 Ubuntu 桌面注销至少暂时解决了这个问题。
参考链接
Ubuntu 20.04 Remote Desktop Access from Windows 10