XRPD 相关的一个小问题——关于 `thinclient_drives` 目录的错误

关于 XRPD 是什么,我就不废话了.它会在远程 Linux 主机的用户家目录下创建一个 thinclient_drives 目录,用于驱动器的映射.这个目录实际上应该是用 fuse 挂载的.但是有的时候会遇到该目录的权限错误,如下: d????????? ? ? ? ? ? thinclient_drives/ 它的权限位全部变成了问号.这个是因为挂载出现了问题.如果你尝试使用 fuser thinclient_drives 去分析它,会得到提示: 无法分析 /home/user/thinclient_drives: 传输端点尚未连接 或者 Cannot stat /home/user/thinclient_drives: Transport endpoint is not connected 实际上就是挂载出现了错误.如果你使用 XFCE 的文件管理器 Thunar,你甚至会无法打开文件管理器.解决方法很简单,只需要将其正确卸载即可: fusermount -u thinclient_drives Over. 参考:FUSE error: Transport endpoint is not connected

区域生长算法的一种实现

算法流程 选取种子点 QPoint seed(x, y),用栈来保存种子点区域,将种子点 push 到栈中. 将栈中的种子点 pop 出来,以该点为中心,遍历其八邻域. 判断邻域像素是否已经在种子区域中,若否则判断该像素是否满足生长条件,满足则将其作为新的种子点 push 到栈中. 重复步骤 2-3,直到栈为空. 代码实现 // seed 为种子点坐标 // threshold 为一个阈值,若邻域像素与种子点的灰度值之差小于这个阈值 // 则判定其满足生长条件 // // 这里默认使用了 Qt 的栈 QStack,图像的读写使用 CImg.h 库 void regionGrowth(const QPoint &seed, const int &threshold) { // 输入图像 CImg<int> img("test.png"); // 输出结果图像 // 这是一个全白的图片 CImg<int> result(img.width(), img.height(), img.depth(), img.spectrum(), 255); int T = threshold; // 用于存储坐标值的临时变量 int x, y; // 种子栈 QStack<QPoint> seeds; // 用于存储 pop 出来的种子的临时变量 QPoint currentSeed; // 将原始的种子压栈 seeds.

more...

什么是颜色相关直方图

正文 记 \( I \) 为一幅 \( n \times n \) 的图像,\( I \) 中的颜色可以量化为 \( m \) 种:\( c_{1}, c_{2}, \ldots, c_{m} \).对于一个像素 \( p = (x, y) \),记 \( I(p) \) 为他的颜色.记 \( I_{c} \triangleq \{ p \mid I(p) = c \} \),这样子的话,记号 \( p \in I_{c} \) 就等价于 \( p \in I, I(p) = c \).为了简单起见,作者使用无穷范数来度量两个像素之间的距离,即像素 \( p_{1} = (x_{1}, y_{1}), p_{2} = (x_{2}, y_{2}) \) 的距离为 \( \lvert p_{1} - p_{2} \rvert \triangleq \max \{ \lvert x_{1}, x_{2} \rvert, \lvert y_{1} - y_{2} \rvert \} \).记集合 \( \{ 1, 2, \ldots, n \} \) 为 \( [n] \).

more...

Linux 系统状态日志记录

初衷 就是服务器今天早上意外关机了.查看系统日志也没有查找到具体的原因.猜测可能是温度过过高导致的自动关机.结果日志里并没有记录 CPU、GPU 或者硬盘的温度之类的信息.看来还是要自己动手,丰衣足食. CPU 温度 比较常用的就是 lm_sensors 这个包了.不过为了方便将 CPU 温度记录到系统日志文件中,我们需要安装的是 sensord 这个包.有些发行版将两者打包到了一起,也有一些是将他们分开,但是安装 sensord 也会同时安装 lm_sensors 的.对于 Ubuntu/Debian 系统,直接安装即可: sudo apt install sensord 然后运行一下: sudo sensord sensord 就会每隔一段时间将 CPU 温度写入到系统日志文件里,一般是 /var/log/syslog 里. 硬盘温度 这个可以安装 hddtemp 包,安装好之后运行一下: sudo hddtemp --syslog=1200 --unit=C /dev/sda 上面的命令表示每隔 1200 秒,也就是 30 分钟,将硬盘 /dev/sda 的温度信息写入到 /var/log/syslog 里,单位为摄氏度. GPU 这里只考虑 Nvidia 的 GPU,它提供的 nvidia-smi 命令就可以将 GPU 信息保存为日志. sudo nvidia-smi daemon 这样就可以开启一个守护进程,将 Nvidia GPU 的信息保存到日志里.默认的保存路径为 /var/log/nvstats.Windows 系统下也可以使用这个命令,相应的默认保存地址为 C:/Program Files/NVIDIA Corporation/NVSMI

more...

几行命令在 Arch Linux 下为本地局域网搭建一个 git server

安装 git So easy, pacman -S git 启动 git-daemon.socket systemctl start git-daemon.socket systemctl enable git-daemon.socket 这个 daemon 的实际启动命令为: ExecStart=-/usr/lib/git-core/git-daemon --inetd --export-all --base-path=/srv/git 从这里可以知道我们的 git 仓库放在 /srv/git 目录下.只要在该目录下创建一个 git 仓库,它就会自动被 git server 管理.用户访问该仓库的命令类似这样: git clone [email protected]:/srv/git/repository.git 其中 IP 为 git server 的 IP,repository 为仓库的名称. 其实到这里就已经搞定了,是不是很简单?不是啦,还是需要一些配置的. 添加访问权限 如果你真的使用上面的命令去 clone 一个仓库,肯定是没有权限的.我们需要添加 ssh key.一般我们把 ssh 公钥放到 ~/.ssh/authorized_keys 里去.咦?git 用户的 $HOME 在哪里呢?用这个命令查看 eval echo "~git" 结果是 /.好像直接在根目录下放不太好吧.哦,那就修改一下 git 用户的 home 目录啊.

more...

Vgg Practical Cnn 2016a 笔记

Getting started 代码和数据的下载此处省略,MatConvNet 工具包的编译安装省略.本文使用的环境为 Arch Linux, Matlab 2017a, MatConvNet 1.0-beta25. Part 1: CNN building blocks Part 1.1: convolution 一个典型的神经网络可以用以下公式表示: \[ f(\mathbf{x}) = f_{L} (\ldots f_{2}(f_{1}(\mathbf{x}; \mathbf{w}_{1}); \mathbf{w}_{2}) \ldots), \mathbf{w}_{L}). \] 每一个函数 \( f_{l} \) 接受一个输入 \( \mathbf{x}_{l} \) 和一个参数 \( \mathbf{w}_{l} \),产生一个输出 \( \mathbf{x}_{l+1} \).其中的参数 \( \mathbf{w} = (\mathbf{w}_{1}, \ldots, \mathbf{w}_{L}) \) 是从输入数据中学习到的,目的是为了解决某一特定问题,例如分类. 对于计算机视觉来说,输入数据一般就是 2D 的矩阵.一般来说,每个 \( \mathbf{x}_{i} \) 是一个 \( M \times N \times K \) 的实矩阵,对应着 \( M \times N \) 的像素,每个像素的通道数为 \( K \).因此,前两个维度张成矩阵空间,最后一个张成通道.注意,神经网络的输入 \( \mathbf{x} = \mathbf{x}_{1} \) 表示实际的输入图像,而其他的 \( \mathbf{x}_{i} \) 为中间文件,为特征图像 (feature map).

more...

Automatic Scoring of Multiple Semantic Attributes With Multi Task Feature Leverage a Study on Pulmonary Nodules in Ct Images 阅读笔记

摘要 Computational 与语义特征之间的鸿沟是制约着计算机辅助诊断 (CAD) 在临床上的应用的一个主要因素.文章提出三个多任务学习方案 (MTL) 来平衡从 SDAE, CNN, Haar-like 和 HoG 深度学习模型提取到的异质 computational features,这些 features 对应的是肺部 CT 图像的 9 个语义特征.作者认为,这些语义特征之间存在一定关系,可以利用深度学习方法学习出来.文章使用的数据集为 LIDC 数据集,这个数据集中的 CT 图像由美国几个研究所的 12 名放射科医生进行量化评分.将每个语义特征看作一个单独的任务,MTL 从 LIDC 中随机选取 2400 个结节,然后将异质特征映射到放射科医生的评分.实验表示,利用 MTL 学习得到的语义特征评分,相比于单任务的 LASSO 和 elastic net regression 方法,更加接近放射科医生的评分. 介绍 相关研究 之前的 CAD 研究主要专注于判断肿瘤是良性还是恶性,也就是只做了简单的二分类. CADa 文章新提出的方案称作 CADa,它会有 1-5 的评分范围,从而评分更加具有临床诊断的参考价值. 肺结节的特征 Fig1:Nodule patterns with respect to the annotated degrees of the 9 semantic features 如图 1 所示,从临床上来说,肺结节的一些语义特征,如形状、毛刺、钙化等信息是具有诊断意义的.本文用的 9 个语义特征为:质地 (texture)、细微?(subtlety)、毛刺 (spiculation)、球形 (sphericity)、边缘 (margin),恶性 (malignancy)、分叶 (lobulation)、内部结构 (internal structure) 和钙化 (calcification).需要说明的是 IS 和 Cal 这两个语义特征的评分没有分数大小的关系,也就是说 Cal 的评分分值的大小没有语义上的大小关系,因而后面会对这两个语义特征单独处理.

more...

Linux 环境下安装 CUDA & CuDNN,并编译安装 MatConvNet & VLFeat

前言 本文针对是 Arch Linux & Ubuntu,其他发行版也可以参考. 版本信息 Ubuntu 16.04.3, gcc 5.4.0, CUDA 8.0, CuDNN 5.1, matconvnet 1.0-beta24, vlfeat 0.9.20 安装 CUDA 和 CuDNN Arch Linux Arch Linux 的 community 源里就已经有打包好的,目前的版本为 cuda 9.0.176-4, cudnn 7.0.3-1,直接安装即可: pacman -S cuda cudnn 这个安装包比较大,如果下载比较慢的,可以用以下命令输出安装包的 url 地址: pacman -Sp cuda cudnn 根据 url 地址,用其他方法下载到本地之后,再用 pacman -U pkgname.pkg.tar.xz 命令安装. Ubuntu Ubuntu 可以直接从 Nvidia 官网下载.推荐下载离线包,例如对应 Ubuntu 16.04 的 cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb.下载完成后使用 dpkg 命令安装: sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.

more...

服务器使用指南

前言 本指南主要覆盖 Linux 和 Windows 服务器的使用. Windows 服务器的远程连接 文件传输 关于 Windows 服务器的远程连接,我并不想说太多,只是在这里提一下文件的传输.打开远程桌面连接之前,点开选项,按照下图设置一下: 这样即可以将本地的驱动器(硬盘)映射到服务器上,可以直接在服务器上打开本地的驱动器,方便进行文件的传输.在服务器上看到的大概是这样子的: 另外一种传输文件的方式就是使用 FTP 服务了,可以下载安装一个 FTP 客户端,推荐使用 FileZilla,可以直接点击这里下载.安装好 FileZilla 之后,打开,输入服务器 IP,用户名与密码,端口无需填写,直接连接即可.FileZilla 左侧是本地的目录,右侧是远程服务器的目录.上传文件只需在左侧窗格选择文件,右键选择上传;下载文件则是从右侧窗格选择文件或者目录,然后右键选择下载.Windows 服务器上的 FTP 目录在某个盘下的 FTP 文件夹里,因为每台服务器上的硬盘剩余空间不同,所以没能统一都放在同一个盘符下.这个目录应该也不难找到,上传成功后可以根据需要移动到自己的目录下.Linux 服务器也配置好了 FTP 服务,同样可以使用 FileZilla 上传和下载.默认的上传目录为用户的主文件夹,即 /home/username,其中 username 为用户名. Windows 默认服务器默认使用 ftp 协议,所以主机地址应该是类似这样子的: ftp://172.21.20.96 Linux 服务器建议使用 sftp 协议,它的主机地址类似这样的: sftp://172.21.20.96 如果只需要从 FTP 服务器下载的话,也可以直接使用网页浏览器操作.网页浏览器地址栏直接输入 ftp://IP,然后输入用户名和密码登录即可. Linux 服务器的远程连接 Remote Desktop Protocol (RDP) 服务器上有配置好的 xrdp 服务,支持直接使用 Windows 的远程桌面连接,直接输入服务器 IP 地址,然后在登录界面输入用户名和密码即可登录.默认的桌面环境为 Xfce4,与刀片服务器上的是一样的. 需要补充说明的是,RPD 映射的驱动器在远程桌面里的位置为 ~/thinclient_drives/.

more...

Hugo 静态博客中迄今为止最佳数学公式支持-利用 MathJax & MMark

HTML 中的数学公式 要在 HTML 网页中显示数学公式并不是很简单的一件事情,一般最简单的方法自然就是直接用其他程序将写好的数学公式输出成图片,然后在网页中显示.这是最为稳妥,也能完全保证兼容性的办法,但是还是耗时耗力,不讨好. 目前比较流行的方法是交由 MathJax 来进行渲染,效果和兼容性都还不错,除非你还在用老掉牙的 IE6. Markdown 后端 Hugo 默认使用的 markdown 处理后端是 Blackfriday,此外也支持使用 Mmark.后者是从前者 fork 而来的.为了避免麻烦的配置,建议在写包含数学公式的博文时使用 Mmark.只需要在 markdown 文件的 front matter 里加上一行: markup: mmark 即可切换到 Mmark.推荐使用 Mmark 的原因只要是无需更多的配置就可以开始写数学公式了,数学公式全部用两个美元符号包围起来,就像这样 $$ f(x) = \sin(x) $$,显示的效果为 \( f(x) = \sin(x) \).行内公式和行间公式都是一样的,区别在于行间公式前后加上一个空行,这样就可以让 Mmark 自动判断你需要的是行内公式还是行间公式了.行间公式的例子: $$ f(x) = \sin(x) $$ 显示效果为: \[ f(x) = \sin(x) \] Hugo 的设置 这个很简单,只需要在 hugo 的主题目录里,加上一行代码到你的博文页面一定会包含的文件里即可.一般可以选择加入到 themes/paperback/layouts/partials/footer.html 里,这里的 paperback 是我使用的 hugo 主题名称.需要添加的一行代码为: <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_SVG"></script> MathJax 还有很多可以设置的选项,这里不讲,因为我也很少用,有兴趣的可以参考 MathJax 的配置.

more...