NAS部署AI视频卫士,压榨NAS的最后一滴性能,NAS性能检测镜像

熊猫不是猫猫 2024-11-04 17:49:17

「大家好,我是熊猫,你的NAS领航员。NAS不只是存储那么简单,数码也可以是生活,关注我,给你的生活加点'技'趣!」

引言

今天要介绍的容器项目大有来头,他可以对接支持onvif协议的摄像头,或者支持RTSP流的网络摄像头,而单纯的对接肯定没意思,毕竟各大NAS厂商自己就有视频监控工具。但它内置了很多大模型,通过内置的这些大模型,能实现对视频流的AI分析,从而实现告警的作用,这一切都在你NAS本地上执行,所以这个容器项目我也愿称之为NAS性能杀手,今天咱们要介绍的便是「思通数科——AI视频卫士」。

项目官网

项目介绍

首先还是简单介绍一下,AI视频卫士是一个多功能AI实时监控系统,支持多种设备混合接入,包括:无人机、行车记录仪,收银机、监控摄像头、Pad、手机和电脑摄像头。系统具备高度灵活性,能够针对监控目标和范围提供实时预警。此外,系统内置低代码算法模型快速训练平台(付费版),简化了算法开发流程。用户还可以便捷地通过文字或图像搜索监控录像中的人脸、物体、标牌、车牌和语音对话。

在开源版本中,作者提供了20种免费模型供我们使用,例如配戴安全帽、人体跌倒识别、电动车监测、大货车监测、房门关开监测、灭火器正常、地面积水、口罩识别、安全手套识别、玩手机识别、睡觉识别、吸烟监测、非机动车识别、表情识别、占道经营识别、智能电网守卫、宠物牵绳识别、轮椅识别、婴儿车识别、交通事故识别。

以下是坐着给到的项目特性:

视频直播画面:系统首页展示当前监控摄像头下的实时监测画面,用户可以点击全屏查看。监控画面切换:用户可以通过下拉框选择不同摄像头和分组,查看不同监控画面。实时数据展示:首页左侧栏展示最新的实时预警数据,用户可以点击查看详情。摄像头点位统计:管理员可以看到摄像头的生效、失效状态和总数。预警统计与走势:展示监控场景中预警次数最多的情况,以及不同时间范围内的预警类型统计。添加监测任务:允许用户添加多个参数,并将任务分配给单个或多个摄像头。任务状态管理:用户可以对监控任务进行开启、停止或定时监控等操作。事件列表:展示最新的报警信息,支持分类、分组和分时间段检索。停用与更新:允许用户停止当前算法并提醒相关监测任务,联网时自动检测更新。检索视频:通过关键词、摄像头点位、时间范围检索视频内容。部署

项目的部署稍微有点麻烦,不过聪明的你们应该能一看就会,毕竟虽然麻烦,都步骤都并不难。首先,我们需要准备好六个镜像,分别是redis、rabbitmq、mysql、minio、elasticsearch以及ai_video镜像。六个镜像加起来总体积达到了接近10GB,非常离谱。

容器项目

不过作者非常贴心的给到了五个本地镜像包,并上传到了百度网盘供大家使用,这一点还是非常贴心的,这里熊猫也贴上地址,将其中的文件全部下载放到NAS中即可。网盘链接:https://pan.baidu.com/s/14tgK26G3bxibjhsT5jG25A提取码:kglr。

镜像下载

这时候有小聪明就会问了,那还有一个镜像。很抱歉,剩下的一个镜像还是需要我们自行下载,且它也是体积最大的那个,不过好在作者又贴心的给我们加了加速地址,所以下载速度其实非常不错。这里贴一个docker pull命令:docker pull crpi-q4f4vwdmprv5egrk.cn-hangzhou.personal.cr.aliyuncs.com/yssanyue/ai_video:v1.4

镜像

镜像下载之后,我们还需要给镜像起一个别名,这时候就需要用到SSH端口了。打开NAS的SSH端口,用工具连接上NAS之后,咱们输入sudo -i获取root权限,随后输入命令docker tag crpi-q4f4vwdmprv5egrk.cn-hangzhou.personal.cr.aliyuncs.com/yssanyue/ai_video:v1.4 ai_video:v1.4将刚刚下载的镜像改名为「ai_video」

镜像改名

熊猫今天用到的为绿联的DXP4800,多次更新之后绿联的UGOS Pro系统越来越好用了,且目前支持Docker-compose堆栈的方式来创建容器项目,加上N100的性能也还不错,所以今天就用到了绿联。这里咱们打开Docker,来到项目界面。

项目

可以看到熊猫是已经启动了容器项目了,在创建yml文件之前,我们需要准备一些文件以及文件夹,其中文件需要到作者给到的地址去下载,这里贴一个地址。我们需要下载volumes.zip中的文件,并将其解压之后提取其中的nginx.conf、application.yml以及config.yaml三个文件。https://gitee.com/stonedtx/stonedtaiv/tree/master/docker

随后在NAS中新建这样的目录树,将刚刚下载的三个文件放到config文件夹中。

目录树

这时候创建docker-compose.yml文件,文件内容如下,映射路径和端口记得根据自身NAS设备进行更改。

services:  mysql:    container_name: mysql    image: mysql:8.0.38    ports:      - "3307:3306"    environment:      MYSQL_ROOT_PASSWORD: config5566      MYSQL_DATABASE: yys_aivideo      MYSQL_USER: user      MYSQL_PASSWORD: config5566    volumes:      -  /volume1/docker/aivideo/mysql-data:/var/lib/mysql    healthcheck:      test: ["CMD-SHELL", "mysqladmin ping -h localhost -u root -pconfig5566"]      interval: 30s      timeout: 10s      retries: 5    networks:      - videonetworks    redis:    container_name: redis    image: redis:7.2    ports:      - "6381:6379"    volumes:      -  /volume1/docker/aivideo/redis-data:/data    healthcheck:      test: ["CMD", "redis-cli", "ping"]      interval: 30s      timeout: 10s      retries: 3    networks:      - videonetworks    es:    container_name: es    image: elasticsearch:8.14.3    environment:      - cluster.name=docker-cluster      - bootstrap.memory_lock=true      - "ES_JAVA_OPTS=-Xms2g -Xmx2g"      - xpack.security.enabled=false      - discovery.type=single-node    ports:      - "9222:9200"      - "9333:9300"    healthcheck:      test: ["CMD-SHELL", "curl -f http://localhost:9200/_cluster/health || exit 1"]      interval: 30s      timeout: 10s      retries: 3    networks:      - videonetworks    minio:    container_name: minio    image: minio/minio:latest    ports:      - "9005:9000"      - "9010:9001"    environment:      MINIO_ACCESS_KEY: admin      MINIO_SECRET_KEY: admin123    command: server /data --console-address ":9001"    healthcheck:      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]      interval: 30s      timeout: 10s      retries: 3    volumes:      -  /volume1/docker/aivideo/minio-data:/data    networks:      - videonetworks    rabbitmq:    container_name: rabbitmq    image: rabbitmq:4.0    ports:      - "15673:15672"  # 映射 RabbitMQ 管理界面      - "5673:5672"    # 映射 RabbitMQ 消息队列    environment:      RABBITMQ_DEFAULT_USER: admin      RABBITMQ_DEFAULT_PASS: admin123    command: >      bash -c "rabbitmq-plugins enable rabbitmq_management && rabbitmq-server"    healthcheck:      test: ["CMD-SHELL", "rabbitmq-diagnostics -q ping"]      interval: 30s      timeout: 10s      retries: 3    volumes:      -  /volume1/docker/aivideo/rabbitmq-data:/var/lib/rabbitmq    networks:      - videonetworks    app:    container_name: app    image: ai_video:v1.4    ports:      - "35310:35300"      volumes:      -  /volume1/docker/aivideo/config/nginx.conf:/etc/nginx/nginx.conf      -  /volume1/docker/aivideo/config/application.yml:/opt/aivideo/java-service/application.yml      -  /volume1/docker/aivideo/config/config.yaml:/opt/aivideo/python-service/config/config.yaml      # links:    #   - mysql:mysql    #   - redis:redis    #   - es:es    #   - minio:minio    #   - rabbitmq:rabbitmq    networks:      - videonetworks    depends_on:      - mysql      - redis      - es      - minio      - rabbitmq  networks:  videonetworks:    driver: bridge

创建好之后如果你的NAS支持docker-compose堆栈,那直接将文件或者代码丢进去就可以了,如果不支持,也可以通过创建yml文件,再SSH的方式获取root之后再输入docker-compose up -d的命令来启动项目。

堆栈容器

成功启动之后会拉起六个容器,如果其中app容器日志出现这样的内容,就代表项目启动成功了。

日志

这时候我们输入NASip:35310/vis/就可以进入登录界面了,默认账号为admin,密码为Stonedt,123。

登录界面

体验

熊猫这里已经将我家里的监控加到了里面,所以在数据看板这里能看到摄像头数量1,同时右边能看到该摄像头的实时监控画面。

数据看板

功能很好理解,首先来到视频接入这里添加摄像头或者网络摄像头。现在左边的设备列表这里添加分组,建好分组之后可以直接点击右边方框中的+号添加设备。

设置分组

这里熊猫先将添加的摄像头删除,在设备支持上,首先你要知道你的设备是否支持RTSP流视频(onvif协议都支持),如果不支持那就不能添加。如果直接,咱们直接输入摄像头的RTSP流地址,点击测试,有画面就可以直接提交。

添加设备

这时候咱们就完成摄像头添加了,如何实现AI检测呢?切换到检测任务这一栏,选择右边的添加任务,输入任务名称、设置优先级、选择监控点以及监控场景(一次只能选择三个模型),最后选择检测日期和实时监控,状态选择启动就可以了。

AI检测

任务的检测会一直进行,这时候你就会看到你的NAS开始高强度负载了,熊猫这里加了六个模型,N100直接干到了99%的占用,8G的内存也基本告急。

负载

理论上如果你的NAS足够强,那么可以添加足够多的模型进去。不过N100应该不行,所以熊猫也就没有过多尝试了。不过AI检测实测在较为清晰和近距离的情况下的确可用,如果检测目标太远或者很糊,那么依然检测不到。

总结

很牛的项目,最牛的还是作者,完成度如此之高的项目居然选择了开源,虽说作者是靠卖模型盈利,不过实际感觉个人或者店面使用,免费的模型也足够用了。给作者点赞!!!

以上便是本期的全部内容了,如果你觉得还算有趣或者对你有所帮助,不妨点赞收藏,最后也希望能得到你的关注,咱们下期见!
0 阅读:0

熊猫不是猫猫

简介:一个科技区不正经的自媒体