Ubuntu18.04 CVAT配置/安装

介绍

Computer Vision Annotation Tool (CVAT)是加州尔湾视频标注工具(http://carlvondrick.com/vatic/)的重设计和重实现版本,是用于计算机视觉的免费,在线,交互式视频和图像注释工具。 我们的团队正在使用它来注释百万个具有不同属性的对象。 许多UI和UX决策都是基于专业数据注释团队的反馈。

安装/配置

主要参考CVAT Github官方给出的 Quick installation guide

基本环境

参考Linux查看系统基本信息,版本信息(最全版),查看下系统信息。

  • Ubuntu 18.04.4 LTS (GNU/Linux 5.3.0-1032-azure x86_64) 服务器上部署
    $ uname -a (linux查看当前版本操作系统信息)
    $ Linux hsh 5.3.0-1032-azure '#'33~18.04.1-Ubuntu SMP Fri Jun 26 15:01:15 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
    
  • 磁盘空间还不错,20G以上,因为要传数据到服务器进行标注(硬盘大点会好些)
    $ lsblk #(查看磁盘信息 - 列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息)
    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda       8:0    0   30G  0 disk 
    ├─sda1    8:1    0 29.9G  0 part /
    ├─sda14   8:14   0    4M  0 part 
    └─sda15   8:15   0  106M  0 part /boot/efi
    sdb       8:16   0   64G  0 disk 
    └─sdb1    8:17   0   64G  0 part /mnt
    sr0      11:0    1  628K  0 rom  
    $ df -k  #(以KB单位显示磁盘分区上的可使用的磁盘空间)
     		-k   like --block-size=1K
    $ df -BG  #(以GB为单位显示可用磁盘空间)
    	-B, --block-size=SIZE  scale sizes by SIZE before printing them; e.g.,
                               '-BM' prints sizes in units of 1,048,576 bytes;
                               see SIZE format below
                               
    Filesystem     1G-blocks  Used Available Use% Mounted on
    udev                 16G    0G       16G   0% /dev
    tmpfs                 4G    1G        4G   1% /run
    /dev/sda1            29G    2G       28G   5% /
    tmpfs                16G    0G       16G   0% /dev/shm
    tmpfs                 1G    0G        1G   0% /run/lock
    tmpfs                16G    0G       16G   0% /sys/fs/cgroup
    /dev/sda15            1G    1G        1G   4% /boot/efi
    /dev/sdb1            63G    1G       60G   1% /mnt
    tmpfs                 4G    0G        4G   0% /run/user/1000
    

Docker安装

  • 根据 How to run it without docker? 可知,使用Docker安装是最简单直接的方式,

  • 如果想要不使用Docker安装,使用Development environment这里的描述进行操作。(PS:看起来步骤确实多了许多)

  • . 安装docker 主要参考 Install Docker Engine on Ubuntu

    • 方法一:参考 Ubuntu18.04下Docker CE安装,直接使用阿里云的脚本安装(使用官方脚本安装)
    	curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    

    安装时的情况:

    $ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    # Executing docker install script, commit: 26ff363bcf3b3f5a00498ac43694bf1c7d9ce16c
    + sudo -E sh -c 'apt-get update -qq >/dev/null'
    + sudo -E sh -c 'DEBIAN_FRONTEND=noninteractive apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null'
    + sudo -E sh -c 'curl -fsSL "https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg" | apt-key add -qq - >/dev/null'
    Warning: apt-key output should not be parsed (stdout is not a terminal)
    + sudo -E sh -c 'echo "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic stable" > /etc/apt/sources.list.d/docker.list'
    + sudo -E sh -c 'apt-get update -qq >/dev/null'
    + '[' -n '' ']'
    + sudo -E sh -c 'apt-get install -y -qq --no-install-recommends docker-ce >/dev/null'
    + sudo -E sh -c 'docker version'
    Client: Docker Engine - Community
     Version:           19.03.12
     API version:       1.40
     Go version:        go1.13.10
     Git commit:        48a66213fe
     Built:             Mon Jun 22 15:45:36 2020
     OS/Arch:           linux/amd64
     Experimental:      false
    
    Server: Docker Engine - Community
     Engine:
      Version:          19.03.12
      API version:      1.40 (minimum version 1.12)
      Go version:       go1.13.10
      Git commit:       48a66213fe
      Built:            Mon Jun 22 15:44:07 2020
      OS/Arch:          linux/amd64
      Experimental:     false
     containerd:
      Version:          1.2.13
      GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
     runc:
      Version:          1.0.0-rc10
      GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
     docker-init:
      Version:          0.18.0
      GitCommit:        fec3683
    If you would like to use Docker as a non-root user, you should now consider
    adding your user to the "docker" group with something like:
    
      sudo usermod -aG docker hsh
    
    Remember that you will have to log out and back in for this to take effect!
    
    WARNING: Adding a user to the "docker" group will grant the ability to run
             containers which can be used to obtain root privileges on the
             docker host.
             Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
             for more information.
    

    最后那段描述的意思是:如果你想要以非root用户的方式使用Docker,就使用下面的代码,但是要注销再次登录才能生效,但是这样会有一些权限方面的问题。

    • 方法二(以下,其实CVAT里docker安装就是docker官网安装的代码凑到了一堆):
      • 先确保自己的环境里没有docker(卸载旧版本):
      $ service docker start (启动docker服务 起不来就是没有)
      	==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
      	Authentication is required to start 'docker.service'.
      	Authenticating as: Ubuntu (hsh)
      	Password: 
      	==== AUTHENTICATION COMPLETE ===
      	Failed to start docker.service: Unit docker.service not found.
      $ sudo apt-get remove docker docker-engine docker.io containerd runc 
      (稳一点 卸载下试试)
      
      • 然后就根据 英文 Install Docker Engine on Ubuntu,或者差不多对应的中文 Ubuntu18.04 安装Docker进行常规方式的安装。

验证Docker是否安装成功

$ docker -v/--version
Docker version 19.03.12, build 48a66213fe
$ docker info # 这个会给出很多信息
$ sudo docker run hello-world

运行后大致信息如下:
Ubuntu18.04 CVAT配置/安装_第1张图片

卸载Docker

Uninstall the Docker Engine, CLI, and Containerd packages:

$ sudo apt-get purge docker-ce docker-ce-cli containerd.io

Images, containers, volumes, or customized configuration files on your host are not automatically removed. To delete all images, containers, and volumes:

$ sudo rm -rf /var/lib/docker

You must delete any edited configuration files manually.

PS:

# 和开头删除旧版本docker的还是有些不一样
$ sudo apt-get remove docker docker-engine docker.io containerd runc 

修改权限

可以作为一个非root用户使用docker

1. 创建`docker`组
$ sudo groupadd docker
2. 将用户添加到`docker`组($USER就是获取当前用户的意思,不用自己换成自己的名字)
$ sudo usermod -aG docker $USER
3. 登出并登入或者重启系统 确保组成员信息生效(linux环境可以使用如下命令使组信息修改生效)
$ newgrp docker 
或者
$ reboot(重启)
4. 确认可以不使用sudo运行docker(这步得到和验证是否安装成功一样的结果,就ok了)
$ docker run hello-world

例如:
$ echo $USER
XXXX(就会输出当前用户的名称)

安装docker-compose组件

Compose是用于定义和运行多容器Docker应用程序的工具。

$ sudo apt-get --no-install-recommends install -y python3-pip
$ sudo python3 -m pip install setuptools docker-compose

注意:
在执行第二句的时候 直接按照上面方式安装 会报错 
ModuleNotFoundError: No module named 'setuptools'

可能是因为同时安装 setuptools docker-compose,安装过程其实都是下载,下载完才安装,导致后者找不到前者。
所以分开安装,即

$ sudo python3 -m pip install setuptools
# 先安装这个 就会出现 Successfully installed setuptools-49.2.0
$ sudo python3 -m pip install docker-compose
# 再安装就不会报错了

Clone CVAT的 GitHub repository及安装构建

1. 安装git
$ sudo apt-get --no-install-recommends install -y git

2. clone仓库
$ git clone https://github.com/opencv/cvat
# 下载速度会有一丢丢感人  总共93.21MB

3. 切换到cvat目录
$ cd cvat

4. 以默认方式构建docker镜像。会花点时间下载Ubuntu:16.04这个公共镜像,同时安装要运行CVAT服务的必要Ubuntu包(建议在进行这步之前修改pip源 不然下载一些python包很慢。如下图 大约要花80分钟左右)
$ docker-compose build

(过程中会有一些warning,在安装tensorflow(linux版本的安装包516MB)的时候还显示超时。WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)",)': /simple/tensorflow/   等了至少20分钟 这个才过去,建议在进行这步之前修改pip源
还有有很多的比较长的无提示等待时间,反正等着就行了)

5. 运行docker容器,会花点时间下载一些公共docker镜像,比如 postgres:10.3-alpine, redis:4.0.5-alpine并创建容器(PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS) XXX-alpine是所要安装的这两个数据库镜像的名称 )  [这个很快,不到1分钟]
$ docker-compose up -d

6. 您可以注册用户,但默认情况下,它甚至没有查看任务列表的权限。 因此,您应该创建一个超级用户。 超级用户可以使用管理面板为用户分配正确的组。 请使用以下命令:
$ docker exec -it cvat bash -ic 'python3 ~/manage.py createsuperuser'
然后选择您的管理员帐户的登录名和密码(还有邮箱),更多信息需要查看  9 [Django文档(创建超级用户)]

7. CVAT只支持谷歌浏览器,需要安装一下
$ curl https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
$ sudo apt-get update
$ sudo apt-get --no-install-recommends install -y google-chrome-stable

PS:由于我使用的是Ubuntu18.04的服务器,所以我只能想办法在这里打开8080接口,然后使用地址去访问了。。。

Ubuntu18.04 CVAT配置/安装_第2张图片

进阶主题

额外设置(使其他机器可以访问服务器的CVAT)

这里只是toy实验性质的通过一个机子访问服务器,如果是想到后面弄个域名,真正使用,需要参考Serving over HTTPS CVAT安装手册的这个部分,用更安全的方式来访问CVAT

如果要在本地主机之外访问CVAT实例,则应指定CVAT_HOST环境变量。 最好的方法是创建docker-compose.override.yml并将所有其他设置放在此处。

参考 10.Docker Compose 之进阶篇 可知:

docker-compose 命令默认使用的配置文件是当前目录中的 docker-compose.yml 文件,当然我们可以通过 -f 选项指定一个其它名称的配置文件,例如

$ docker-compose -f docker-compose-dev.yml up

查看CVAT当前目录内容可以发现:其实这里已经有两个了(可以去github上看看这两个文件里面的东西),所以要新建一个docker-compose.override.yml文件。
在这里插入图片描述
参考默认的:docker-compose.yml 这个文件
Ubuntu18.04 CVAT配置/安装_第3张图片
则我们自己创建的docker-compose.override.yml内容应该是类似下面这样,把CVAT_HOST改成自己服务器的ip地址就好了:

version: "2.3"
services:
  cvat_proxy:
    environment:
      CVAT_HOST: 193.125.45.34 

直接用winscp传上去,然后在 CVAT文件夹下。参考Share Compose configurations between files and projects使配置文件生效:

$ vim docker-compose.override.yml 
查看下文件内容  (i/esc) 然后 q 退出

为了让新上传的这个yml配置文件生效(同时保证其他的不变 所以先写上默认的 再写上新加的 这样后者的host就会覆盖前者,但是其他不影响) 
$ netstat -anlp | grep 8080     #查看8080端口是否开放      
$ docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d

docker-compose up -d 关于up
(相当于 build + start )构建(容器)并启动(容器)整个project的所有service

然后就可以在浏览器中使用ip地址+端口访问你的CVAT啦,O(∩_∩)O哈哈~。用之前创建的超级用户身份登录看看

其他相关内容:

docker-compose start  开启当前容器

docker-compose down 停止和移除所有由up创造的containers, networks, volumes和images 

或者 docker-compse 还默认还支持一种合并、覆盖配置文件的写法,就是使用约定的文件名称 docker-compose.yml 和 docker-compose.override.yml。直接执行不带 -f 选项的命令:

$ docker-compose config
$ docker-compose config  -q            
验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息

docker-compose 自动合并了配置文件 docker-compose.yml 和 docker-compose.override.yml。这种方式虽然省去了指定 -f 选项的麻烦但其缺点也是很明显的,就是无法指定更多不同的应用场景。
执行后,会打印出现在生效的配置文件全貌
Ubuntu18.04 CVAT配置/安装_第4张图片

参考链接

1.Linux查看系统基本信息,版本信息(最全版)
2. Ubuntu18.04 安装Docker
3. Ubuntu18.04下Docker CE安装
4. Ubuntu18.04安装Docker
5. ubuntu18.04安装docker
6. Docker容器安装
7. Ubuntu18.04安装docker
8. 菜鸟教程-Docker安装
9. Django文档(创建超级用户)
10.Docker Compose 之进阶篇

你可能感兴趣的:(环境配置)