NVIDIA GPU 显存释放
当我们使用 Nvidia GPU 训练深度学习模型时,特别是使用分布式多 GPU 时,因认为的终端程序,导致子线程(其实是子进程加载数据等)无法关闭,使得 GPU 显存一直占用,但是使用 nvidia-smi 却无法显示进程名等信息。本篇介绍如何彻底恢复 GPU 显存。
释放显存方案通过找到真正占用显存的进程,然后杀死进程后达到是否显存。
12345678910111213141516171819# 指定第 0 号 GPU 进程占用fuser -v /dev/nvidia0# 指定所有 GPU 进程占用fuser -v /dev/nvidia*# 根据进程 PID 查看程序内容sudo ls -l /proc/PID# 如果是 PYTHON 程序,会有 exe,cwd 等信息sudo ls -l /proc/PID | grep exesudo ls -l /proc/PID | grep cwd# 如果查询发现该进程就是占用显存的进程,那么直接杀死sudo kill -9 PID# 清除进程后,再次查看显存占用# 一般会有多个进程占用 GPU 显存,可以都查看下,是否需要杀死, ...
vboxmange 管理 virtualbox 虚拟机
使用 virtualbox 安装、管理虚拟机非常方便,而且该软件是开源的,使用起来更加简单。本篇介绍如何使用命令行工具 vboxmanage 管理 virtualbox 虚拟机。
以下所有命令中的 vboxmanage 均可以使用 VBoxManage 代替。
启动虚拟机12345678# 以图像界面启动虚拟机vboxmanage startvm vmname --type gui# 以无图像界面启动虚拟机,可远程登录vboxmanage startvm vmname --type headless# 重启虚拟机vboxmanage controlvm vmname reset
关闭虚拟机12345# 正常关机,类似于点击关闭按钮vboxmanage controlvm vmname acpipowerbutton# 强制关机,类似于直接关闭电源vboxmanage controlvm vmname poweroff
查看虚拟机12345678# 列出所有虚拟机,运行的和未运行的vboxmanage list vms# 列出运行的虚拟机vboxmanage list runni ...
奇异值分解图像压缩
奇异值分解是数学矩阵分析的一种方法,能够将任意形状的(不仅包含方阵)矩阵分解为正交阵和(近似)对角阵的乘积的形式。该方法在很多领域都有应用,如图像压缩、推荐系统等。本篇简要介绍。
理论假设 $A_{m\times n}$ 为一个 $m\times n$ 实矩阵,则 $A^TA$ 为一个 $n$ 阶实对称矩阵,所以存在正交矩阵 $V=(v_1, v_2, \cdots, v_n)$ 使得
$$
V^T(A^TA)V = \text{diag}(\lambda_1, \lambda_2, \cdots, \lambda_n),
$$
其中 $v_i$ 为 $A^TA$ 的对应于特征值 $\lambda_i$ 的单位特征向量,有
$$
\lambda_i = \lambda_i v^T_i v_i = v^T_i(\lambda_i v_i) = v^T_i(A^T Av_i) = (Av_i)^T(Av_i) = \parallel Av_i \parallel^2 \geq 0.
$$
对特征值从大到小排序,$\lambda_1 \geq \lambda_i \ ...
PCA 人脸识别
PCA(Principal Component Analysis) 作为一种数学矩阵分析方法,能够约简多元数据集,在许多领域有重要应用,本篇介绍 PCA 应用于人脸识别。
问题给定一组具有 $m$ 个样本的 $n$ 维数据 ${a_1, a_2, \cdots, a_m }$,如何找到特殊的较少方向使得数据在该方向上的投影方差最大。方差大说明在新空间中数据更容易分离,更方便判断类别等。
理论将每个样本写成列向量,得到矩阵:
$$
A = \bigl(
\begin{smallmatrix}
a_1 & a_2 & \cdots & a_m
\end{smallmatrix}
\bigr)
$$
为了方便,我们先对矩阵 $A$ 沿着行方向求取平均值,然后将 $A$ 的每一行减去对应的均值。这样做能够约简 $A$,方便计算。
寻找主方向 $u$,使得 $A$ 在该方向的投影方差尽量大,方差最大的方向就是主方向。即
$$
Var(A \cdot u) = (Au)^T(Au) = u^T A^T Au.
$$
为目标函数。一般地,我们选择单位方向 $u$,所以有 $u^Tu& ...
code-server 的安装与使用
Visual Studio Code(简称 vscode)是一款由微软开发且跨平台的免费源代码编辑器,结合插件能够用于多种语言程序开发(如 python, java, javascript, go 等)。但是其属于一款客户端软件,在远程服务器上使用不如 code-server,code-server 是一款能够在网页上使用的 vscode,极大的方便程序开发人员快速访问与编码。本篇介绍如何在 ubuntu 18.04 上安装和配置,使其适用于 python 开发。
安装123456wget https://github.com/coder/code-server/releases/download/v4.23.0/code-server-4.23.0-linux-amd64.tar.gztar -xzvf code-server-4.23.0-linux-amd64.tar.gzsudo mv code-server-4.23.0-linux-amd64 /usr/local/code-server# 首次运行/usr/local/code-server/bin/code-serve ...
ubuntu 终端上查看图像文件及元信息
当想要查看远程服务器上的文件(如图片)时,通过远程桌面可以实现,但是又太笨重了。通过(支持 X11 的终端,如 mobaxterm, windterm, putty 等) SSH 远程访问服务器相对更轻量,然后直接在终端上输入命令直接在本地打开远程服务器上的图片等内容,显示图像元信息等。本篇介绍几个常用的命令行工具查看图片及元信息等。
打开图像打开图像的命令行工具有很多,如 xdg-open, display, eog, fim 等。
xdg-openxdg-open 命令不仅能够打开图片还能够打开其他文件,它以文件的默认打开程序打开文件。
12345# 使用默认程序打开文件xdg-open images/000.png# 使用默认程序打开文件夹xdg-open images
displaydisplay 命令是 ImageMagick 提供的一个查看图片文件的工具,且通过了对图像进行一些列的增强等功能,想要使用它需要先安装(其他版本的 linux 发行版也可以使用,可根据情况安装):
12sudo apt updatesudo apt install imagemagick
使 ...
CFBI+, Collaborative Video Object Segmentation by Multi-Scale Foreground-Background Integration
本篇介绍发表在 CVPR 2020 和 TPAMI 2021 上的文章:Collaborative Video Object Segmentation by Multi-Scale Foreground-Background Integration,基于多尺度的前景和背景整合的半监督视频目标分割方法。这篇文章是前篇 CFBI 的扩展与升级,增加了多尺度和空洞匹配到 CFBI。
文章资源
预印本 (Preprint):arxiv
正式发表版本 (Version of Record, VOR):TPAMI 2021
代码仓库:github,同 CFBI 仓库。
题目文章题目是 Collaborative Video Object Segmentation by Multi-Scale Foreground-Background Integration,指明文章的应用领域是视频目标分割(Video Object Segmentation, VOS),文章提出同时考虑多尺度的前景和背景信息(Foreground-Background Integration)来解决视频目标分割(VOS)任 ...
mac 中 chrome 快捷键
mac 上使用 chrome 快捷键记录。
快捷键(short-cut key)
功能
⌘ + r
刷新当前页面
⌘ + shift + r
强制刷新当前页面
⌘ + l
光标跳到地址栏并选中
⌘ + c
拷贝
⌘ + v
粘贴
⌘ + x
剪切
⌘ + w
关闭当前页面
⌘ + t
打开新的标签页
⌘ + n
打开新的窗口
⌘ + shift + n
打开新的无痕窗口
ctrl + PgDn
跳转到下一个页面
ctrl + PgUp
跳转到上一个页面
⌘ + i
跳转到第i个页面
⌘ + 9
跳转到最后一个页面
⌘ + 左方向键
后退
⌘ + 右方向键
前进
CFBI, Collaborative Video Object Segmentation by Foreground-Background Integration
本篇介绍发表在 ECCV 2020 上的文章:Collaborative Video Object Segmentation by Foreground-Background Integration,前景和背景整合的半监督视频目标分割方法。
文章资源
预印本 (Preprint):arxiv
正式发表版本 (Version of Record, VOR):ECCV 2020
代码仓库:github
题目文章题目是 Collaborative Video Object Segmentation by Foreground-Background Integration,指明文章的应用领域是视频目标分割(Video Object Segmentation, VOS),文章提出同时考虑前景和背景信息(Foreground-Background Integration)来解决视频目标分割(VOS)任务。
作者文章作者分别是 Zongxin Yang, Yunchao Wei, Yi Yang。三位作者都是来自澳大利亚悉尼科技大学人工智能中心 ReLER,第一作者杨宗鑫博士当时在该学校攻读计 ...
FEELVOS, Fast End-to-End Embedding Learning for Video Object Segmentation
本篇介绍一篇发表在 CVPR 2019 上的半监督视频目标分割文章:FEELVOS: Fast End-to-End Embedding Learning for Video Object Segmentation. 一种简单而快速的方法,不依赖于微调。
文章资源
预印本 (Preprint):arxiv
正式发表版本 (Version of Record, VOR):CVPR 2019
代码仓库:文章给的代码仓库是 https://github.com/tensorflow/models/tree/master/research/feelvos ,但是已经被删除,第三方 github 代码
题目文章题目是 FEELVOS: Fast End-to-End Embedding Learning for Video Object Segmentation,指明文章的应用领域是视频目标分割(Video Object Segmentation, VOS),文章使用提出的 FEELVOS(Fast End-to-End Embedding Learning forVideo Object ...
Video Object Segmentation 评估指标
本篇介绍常用的视频目标分割的评估方法,即文章 CVPR2016: A Benchmark Dataset and Evaluation Methodology for Video Object Segmentation 中提出的 DAVIS 数据集和评估指标:
Region Similarity $\mathcal{J}$
Contour Accuracy $\mathcal{F}$
Temporal stability $\mathcal{T}$
在 2017 年及以后,DAVIS 竞赛保留的主要评估方法是 Region Similarity $\mathcal{J}$ 和 Contour Accuracy $\mathcal{F}$。
代码github 官方代码:
Python 2016 原版
Python 2017 优化版
除了 Python 版本的代码,官方还提供了 MATLAB 版本代码,这里使用 Python 2017 优化版进行介绍,注意官方代码采用 python 2.x。
在监督评估框架中,给定特定帧上的真实(groundtruth)掩码 $G$ 和输出分割 ...