detectron2 使用总结

概述

  1. detectron2 大部分代码都需要GPU
  2. detectron2 主要是用于检测和分割的代码框架,像分类这种任务的代码暂时没有
  3. 官方示例有一些是基于Colab的,需要科学上网才能访问

    安装依赖

    sudo pip install -U torch==1.4+cu100 torchvision==0.5+cu100 -f https://download.pytorch.org/whl/torch_stable.html
    sudo pip install cython pyyaml==5.1 --ingnore-installed

    # 安装 cocoapi
    sudo pip install -U 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'
    其中cocoapi 需要从GitHub下载代码,如果安装太慢,可以先clone下代码,再进PythonAPI子目录,运行setup.py安装:
    git clone https://github.com/cocodataset/cocoapi.git
    cd cocoapi/PythonAPI
    sudo python3 setup.py install

安装 detectron2

这里直接安装编译好的二进制文件。

sudo pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu100/index.html

如果文件下载太慢或者超时,可以手动在浏览器里面下载好文件,再用下面的命令安装(假设下载的whl文件是xxx.whl):

sudo pip install xxx.whl

安装完后,打开 Python 命令行,执行下面的命令,如果不报错,说明安装成功:

import detectron2

测试

为了测试,需要下载 detectron2 的源代码,基于 demo/demo.py 进行简单的测试:

git clone https://github.com/facebookresearch/detectron2
python3 detectron2/demo/demo.py --config-file detectron2/configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml --input ~/test.jpg --opts MODEL.WEIGHTS detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl

注意上述代码需要在 detectron2 的 git 仓库外面执行,否则会报错。
测试时输入支持单张图片、多张图片、单个图片文件夹、网络摄像头以及视频文件,每种情况参数设置如下:

# 单张图片
--input test.jpg
# 多张图片
--input test1.jpg test2.jpg test3.jpg
# 单个图片文件夹
--input imgs/*.jpg
# 网络摄像头
--webcame
# 视频文件
--video-input test.mp4

``–opts MODEL.WEIGHTS表示测试用的模型参数,可以是一个本地目录,也可以是一个detectron2://`开头的一个模型路径,这时会先下载模型到本地再测试:

# 使用本地的模型参数
--opts MODEL.WEIGHTS ./model_final_f10217.pkl
# 使用网络模型地址
--opts MODEL.WEIGHTS ./model_final_f10217.pkl

模型的名字可以在 Model Zoo 查看。

训练

训练代码参考 tools/train_net.py,目前Detection看。

一些代码分析

  1. DefaultTrainer 是针对目前常用的Detection设置而写的一个类,为了不用修改太多就直接复现最佳结果。但另一方面,由于有比较多的假设情况,因此通用性有所降低
  2. SimpleTrainer 是 DefaultTrainer 的父类,限制条件更少,对于做新的研究任务,作者推荐继承 SimpleTrainer 来修改
  3. 代码支持多机多卡多进程,基于 Pytorch 的多级多卡代码写了一些wrapper
  4. 代码注释很完善,而且其中很多是给用户怎么基于现在代码进行修改来跑新的网络、做新的任务,有些地方说的很细致,这一点很棒

一些资源

  1. 文档
  2. Git 仓库

Cygwin环境下查看远程服务器的图片

Linux系统下,SSH -X能够将 ssh 连接到的远程服务器上的图形化显示转发到本地,因此可以方便地查看服务器上的结果。不过在Cygwin下,使用ssh -X选项并不work。

调查后发现是需要用Cygwin的安装文件安装xorg-serverxinit这两个包,然后在一个终端执行startxwin,一直开着,在别的终端进行ssh连接与显示,发现就可以了。

另外发现Cygwin的一个缺点是,每次安装包都得重新运行一遍安装文件,还是没有apt来得方便,所以后面试试能否用WSL替代Cygwin来工作。

参考

  1. https://unix.stackexchange.com/a/227937

Cygwin 使用rsync 报错解决

在 Cygwin 下使用rsync时,报下面的错误:

rsync: connection unexpectedly closed (0 bytes received so far) [receiver] 
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [receiver=3.0.5]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(610) [sender=3.0.8]

由于rsync是通过ssh工具来传数据的,通过which ssh 查看,发现使用的是 Windows 自带的 SSH,所以报错,因此用 Cygwin 的安装程序重新安装openssh包,再打开终端,默认使用的ssh就变成 Cygwin 下的了,此时使用rsync命令就不再报错了。

加速国内访问 Arxiv 论文的一些方法

arxiv 的 PDF 下载速度很慢,下面是一些加速方法。

命令行直接下载

我们知道可以用wget命令下载一些网络文件, 不过arxiv 上的论文使用wget下载时需要加参数--user-agent=Lynx,速度才能较快,下面是使用的例子:

wget --user-agent=Lynx https://arxiv.org/pdf/1911.05722.pdf

上述命令需要在Linux或者WSL的命令行中执行。

修改网址

一种方法是将https://arxiv.org改成 http://xxx.itp.ac.cn,后面内容不变,速度飞快。
还有一种方式是将https://arxiv.org改成http://cn.arxiv.org,后面网址内容不变,不过这个方法有时候并不work,因此推荐上一种方法。

更多方法可以参考知乎上的这个问题

2019年终总结

2019 大事记录

个人生活上,在2019,我结婚了。领证,订婚,两周后的结婚都是今年重大的事情。有的时候,觉得这些都是重大的神圣时刻,而更多的时候,真正经历其中的时候,发现这些都是由一个个平常普通的事件构成的。生活的大多数美好,是否只有在成为记忆,再次回想的时候,才会展现出来?我不知道,不过确实有些美好是在经历时就能感受到的。

今年和家人好友相聚的次数多了,而且内心非常珍惜每一次相聚的机会。大家天南海北,相聚到一起,面对面地坐下聊天,似乎也是非常难得的时刻。因此我将今年的每一次相聚都记录下来,因为这是我所珍视的东西。

在上下班的公交上,继续用微信阅读来读书。除了《飞狐外传》,《侠客行》和《越女剑》,别的金庸的小说都看完了。射雕里面的剧情经常浮现出来,仿佛久远的记忆般。神雕居然给我感动到了,原来真正地爱情确实有打动人心的力量。看了《连城诀》,想体验一次雪崩……

电影院今年很少去,基本都是在笔记本看完的电影和美剧。有时候,周末的午后,看一部怀旧电影,那这个周末就很满足了。

当然,作为一个上班族,今年的大多数时间都是在公司度过的,而其实我对自己这一年的工作表现并不满意。总得来说,沟通做的不够好,思考不够深入,没有解决一些创新性问题或本质问题。希望2020年在这些方面能做更好。

下面从几个方面总结下2019这一年。

Read More

Always blue——关于《硅谷》电视剧的一些想法

Chapter 1

美剧硅谷完结了。
忘了从什么时候开始看的这部剧,只记得在研究生的那几年,和庆哥一起看过,周围貌似没有别的人在看。去年第五季等了很久,看完后以为没有下一季了,偶然在网上看到居然还有第六季,于是赶紧开始看,最后五六集实在是太精彩了,看得大呼过瘾。第七集,却又很伤感,那些演员们陪伴我们的欢笑时光,终究要结束了。

Read More