- 博客(95)
- 资源 (1)
- 收藏
- 关注
原创 实现自己的AI视频监控系统-序章
本文介绍了如何从零开始实现一个AI视频监控系统。文章首先概述了传统视频监控系统的基本架构及其面临的挑战,包括海量数据处理、网络带宽压力和人工监控效率低下等问题。随后重点阐述了AI技术如何赋能视频监控系统,通过引入智能分析层实现目标检测、行为识别和实时预警等功能。文章详细规划了课程学习路径,分为视频流处理、AI智能分析和智能告警三大阶段,涵盖RTSP流获取、多路视频解码、目标追踪、行为识别等核心技术。最后提供了学习所需的硬件平台建议,并预告了下期内容将聚焦网络摄像机画面获取的相关技术。
2025-08-18 23:49:45
805
原创 实现自己的AI视频监控系统-第五章-附录与补充-硬解码
本小节针对视频解码的内容进行丰富和补充,先前我们的AI视频监控系统基于软解码实现基本的应用,在介绍的时候我们也明确的表面,软解码会极大占用cpu资源,而采用硬件设备的视频处理模块可以显著提升系统性能与效率。我们将采用pyav实现视频的拉流和拆包,并基于nvidia的视频编解码模块对视频流解码并实现最终的显示。是 NVIDIA 基于 Python 的视频编解码库,提供简单而强大的 Python API,用于在 NVIDIA GPU 上进行硬件加速的视频编码和解码,是 VPF的继任者。
2025-10-05 00:11:52
1096
原创 实现自己的AI视频监控系统-第四章-基于langchain的AI大模型与智能体应用2
在上一小节,我们简单介绍了langchain的使用方式,包括模型调用、工具调用、智能体功能以及上下文记忆。本小节我们将深入系统直接进行需求的分析的和智能体的搭载。以上,我们已经实现了一个基本的AI大模型助手,具备上文理解、记忆以及工具的调用能力,至此,我们实现了完整的技术栈和技术路线,希望大家伙可以通过本书实现对新技术的理解,同时可以很好的契合已有技术,实现行业和技术的发展。
2025-09-08 20:33:49
1109
原创 实现自己的AI视频监控系统-第四章-基于langchain的AI大模型与智能体应用1
在前面内容的实践下,我们实现了一个基础的AI视频监控系统,包括视频流的管理、视频的AI分析以及分析画面的推送与展示,在大模型技术快速发展的阶段,新的技术以其超强的能力给传统的视频分析系统注入了新的活力,本章节我们将基于langchain框架(一个大模型智能体应用框架),实现对AI视频分析系统的大模型赋能。LangChain是一个用于开发由大语言模型驱动的应用程序的框架。
2025-09-07 20:37:49
1018
原创 实现自己的AI视频监控系统-第三章-信息的推送与共享4
上一小节,我们借助gstreamer实现了分析画面的展示,本小节将基于分析流推流,合并到我们的AI视频监控系统上,具体参考项目RTSP推流管道 (RTSPPushPipeline)- 负责将处理后的视频帧推送到RTSP服务器视频流解码器 (VideoStreamDecoder)- 解码输入视频流TensorRT模型推理 (TrtModel)- 使用TensorRT加速的AI模型推理流管理器 (StreamManager)- 管理多个视频流模型管理器 (ModelManager)
2025-09-04 22:12:31
706
原创 实现自己的AI视频监控系统-第三章-信息的推送与共享3(重点)
在上两个小节,我们简单的介绍了报警信息推送的几种方式,包括基于HTTP的请求,基于socket的自定义消息,以及基于工业设备的MODBUS通信,这些机制使得我们的AI视频监控系统具备了强大的生态融合能力。不过需要注意的是,我们虽然具备了基本消息(如报警情况、设备运行状态等)的共享能力,但是缺少了直观的画面共享能力,即我们的AI分析结果没有做到很好的可视化展示,缺乏远程观察AI分析画面的能力。本小节,我们将基于这一问题进行深入,详细介绍一下基于gstreamer的分析画面推送。
2025-09-02 21:22:29
969
原创 实现自己的AI视频监控系统-第三章-信息的推送与共享2
上一小节,我们简要介绍了基本的通信手段以实现数据推送与共享的方式,本小节将基于使用场景和使用环境,实现稳定、可靠的数据传输。基于HTTP的GET和POST方法是推送报警数据的常用手段之一,通常用于系统与服务器之间、或不同服务之间的轻量级数据交互。二者在语义、使用方式和适用场景上具有明显区别,合理选择方法对保证数据传输的可靠性和系统的性能具有重要意义。GET方法主要用于从服务器获取资源,其设计初衷是幂等且安全的操作,即多次重复调用不应产生副作用。在报警数据推送中,GET方法可适用于以下场景:查询报警状态:定期
2025-09-01 21:34:07
545
原创 实现自己的AI视频监控系统-第三章-信息的推送与共享1
经过了第一章多路视频展示系统设计和第二章AI分析模块的嵌入,我们设计的AI视频监控系统已经具备了基本的框架和雏形,具备基本的视频展示和AI分析功能,但是该系统仅有内部信息的流转,缺少有效的社会或生产价值,因为我们并没有有效的利用AI视频分析系统有效的分析结果,如将报警信息推送至信息汇总中心,及时消除报警威胁,或是将AI视频监控系统信息数据推送至数据分析中心,依靠大数据技术和数据分析算法有效提高信息的利用效率。所以在本章节我们需要完善AI视频监控系统的信息共享功能。
2025-08-31 21:10:14
888
原创 实现自己的AI视频监控系统-第二章-AI分析模块5(重点)
在上一小节,我们实现了基于TenosRT的推理加速,在本小节,我们将汇总第一章节的视频展示系统,实现8路视频满帧分析,并封装为完整的工程化代码。具体参考代码git仓库。我们已经完成了一个监控系统应有的部分,包括视频流的管理、基本的AI视频分析功能。但是随着生产需要和新技术的迭代,现有的系统仍需在智能化、实时性、扩展性以及多模态数据分析等方面进行深化和拓展。算法模型优化与迭代引入大模型,提升系统平台的生命力。支持多模态分析(如视频、音频、传感器数据融合),增强复杂场景下的检测与识别能力。
2025-08-29 23:34:39
874
1
原创 实现自己的AI视频监控系统-第二章-AI分析模块4
上一章节我们对比onnxruntime、tensorrt、pytorch推理的对比,tensorrt以及其优越的性能展现了推理部署的优势。本小节我将深入探索更高效的模型部署方式,并以最直观的方式将结果呈现出来。量化方式所需数据流程复杂度精度保持典型应用训练后量化(PTQ)少量无标签校准数据低一般CNN分类模型量化感知训练(QAT)带标签训练数据高优秀高精度要求场景、复杂模型首先尝试PTQ,如果精度损失在可接受范围内,则直接使用;
2025-08-28 23:56:49
537
原创 实现自己的AI视频监控系统-第二章-AI分析模块3(核心)
在上一小节,我们实现了yolo11n模型在onnxruntime GPU版本的推理。onnxruntime提供了丰富的推理后端,可以在多种设备和类型上进行模型的快速部署,但是其核心推理表现并不优秀。本章节我们将基于专业的计算设备和推理工具进一步提高模型分析的帧率和性能。ONNX Runtime 作为一个通用的推理引擎,其优势在于兼容性,它能够运行来自不同训练框架(PyTorch, TensorFlow等)转换而来的 ONNX 模型。
2025-08-27 21:36:27
879
原创 实现自己的AI视频监控系统-第二章-AI分析模块2
分析帧率并不高基于ultralytics的yolo推理需要注意线程安全问题python GIL锁导致整体运行效率并不高基于以上三点问题,python自身线程锁的问题并不在本章的讨论范围之内,我们更聚焦于多平台、多工具推理,依托硬件设备和模型优化实现AI模型的高性能推理。
2025-08-25 21:40:09
1241
原创 实现自己的AI视频监控系统-第二章-AI分析模块 1
在上一章节我们实现了多路rtsp视频的拉流和解码,并提供了动态的接口形式实现开启和暂停,在本章节,我们将开始AI分析模块的设计,实现真正智能的监控系统。本章节包括但不限于以下内容:常见视觉算法简介、基本视觉算法的实现、多平台模型推理测试、算法的量化加速、多线程多提高分析并发、AI分析模块的代码设计。本章节是重点内容,有疑问或者想了解的请在评论区留言,综合考虑后会动态添加新的内容。计算机视觉作为人工智能领域的重要分支,致力于让计算机能够像人类一样"看懂"图像和视频。随着深度学习技术的快速发展,视觉算法在近年来
2025-08-24 13:25:42
885
原创 实现自己的AI视频监控系统-第一章-视频拉流与解码4(重点)
使用本章节代码请引用此CSDN链接,尊重知识、尊重他人劳动。这一小节将正式进入代码实现部分。我们会结合实际业务需要和拉流解码流程实现一个灵活、轻便、易用的视频拉流解码模块,支持多路视频拉流解码且可以动态更新更新内部参数。在开始设计之初,我们首先考虑的是使用大家所熟知的 **OpenCV(cv2.VideoCapture)**来实现拉流和解码功能。它的 API 简单直接,几行代码就能实现从网络流中读取帧,对于快速原型验证来说非常方便。然而,在经过深入的调研和测试后,我们发现 OpenCV 在处理多路视频流、追
2025-08-22 23:09:26
2102
1
原创 实现自己的AI视频监控系统-第一章-视频拉流与解码3
写在最前面:这一小节是我非常不想写的一小节,一方面是因为编码解码是特别特别复杂的事情,另外一方面,这一小节也并不是实现AI视频监控系统的核心部分,我们可以选择合适的组件实现相应的功能。但是,有开始便有结束,我希望构建一个完整的工程体系,面临问题时,大家伙可以从这一部分获得相应的启发。以下是真正的前言部分:大家好,上一节我们详细介绍了拉流的完整过程,今天将简要介绍解码和编码的内容。这块内容涉及的知识点很多,包括:帧内预测、帧间预测、运动估计、DCT变换、量化、熵编码等核心技术。
2025-08-21 20:05:20
851
原创 实现自己的AI视频监控系统-第一章-视频拉流与解码2
在上一小节的内容中,我们简要介绍了拉流和解码两个基本过程,拉流即建立与网络摄像仪的通讯,获取实时传输的数据,解码则是将传递的数据恢复成人眼观察到的彩色图像,本小节将深入拉流模块,介绍完整的拉流过程。在开始之前,本节将分享常用的抓包工具wiresharker。在上一章中,我们概述了拉流是一次以RTSP协议为核心的网络会话。本章将深入这个会话的每一个细节,剖析数据包的流转,并探讨其中的关键技术与挑战。RTSP 协议通常运行在 TCP 上(默认端口554),确保了控制命令的可靠传输。让我们逐一分解每个步骤的请求与
2025-08-20 20:57:06
1151
原创 实现自己的AI视频监控系统-第一章-视频拉流与解码1
从本章节开始,正式进入我们的视频监控系统的设计。按照一般的逻辑思维出发,视频监控系统需要包括输入信息处理模块以及输出信息三个部分,其中输入信息则是整个系统的开端,即网络摄像仪(IPC)实时采集的画面。一般情况下,我们可以直接通过协议从相机直接获取画面数据,但是网络相机一般会设置同时最大访问用户数(通常为5个),这就导致在复杂的系统环境中会采用硬盘录像机或流媒体。
2025-08-19 20:52:26
1207
1
原创 知识回顾:Pytorch实现Least Squares GAN
相比于CNN,RNN等网络,GAN最难理解的点是其损失函数的含义以及定义,由于GAN由鉴别器和生成器两部分组成,在实现的时候我们需要定义两个损失:鉴别器损失生成器损失对于鉴别器D,我们要遵循一个思路便是真的为真,假的为假,要有强大的鉴别能力。对于生成器G我们需要让假的为真,实现浑水摸鱼和投机倒把。这里不在进行数学知识的展示,有兴趣的小伙伴可以参考以下两个链接。Least Squares GAN生成对抗网络损失函数的理解在开始之前有如下基本规则:对于M*N的矩阵,M代表样本数,N代表每个
2021-03-15 22:15:46
571
原创 C++入门:三小时看完最基础语句,手动写一个满是BUG的管理系统
因为下学期有门课需要使用C++,万般无奈开始了基础的学习,本篇文章主要记录自己的学习经历与心得,文末会附上.cpp文件。
2021-02-10 19:00:21
303
原创 校园网连接问题-----本机DNS域名访问出现错误
关于DNS域名解析全过程1关于DNS域名解析全过程2今日在教学楼使用刚申请的校园网进行入网操作,发现网络连接成功但是本机DNS出现问题。错误原因:将自己的DNS地址固定为一些免费的、速度比较快的DNS,比如:114.114.114.114(或者114.114.115.115)等。导致无法匹配DNS的域名地址,最终导致了网络上下行链路已经连接,但是无法访问网络数据。明确问题出现在本机的DNS,所以我们首先来查看本机的DNS Client是否打开。本机搜索 运行(快捷键windows键+R键),
2020-09-16 11:34:50
13339
6
原创 使用SQL语句对excel表格进行特定数据的获取
背景:今天接到一个有关江苏省企业信息汇总的excel文件,大小约为48M,包含了三张表,总数据量约为48万条。按照要求需要筛选出地址为徐州市的企业。分析:此excel文件没有设置字段,也没有进行相应的排序,各个市的信息是无序排列的,索引值仅告知我们企业的总数。由于对excel表格并不熟悉,且将48w条数据写入数据库在进行操作并导出会很麻烦,所以我首先想到的是使用SQL语句对excel文件进行查询。工具:excel表格2016版本具体做法:对原始数据进行一定处理,将所需表名以及字段名更换成英文,虽
2020-08-17 14:02:14
7151
1
原创 MySQL常用操作__触发器
触发器是一种特殊的存储过程,再插入,删除或修改表格时触发他比数据库本身的标准功能有更精细和更复杂的数据控制能力监视事件update,delete,insert出发时间before,after触发事件update,delete,insert创建在对sh表插入后对slh表进行插入CREATE TRIGGER tr_1 AFTER INSERTON sh FOR EACH ROWBEGIN INSERT slh(LEVEL) VALUES(123);END;$;mysql>
2020-08-04 09:07:59
190
原创 MySQL_函数的创建以及使用
查看是否开启了创建函数的功能SHOW VARIABLES LIKE '%fun%';如果为off需要开启SET GLOBAL log_bin_trust_function_creators=1;创建函数-- RETURNSCREATE FUNCTION fun_add(a INT,b INT)RETURNS INTBEGIN RETURN a+b;END;$;调用函数SELECT fun_add(3,4);查看函数show create function fun_add;删除
2020-08-03 08:50:09
228
原创 MySQL常用操作(正则表达式)---DAY_6
-- regular expression-- REGEXP-- ^ 匹配字符开始的部分SELECT * FROM cms_user WHERE username REGEXP '^k';-- $ 匹配结尾部分SELECT * FROM cms_user WHERE username REGEXP 'g$';-- . 代表任意一个字符,包括回车与换行SELECT * FROM cms_user WHERE username REGEXP 'kin.';S
2020-07-26 08:47:03
151
原创 MySQL常用操作(查询操作1)--DAY_5
为了方便,所有注释我均用英文代替其中 index代表字段,如cms数据库内,命名为cms_user的数据表包含字段(index)sex-- use self-database cms-- select index from table_nameSELECT id,username FROM cms_admin;SELECT id,username,role FROM cms_admin;-- select * from database_name.table_nameSELECT use
2020-07-23 09:06:32
150
原创 MySQL常用操作(table相关操作)---DAY_3
更改表名字ALTER TABLE user6 RENAME TO one;ALTER TABLE user5 RENAME TO ones;rename TABLE user4 TO two;增加与删除字段CREATE TABLE IF NOT EXISTS list1(id SMALLINT UNSIGNED key auto_increment,username VARCHAR(20) UNIQUE NOT NULL,password CHAR(32) NOT NULL,email
2020-07-21 08:49:00
216
原创 MySQL常用操作(完整性约束条件)---DAY_2
自增长AUTO_INCREMENTUSE wxj1;CREATE TABLE IF NOT EXISTS user3(id SMALLINT key AUTO_INCREMENT,username VARCHAR(20));INSERT user3 VALUES(1,'king');INSERT user3(username) VALUES('kings');INSERT user3 VALUES(NULL,'kingsS');INSERT user3 VALUES(DEFAULT,'ki
2020-07-20 08:24:21
167
原创 MySQL常用操作(表的创建以及属性设置)--DAY_1
书写格式:使用sql指令需要大写,调用文件,单元等需要小写登录与过程记录#我们在安装配置好环境,设置数据库的名字和登录密码后便可进行操作#打开电脑cmd命令栏mysql -uroot -p123456#-u后面为我们设置的用户名,-p后面是我们设置的密码#由于安全等问题,可使用mysql -uroot -p#在输入自己的密码(次处123456)进行登录,屏幕对密码字段进行掩盖#有时候我们为了记录整个cmd的指令以及系统反馈,可在登录之后进行操作\T D:\MyProjects\pract
2020-07-19 18:57:58
424
原创 Pytorch__序列编码
为了给RNN与LSTM打基础,需要了解关于时间序列的相关知识,我们在对输入的数据进行维度编码时候,pytorch提供了word2vec和GloVe的编码库,但是我们还是需要手动写一段代码来理解时间序列编码的过程。import torchword_to_ix={'hello':0,'world':1}#给我们的语言序列加上labellookup_tensor=torch.tensor([word_to_ix['hello']],dtype=torch.long)#选出索引名为'hello'的序列字段
2020-07-09 18:02:31
392
原创 pytorch简单实例1---线性回归实例
在接触pytorch中CNN的全连接层,卷积层,池化层的创建后,我们便可以使用特定的梯度下降算法,以及特定的损失函数来做简单的线性回归了。1.离散点的建立因为是做线性回归,所以我们需要人为臆造一些符合某种线性关系的数据点x_train = np.array([[.3], [1.2], [1.3], [2.], [3.2], [3.7], [4.], [4.9], [5.5], [6.], [6.7]], dtype=np.float32)y_train = np.array([[.3], [1.],
2020-06-28 00:45:47
913
原创 基于GAN的无线通信与网络应用设计----通信信号的特征提取
由于人工智能的发展,各大高校也逐渐加大研究力度。本文源自于个人的本科毕业设计,课题由学校老师分配,设计内容源自于个人。由于个人知识储备以及能力有限,有不足之处我会及时修改。1.GAN在通信领域的训练分析训练数据集的由来对于网络传输,最常用的报文有TCP和UDP两种形式,Jeffrey Erman[1]等人在2007年发表的一篇名为基于半监督学习的实时/离线流量区分的文章,已经详述通过聚类等算法实现了流量的区分,而且实验结果特别理想,这就为我的本篇文章的数据来源提供了理论的可行性,由于机器的训练过程
2020-06-21 23:51:39
4715
5
原创 pytorch---张量(tensor)的基本操作
本文列举的tensor的基本操作,包括创建,维数变换,数学运算等,对于较复杂的操作已经添加注释。#!usr/bin/env python# -*- coding:utf-8 _*-"""@author: 1234@file: GPU_grad.py@time: 2020/06/16@desc: 格式化代码 :Ctrl + Alt + L 运行代码 : Ctrl + Shift + F10 注释代码/取消注释 : Ctrl + /"""import torchimp
2020-06-21 22:57:35
1535
原创 小波变换------多尺度空间能量分布特征提取方法
用小波技术可以把信号在各频率波段中的特征提取出来,基于小波变换的多尺度空间能量分布特征提取方法是对信号进行频段分析,再分别以计算所得的各个频带的能量作为特征向量:信号f(t)的二进小波分解可表示为: f(t)=A^j + ΣD^j 其中A^j 表示近似信号为信号的低频部分,D^j为细节信号,为高频部分则信号的总能量为: E= EA^j + ΣED^j 选择第j层的近似信号和各
2020-06-03 22:02:27
5847
原创 sklearn数据的降维
本文主要记录使用sklearn库对数据集进行降维等相关操作,通过了解相关知识,运行已有的代码来进行新内容的学习降维这里指降低特征的数量sklearn的特征选择API1.filter过滤式 : variancethresholdfrom sklearn.feature_selection import VarianceThresholddef var(): var = VarianceThreshold(threshold=1.0) data = var.fit_tr
2020-06-02 13:25:25
849
原创 sklearn数据集特征提取操作
本文主要记录使用sklearn库对数据集进行变换的相关操作,通过了解相关知识,运行已有的代码来进行新内容的学习pipelinepipeline主要用于连接多个estimators使之成为一个estimator,方便我们的构建更复杂的模型。一般数据处理的流程如下:feature selection–normalization–classification除了最后的classification可以是任意类型(聚类器,分类器等)外,其余各部分必须是变换器transformer,即必须有transfo
2020-05-28 09:00:01
1558
原创 sklearn分类器评估指标(精确率,混淆矩阵,precious-recall-Fmeasur,ROC曲线,损失函数)
精确率accuracy_score函数计算分类准确率:返回被正确分类的样本比例或者数量当多标签分类任务中,该函数返回子集的准确率,对于给定的样本,如果预测得到的标签集合与该样本真正的标签集合吻合,那么subset accuracy=1否则为零import numpy as npfrom sklearn.metrics import accuracy_scorey_pred=[0,2,1...
2020-04-14 12:38:29
2765
原创 sklearn--分类器评估指标综述
sklearn.metric中性能的度量函数大体有四种分类器性能指标回归其性能指标聚类器性能指标两两距离测度1.分类器性能指标分类器的性能指标有很多,最常用的是三种精度-召回率-F度量(precision-recall-F_measure)损失函数(loss function)除了图片上的指标外,还有接收机操作曲线(receiver operating curves)杰卡...
2020-04-13 16:18:58
854
原创 sklearn模型选择--模型评估方法
模型评估方法1.Estimator对象的score方法score会调用predict函数,获取预测相应,然后与传入的真实值对比,计算得分分类器继承了classifiermixin的类,判别标准sklearn.metrics.accuracy_score回归器继承regressormixin判别标准sklearn.metrics.r2_score。2.交叉验证中使用的scoring参数...
2020-04-13 15:57:33
700
原创 sklearn模型选择--模型验证方法
模型验证(model validation)方法1.通过交叉验证计算得分sklearn.model_selection.cross_val_score(estimator,X)2.对输入数据点产生交叉验证估计3.计算并绘制模型的学习曲线4,计算并绘制模型的验证曲线5.(不常用)通过排序评估交叉验证得分的重要性...
2020-04-13 11:09:37
637
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅