机器学习-1-导论
什么是人工智能(Artificial Intelligence, AI)? 这一名词并没有一个全世界通用的定义,在大多数的文件与标准中,分别从学科和技术系统两个角度进行定义: 中国国家标准:利用数字计算机或由其控制的机器,模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。 国务院《新一代人工智能发展规划》:人工智能是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 法律操作性定义(OECD/欧盟《人工智能法案》):是一种基于机器的系统,能够在不同程度的自主性下运行,部署后可展现出适应性,并针对明示或隐含的目标,从接收的输入中推断出如何生成可影响物理或虚拟环境的输出,如预测、内容、建议或决策。 从上述这些官方定义中可以看到一些共同处:AI是一个系统,并且能感知外部环境并输出结果。 进一步抽象AI的定义,我们可以简化为一个函数:y=ax+b,其中x就是感知到的外部环境信息,y就是输出的结果,而a与b就是训练出来的AI参数。 初中方程配上高中导数=简单的小AI ...
C++并发编程-2 FFmpeg推流命令参数
其实没太想好FFmpeg这一篇博客放在哪个分类下面,后续应该不会开一个单独的音视频处理的分类,就接着上次的多路视频流采集继续写一些。 视频的基本概念 诚然,我对视频处理其实并不熟悉,因此需要对各个概念做些明确与区分,比如MP4是什么?H264又是什么?以及推流中的关键帧等概念,需要提前认识一下。 封装格式(快递箱子) 例如:.mp4、.flv、.mkv、.avi。这些文件后缀名,只是一个外壳。它就像一个快递箱,里面装着“视频画面”和“音频声音”两样东西。有些箱子是透明的(支持网页直接播),有些箱子很结实(支持更多功能)。直播推流通常用 FLV 箱子,因为它传输快。 编码格式 例子:H.264、H.265、AAC、MP3,这里面混杂了视频与音频的编码方法。原始的视频画面是非常巨大的(几秒钟就能有几百兆)。为了塞进箱子传输,我们必须把它“压缩”。H.264:这是一种把视频画面“折叠/压缩”的标准(方法)。AAC:这是一种把声音“折叠/压缩”的标准。 注意,H.264、H.265这俩有啥区别? H.264 (也叫 AVC) ——...
端边协同的增量目标检测系统-2 中控UI
根据前一节构建的框架,本节搭建一个基本的前端页面UI,大体上需要如下四个页面: 全局layout 核心架构搭建:构建基于 Ant Design 的响应式全局 Layout 在后台管理系统中,全局 Layout(布局)扮演着骨架的角色。它不仅负责维护页面结构的一致性(侧边栏、顶栏),还需要处理全局状态(如导航高亮、报警消息推送)。 采用了 React + Ant Design 5.x + Tailwind CSS,构建了一个经典的“左右结构”管理后台。以下是该组件的三个核心实现要点: 利用 Flex 布局与组件化 利用 Ant Design 的 组件体系,极大地简化了 CSS 布局的工作量。整体采用了 Sider(侧边栏)+ Header(顶栏)+ Content(内容区)的经典布局。 Sider: 负责导航,支持折叠收起。 Header: 放置折叠开关和全局功能入口(如消息通知)。 Content: 路由的出口,用于渲染具体的业务页面。 代码实现上,通过Tailwind的 min-h-screen...
端边协同的增量目标检测系统-1 系统架构与技术选型
一直以来都想做一个端侧部署的系统,苦于没有完整的想法以及对应的技术栈,经过上一年的学习,相应的技术点基本都会了些,正好也到了准备大论文第三部分系统构建的时段,就决定将之前的tensorRT项目包装一下,做个系统出来,姑且命名为:端边协同的增量目标检测系统 想法构建 大论文的主线工作是:增量目标检测。目标检测的应用场景总体还是比较多的,比如安防、生产线上的瑕疵检测、无人驾驶等等环境,有个可行的方案是用边云协同,但对于视频流这个传输压力还是很大的,同时受上一个项目的影响,个人会更倾向于局域网内解决问题,避免上公网。基于以上两个考虑,决定在常见的监控系统上展开初步的系统构建。 常见的一些监控系统上都会配置:局域网、摄像头(提供RSTP流)、主机、存储。几乎提供了除GPU以外的全部硬件设备,如果不对主机进行硬件升级,是否可以单独采购一个AI推理的硬件?比如:NVIDIA Jetson,将所有的AI相关的服务构建为web或者其他可供调用的服务,再通过主机上的软件对开发板进行一些可视化的操作,或许是一个可行的方案。 ...
C++并发编程-1 多路视频采集处理
之前搭建了tensorRT的基本框架,想着部署个yolo做多路视频的处理,现在没有真实的网络摄像头可供使用,临时采用RTSP+ffmpeg推流、Opencv拉流组个模拟。 推流 RTSP(Real-Time Streaming Protocol)用于在网络中控制流媒体服务器。RTSP 允许客户端(如媒体播放器)与服务器建立和控制流媒体会话,支持播放、暂停和停止等功能。他并不直接提供视频推流,需要结合ffmpeg一起。 RTSP服务器安装 下载mediamtx_v1.5.1_linux_amd64.tar.gz,解压,执行./mediamtx ffmpeg 安装 直接sudo安装即可:sudo apt install ffmpeg 为了同时推送多路视频,可以写sh脚本: 123456789101112131415161718192021222324252627282930#!/bin/bash# MediaMTX 服务器地址RTSP_URL="rtsp://localhost:8554"#...
TensorRT模型部署推理-2 动态批次
在上一篇博客里大概整理了tensorRT对于固定结构网络进行推理的的流程,在申请内存的时候可以通过engine_拿到输入输出的结构,从而申请对应的内存,将GPU与CPU的内存指针分别保存在device_ptr与host_ptr中,推理的时候将输入tensor数据传送到GPU的指定位置上,还要指定大小。 1const cudaError_t err = cudaMemcpyAsync(tensor.device_ptr, tensor.host_ptr, tensor.size, cudaMemcpyHostToDevice, stream_); 对于固定尺寸、固定批次的模型,这种方案是非常简单高效的,但是他的扩展性似乎不太行(我叫他扩展性,我不知道工业界叫他什么),就比如yolo模型部署,固定尺寸输入:1 * 3 * 640 * 640,一次只处理一张图像,如果想处理多路监控,还得多次部署,不光占用显存,还浪费了GPU的并行能力。所以还是希望他能做到动态的批次,让输入为:[?, 3, 640,...
TensorRT模型部署推理-1 基本流程
pytorch的推理速度常被人诟病,在生产环境中会采用一些特殊的格式去部署,常见的有onnx的静态图,适用性广,在unity3D中也可以直接用,在此之上还可以进一步做优化,具体到硬件层面,有英伟达的GPU,华为的昇腾,各家在静态图的基础上又做了些工作,比如层融合。由于手头没有华为的板子,再 结合上次玩过香橙派的经验,此次就尝试用tensorRT做OCR模型的部署推理,在此基础上用C++搭建web服务,正好接入前段时间做的档案系统。 开发环境 CUDA Toolkit + cudnn + tensorRT,注意版本对应即可,认准cuda版本。 安装过程可参考: https://blog.csdn.net/weixin_44822312/article/details/148653179 https://www.cnblogs.com/wanqieddy/p/17581996.html 第一个博客中介绍了vllm在wsl中的部署方法,包括了安装wsl的过程与CUDA...
PDF的预览与下载
项目里需要针对PDF的文件进行预览与下载,而且在预览与下载时都需要添加水印,如果浏览器内核没有问题的话,我们时可以直接使用WaterMark 水印组件实现的,虽然是一种蒙版的感觉,但多少还是够用的,但问题就在,这个Vue组件是要看浏览器内核版本的,如果在国产的系统以及国产服务器上,(银河麒麟+360安全浏览器),根本没法用!只能从PDFjs上面下手了。 水印显示 Vue组件 当然,最初的方案很简单,js完全可以实现: 1234567<template> <el-watermark :content="['这是水印', '第二行']"> <div style="height: 500px"> <!-- 你的页面内容 --> </div> ...
数据库迁移:MySQL -> 人大金仓
前言:本文基于若依前后端分离版本(Spring Boot 3.3.0 + Vue 3 + Activiti 8.1.0)进行改造,相关教程可以在网上找到。在撰写此博客期间,笔者刚刚开始接触 Java Web,本系列下的文章内容包含大量“个人初期”视角,注意鉴别。 人大金仓? Kingbase是基于开源数据库PostgreSQL开发的国产数据库。 所以在后续的开发中,将人大金仓视作PostgreSQL就可以解决大多数问题(这个想法对于海量数据库Vastbase是不是也是成立的?) 安装 人大金仓,一路下一步,全部安装,其中有一步骤是添加license,在下载页面也有授权文件的下载,选择开发版就好,安装好后就能看到三个软件工具: 初步使用 运行:数据库开发管理工具。界面跟Navicat、MySQL Workbench有些像: 创建连接、创建数据库的过程还是相当相似的,不过多赘述,但是相比MySQL的数据库,多了模式这一层级。可以把它理解成一个命名空间,也就是说kingbase的数据库相对是一个更加大的集合。 mysql:...
若依集成单点登录
前言:本文基于若依前后端分离版本(Spring Boot 3.3.0 + Vue 3 + Activiti 8.1.0)进行改造,相关教程可以在网上找到。在撰写此博客期间,笔者刚刚开始接触 Java Web,本系列下的文章内容包含大量“个人初期”视角,注意鉴别。 背景补充 单点登录(Single Sign-On, SSO) 是一种身份验证机制,允许用户通过一次登录访问多个相互信任的子系统。例如,用户登录企业内部门户后,可直接访问OA、CRM等系统而无需重复输入凭证。常见的SSO协议包括CAS、OAuth2、SAML等。本文实现的是一种简化的SSO逻辑,通过第三方系统颁发的Token直接完成若依系统的身份认证。 Spring Security...





