JupyterLab 中 Pandas 打印行列省略问题
在 JupyterLab 中书写 Python 代码非常的方便,交互性强,并且能够书写 Markdown 文档等。但是,使用其处理 Pandas 的 DataFrame 对象时,当表格数据行或列太大时,打印时总是显示不全,在中间出现一些省略号,这使得想要查看所有内容时不是太方便,下面给出一种方法,能够显示所有的行和列。
解决方案在 JupyterLab 的第一个单元格内,添加如下内容:
12345678import pandas as pd# 显示所有列pd.set_option('display.max_columns', None)# 显示所有行pd.set_option('display.max_rows', None)# 设置 value 的显示长度为 100,默认为 50pd.set_option('max_colwidth',100)
在 JupyterLab 中使用如下命令,可以查看所有可自定义参数
1pd.set_option?
参考链接
pandas中关于DataFrame行,列显示不完全(省略) ...
PyTorch 中 Dataset 和 DataLoader 类的使用方法
近年来,在学术界和工业界基于 PyTorch 进行深度学习算法研究及模型部署越来越流行,甚至超过了 TensorFlow. 除了其基于动态图的特性外,最主要的是其语法更贴近 Python,容易开发实现和调试。本篇介绍 PyTorch 中为目标跟踪等视觉领域提供的两个基础类 Dataset 和 DataLoader,给出它们的使用方法。
利用 PyTorch 进行深度学习训练的一般流程
首先创建自定义的 Dataset 类 和 Sampler 类(数据采用策略);
创建自定义的 DataLoader 类;
DataLoader 依据 Dataset 和 Sampler 迭代产生训练数据提供给模型进行训练。
总的来说,DataLoader 负责批次调度数据,Sampler 负责数据调度的采样策略生成索引(默认整数),Dataset 负责通过索引提取数据。
Dataset 封装数据集,通过索引获取元素, Sampler 提供索引次序,DataLoader 是一个调度器,迭代 DataLoaderIter 的过程中,迭代Sampler 获得下一索引,并通过该索引使用 Fetcher(Fe ...
手动更新 oh-my-zsh
我比较喜欢使用 zsh,特别是搭配 Oh My ZSH,它有很多方便的功能以及各种主题。但它不会自动更新,特别是 Mac 上很少关闭 Terminal 导致oh-my-zsh 不是最新的。下面介绍一种手动更新 oh-my-zsh 的方法。
手动更新使用如下命令
1omz update
或者
12cd ~/.oh-my-zsh/toolszsh upgrade.sh
其他设置解译 *,默认情况下,zsh 会自动解译 *,直接使用 * 会出现 no matches find,如 grep -nr --include=*.{py,sh} args ./codes,一种解决方法是在 * 左右增加上双引号或单引号,最好的解决方法是下面:
1234567vim ~/.zshrc# 增加如下内容setopt no_nomatch# 设置当前终端生效source ~/.zshrc
设置成功后,之后就可以直接使用 *,而不用增加双引号或单引号了。
参考链接
Manually update oh-my-zsh
How to Manually Update Oh-My-ZSH
...
利用 OpenCV(Python) 读取网上的图片和视频
在进行目标跟踪研究中,有时候需要直接读取网上的图片和视频,这时候利用 OpenCV 再加上 urllib、pafy、numpy 等就可以直接获取互联网上的各种图片和视频资源.
从网上读取图片12345678910111213141516171819202122232425262728293031323334353637import cv2import numpy as npimport urllibimport matplotlib.pyplot as plt# 读取网上图片url_img = 'https://c-ssl.dtstatic.com/uploads/blog/202105/27/20210527174258_991e1.thumb.1000_0.jpg'res = urllib.request.urlopen(url_img)i = np.asarray(bytearray(res.read()), dtype="uint8")img = cv2.imdecode(i, cv2.IMREAD_COLOR)# 或者如下(先读取 ...
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 ...