【EdgeX(11)】 :通过研究openvino项目发现一个好东西,CVAT项目数据标注工具,可以使用docker-compose进行本地部署,本地局域网中使用,也非常安全
目录
- 前言
- 1,关于CVAT项目
- 2,使用docker-compose 进行本地部署
- 3,总结
前言
相关EdgeX Foundry 全部分类:
https://blog.csdn.net/freewebsys/category_9437788.html
本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/108971807
未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys
1,关于CVAT项目
项目地址:
https://www.cvat.ai/
github地址:
https://github.com/openvinotoolkit/cvat
CVAT 全称 Computer Vision Annotation Tool,是用于计算机视觉的免费、在线、交互式视频和图像注释工具。
也可以使用docker-compose 进行本地部署。
2,使用docker-compose 进行本地部署
参考:
https://openvinotoolkit.github.io/cvat/docs/administration/basics/installation/#ubuntu-1804-x86_64amd64
git clone https://github.com/openvinotoolkit/cvatcd cvatdocker-compose up -d
然后就是修改 admin管理员密码:
docker exec -it cvat bash -ic 'python3 ~/manage.py createsuperuser'Username: adminEmail address: admin@admin.comPassword: Password (again): The password is too similar to the username.This password is too short. It must contain at least 8 characters.This password is too common.Bypass password validation and create user anyway? [y/N]: ySuperuser created successfully.
然后访问本地 http://localhost:8080 就可以使用刚才创建的账号密码进行登录了。
创建成功之后可以
docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMEScd2f78c21ce4 openvino/cvat_ui "/docker-entrypoint.…" 14 minutes ago Up 14 minutes 80/tcp cvat_uia9d46353da12 openvino/cvat_server "/usr/bin/supervisord" 14 minutes ago Up 14 minutes 8080/tcpcvatfa3ba4d0462f redis:4.0-alpine "docker-entrypoint.s…" 14 minutes ago Up 14 minutes 6379/tcpcvat_redis58e7d5a78f0c postgres:10-alpine "docker-entrypoint.s…" 14 minutes ago Up 14 minutes 5432/tcpcvat_dba5fb6ffbdba4 traefik:v2.4 "/entrypoint.sh --pr…" 14 minutes ago Up 14 minutes 0.0.0.0:8080->8080/tcp, 80/tcp, 0.0.0.0:8090->8090/tcp traefikd7f461aa856b openpolicyagent/opa:0.34.2-rootless "/opa run --server -…" 14 minutes ago Up 14 minutes 0.0.0.0:8181->8181/tcpcvat_opa相关的镜像:openvino/cvat_ui latest 69a6a5d6e84a 4 months ago 50.4MBopenvino/cvat_server latest 041f75bb1d7e 4 months ago 5.95GBraefikv2.4 de1a7c9d5d63 12 months ago 92MBredis 4.0-alpine e3dd0e49bca5 2 years ago 20.4MBpostgres 10-alpine 8471b2130db7 2 days ago79.2MBopenpolicyagent/opa 0.34.2-rootless f85ee8a15a91 9 months ago 71.9MB
依赖了 redis,postgres openpolicyagent/opa (这个不知道是啥)
最重要的就是后端服务:openvino/cvat_server 差不多 6G。
里面使用的是 django 做后台服务,组织成的代码。
$ ps -efUID PID PPID C STIME TTY TIME CMDdjango1 0 0 02:30 ? 00:00:05 /usr/bin/python3 /usr/bin/supervisorddjango 10 1 0 02:30 ? 00:00:00 /usr/bin/ssh-agent -d -a /tmp/ssh-agent.sockdjango 12 1 2 02:30 ? 00:02:36 python3 /home/django/manage.py update_git_statesdjango 13 1 0 02:30 ? 00:00:00 python3 /opt/venv/bin/rqscheduler --host cvat_redis -i 30django 14 1 2 02:30 ? 00:02:36 python3 /home/django/manage.py rqworker -v 3 defaultdjango 15 1 2 02:30 ? 00:02:36 python3 /home/django/manage.py rqworker -v 3 defaultdjango 16 1 2 02:30 ? 00:02:36 python3 /home/django/manage.py rqworker -v 3 lowdjango 19 1 0 02:30 ? 00:00:08 apache2 (mod_wsgi-express) -f /tmp/cvat-server/httpd.conf -DMOD_WSGI_MPM_ENABLE_EVENT_MODdjango 336 19 2 02:30 ? 00:02:28 (wsgi:localhost:8080:1000) -f /tmp/cvat-server/httpd.conf -DMOD_WSGI_MPM_ENABLE_EVENT_MODdjango 337 19 0 02:30 ? 00:00:00 apache2 (mod_wsgi-express) -f /tmp/cvat-server/httpd.conf -DMOD_WSGI_MPM_ENABLE_EVENT_MODdjango 374 19 0 02:42 ? 00:00:00 apache2 (mod_wsgi-express) -f /tmp/cvat-server/httpd.conf -DMOD_WSGI_MPM_ENABLE_EVENT_MODdjango 410 0 0 02:47 pts/0 00:00:00 bashdjango 538 410 0 04:28 pts/0 00:00:00 ps -ef
使用了 supervisord 管理服务,运行 python3 环境,还使用了 apache2 做web服务,比较老的服务了。
项目主目录在 /home/django , 配置了7 个服务。
[unix_http_server]file = /tmp/supervisord/supervisor.sock[supervisorctl]serverurl = unix:///tmp/supervisord/supervisor.sock[rpcinterface:supervisor]supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface[supervisord]nodaemon=truelogfile=%(ENV_HOME)s/logs/supervisord.log ; supervisord log filelogfile_maxbytes=50MB; maximum size of logfile before rotationlogfile_backups=10 ; number of backed up logfilesloglevel=debug; info, debug, warn, tracepidfile=/tmp/supervisord/supervisord.pid ; pidfile locationchildlogdir=%(ENV_HOME)s/logs/ ; where child log files will live[program:ssh-agent]command=bash -c "rm /tmp/ssh-agent.sock -f && /usr/bin/ssh-agent -d -a /tmp/ssh-agent.sock"priority=1autorestart=true[program:rqworker_default]command=%(ENV_HOME)s/wait-for-it.sh %(ENV_CVAT_REDIS_HOST)s:6379 -t 0 -- bash -ic \ "exec python3 %(ENV_HOME)s/manage.py rqworker -v 3 default"environment=SSH_AUTH_SOCK="/tmp/ssh-agent.sock"numprocs=2process_name=rqworker_default_%(process_num)s[program:rqworker_low]command=%(ENV_HOME)s/wait-for-it.sh %(ENV_CVAT_REDIS_HOST)s:6379 -t 0 -- bash -ic \ "exec python3 %(ENV_HOME)s/manage.py rqworker -v 3 low"environment=SSH_AUTH_SOCK="/tmp/ssh-agent.sock"numprocs=1[program:git_status_updater]command=%(ENV_HOME)s/wait-for-it.sh %(ENV_CVAT_REDIS_HOST)s:6379 -t 0 -- bash -ic \ "python3 ~/manage.py update_git_states"environment=SSH_AUTH_SOCK="/tmp/ssh-agent.sock"numprocs=1[program:rqscheduler]command=%(ENV_HOME)s/wait-for-it.sh %(ENV_CVAT_REDIS_HOST)s:6379 -t 0 -- bash -ic \ "python3 /opt/venv/bin/rqscheduler --host %(ENV_CVAT_REDIS_HOST)s -i 30"environment=SSH_AUTH_SOCK="/tmp/ssh-agent.sock"numprocs=1[program:clamav_update]command=bash -c "if [ \"${CLAM_AV}\" = 'yes' ]; then /usr/bin/freshclam -d \ -l %(ENV_HOME)s/logs/freshclam.log --foreground=true; fi"numprocs=1[program:runserver]; Here need to run a couple of commands to initialize DB and copy static files.; We cannot initialize DB on build because the DB should be online. Also some; apps are dynamically loaded by an environment variable. It can lead to issues; with docker cache. Thus it is necessary to run collectstatic here for such; apps.command=%(ENV_HOME)s/wait-for-it.sh %(ENV_CVAT_POSTGRES_HOST)s:5432 -t 0 -- bash -ic \ "rm -f /tmp/cvat-server/httpd.pid && python3 ~/manage.py migrate && \ python3 ~/manage.py collectstatic --no-input && \ exec python3 $HOME/manage.py runmodwsgi --log-to-terminal --port 8080 \ --limit-request-body 1073741824 --log-level INFO --include-file ~/mod_wsgi.conf \ %(ENV_DJANGO_MODWSGI_EXTRA_ARGS)s --locale %(ENV_LC_ALL)s \ --server-root /tmp/cvat-server"environment=SSH_AUTH_SOCK="/tmp/ssh-agent.sock"
项目前端代码:
https://github.com/openvinotoolkit/cvat/blob/develop/cvat-ui/package.json
使用ant-design + react 进行开发的。
后端lib库:
3,总结
https://openvinotoolkit.github.io/cvat/docs/getting_started/
CVAT 全称 Computer Vision Annotation Tool,是用于计算机视觉的免费、在线、交互式视频和图像注释工具。
也可以使用docker-compose 进行本地部署。部署在内网环境中,支持多人协同工作,而且还可以分配权限,进行各种学习使用。非常方便,用到了redis,postgres 存储数据,可以支持图片标准,还可以进行3D数据的标注,非常方便,项目也是MIT 开源协议的,前端使用ant-design + react 进行开发的,后端是 python3 django 开发的管理端。默认启动起来就可以直接使用。也可以自己修改代码进行二次开发。
本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/108971807
博主地址是:https://blog.csdn.net/freewebsys