Computer Vision Annotation Tool (CVAT)是加州尔湾视频标注工具(http://carlvondrick.com/vatic/)的重设计和重实现版本,是用于计算机视觉的免费,在线,交互式视频和图像注释工具。 我们的团队正在使用它来注释百万个具有不同属性的对象。 许多UI和UX决策都是基于专业数据注释团队的反馈。
主要参考CVAT Github官方给出的 Quick installation guide
参考Linux查看系统基本信息,版本信息(最全版),查看下系统信息。
$ 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
$ 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
根据 How to run it without docker? 可知,使用Docker安装是最简单直接的方式,
如果想要不使用Docker安装,使用Development environment这里的描述进行操作。(PS:看起来步骤确实多了许多)
. 安装docker 主要参考 Install Docker Engine on Ubuntu
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,就使用下面的代码,但是要注销再次登录才能生效,但是这样会有一些权限方面的问题。
$ 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
(稳一点 卸载下试试)
$ docker -v/--version
Docker version 19.03.12, build 48a66213fe
$ docker info # 这个会给出很多信息
$ sudo docker run hello-world
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(就会输出当前用户的名称)
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
# 再安装就不会报错了
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接口,然后使用地址去访问了。。。
这里只是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 这个文件
则我们自己创建的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 选项的麻烦但其缺点也是很明显的,就是无法指定更多不同的应用场景。
执行后,会打印出现在生效的配置文件全貌
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 之进阶篇