Java-K8s-Quarkus
1 | #安装 ---废弃开始----直接可以在idea里面新建quarkus的项目 |
1 | #安装 ---废弃开始----直接可以在idea里面新建quarkus的项目 |
在一次操作生产服务器时,发生了系统文件丢失,导致重启之后无法进入系统,但是重要哦的文件还在系统中,第一时间应该先对当前系统【创建快照】,创建快照之后就可以【查看vmdk文件】
scp root@<ESXi_IP>:/vmfs/volumes/datastore_name/vm_name/disk.vmdk /local/path/
拷贝出来,如果文件太大,可以【创建虚拟机】作为临时存放,内网相对快很多【创建虚拟机】,虚拟机需要自定义分区,主要修改卷组(VG)名称,修改卷组名称,主要是防止逻辑卷名称冲突
启动新的虚拟机,启动成功后,【添加硬盘】,硬盘文件选择需要打开的vmdk文件
进入虚拟机,执行下面命令
1 | #检查激活状态 |
创建快照:选择虚拟机,点击 Actions
> Snapshot
> Take Snapshot
。
查看vmdk文件:在左侧菜单,点击Storage
>Data_disk
>对应的虚拟机服务
1 | #关键文件内容如下 |
开启ESXI服务器的ssh功能:在左侧菜单,点击Host
>Manage
>Services
,里面开启ssh功能。开启后用户名和密码同网页登录esxi界面一样
创建虚拟机:在左侧菜单,点击Virtual Machines
>create
,选择linux,centos7,在iso里面选择Storage
里面的iso镜像,然后就是安装centos的步骤了。设置静态ip和ESXI服务器在同一网段中。
添加硬盘:选择虚拟机,点击 edit
> add hard disk
进行添加硬盘。
合并快照磁盘:选择虚拟机,点击 Actions
> Snapshot
>Snapshot Manager
> Consolidate
。
在docker.elastic.co仓库查找springboot对应的es版本,,eg:
1 | # springboot 2.7.18 |
创建配置文件,执行vim /workspace/elasticsearch.yml
写入如下内容
1 | cluster.name: "docker-cluster" |
1 | mkdir /workspace/v_es_data/ |
测试,执行下面命令
1 | ➜ ~ curl -X GET "127.0.0.1:9200/_cat/nodes?v=true&pretty" |
可视化查看工具,类似dbeaver,非必需
执行下面命令进行安装
1 | docker run -d --name kibana -p 5601:5601 \ |
访问http://localhost:5601/
然后进行各种操作,比较复杂
在应用层面进行数据同步,即在应用代码中同时写入 MySQL 和 Elasticsearch。
优点:依赖少,自定义同步逻辑。
缺点:数据一致性和可靠性方面存在一些挑战,特别是在高并发的场景下。
借助于数据库日志(如 MySQL binlog)来捕获数据变化,并将其同步到 Elasticsearch。这种方法通常能够实时同步数据,并且不会对数据库性能造成太大影响。
优点:实时同步数据,不会对数据库性能造成太大影响。
缺点:性能开销,binlog 会占用额外的磁盘空间。
优点:功能强大,支持复杂的配置和扩展,社区活跃。
缺点:需要 Kafka,配置相对复杂。
Maxwell是一种开源的MySQL数据库同步工具,它可以将MySQL数据库的binlog转化为JSON格式,并将其发送到消息队列中。
需要mq和kafka等中间件
优点:轻量级,配置简单,适合快速实现。
缺点:功能相对简单,不支持复杂的场景
Canal是阿里巴巴开发的一款数据库同步工具,它可以实现MySQL数据库的binlog解析和日志抓取。模拟mysql的从节点实现。
在pom.xml添加依赖
1 | <dependency> |
1 | version: '3.8' |
查看显卡型号lspci | grep -i vga
,提示-bash: lspci: 未找到命令
,执行yum install pciutils
安装lspci命令
1 | [root@exxk ~]# lspci | grep -i vga |
在输出结果中获取25e2
关键字,在https://admin.pci-ids.ucw.cz/read/PC/10de/
连接尾部拼接25e2
,例如https://admin.pci-ids.ucw.cz/read/PC/10de/25e2,访问即可,页面回展示类似内容
1 | Main -> PCI Devices -> Vendor 10de -> Device 10de:25e2 |
从中可以知道25e2对应的显卡是GeForce RTX 3050 Mobile
在该https://www.nvidia.cn/Download/index.aspx?lang=cn网页找到`GeForce RTX 3050 Mobile=
GeForce RTX 3050 Laptop GPU该驱动,选择
Linux64-bit然后下载下来
NVIDIA-Linux-x86_64-550.78.run `
拷贝到centos7上面,执行下面命令进行安装驱动
1 | #屏蔽系统自带的nouveau显卡驱动(重启后生效---begin----------- |
安装NVIDIA Container Toolkit,执行下面的命令(确保您已安装适用于您的 Linux 发行版的NVIDIA 驱动程序 请注意,您不需要在主机系统上安装 CUDA Toolkit,但需要安装 NVIDIA 驱动程序)
1 | [root@exxk ~]# curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo |
配置containerd(针对Kubernetes),执行下面命令
1 | [root@exxk ~]# nvidia-ctk runtime configure --runtime=containerd |
1 | nvidia-docker pull registry.baidubce.com/paddlepaddle/paddle:2.6.1-gpu-cuda12.0-cudnn8.9-trt8.6 |
安装cuda 12.4.1最新版(飞浆需要12.0的版本,因此将下面的替换成12.0.1)
1 | wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda_12.4.1_550.54.15_linux.run |
添加环境变量,修改/etc/profile
文件,执行vi /etc/profile
,增加如下内容,然后执行source /etc/profile
1 | export PATH=${PATH}:/usr/local/cuda-12.4/bin |
验证
1 | [root@exxk ~]# nvcc -V |
卸载
1 | [root@exxk ~]# cd /usr/local/cuda-12.4/bin |
下载 developer.nvidia.com页面按自己的环境选择,然后下载cuda。安装方式我选择的runfile(local)
,下载完成后上传到centos
执行sh cuda_7.5.18_linux.run
,按ctrl+c
跳过文档阅读
1 | [root@exxk ~]# sh cuda_7.5.18_linux.run |
添加环境变量,修改/etc/profile
文件,执行vi /etc/profile
,增加如下内容,然后执行source /etc/profile
1 | export PATH=${PATH}:/usr/local/cuda/bin |
验证环境
1 | [root@exxk ~]# nvcc -V |
卸载 /usr/local/cuda-7.5/bin/uninstall_cuda_7.5.pl
PaddleDetection是一个基于PaddlePaddle的目标检测端到端开发套件。
在PyCharm欢迎页通过Get from VCS拉取github上PaddlePaddle/PaddleSeg项目。
拉取成功后,PyCharm会提示创建venv虚拟环境,点击确定即可,在PyCharm打开终端命令行前面有venv代表创建成功,如果没有,关闭终端点击Add new Interpreter
(需要python3.10的环境),添加后,重新在PyCharm打开终端
1 | 例如: |
安装paddle,在PyCharm中Terminal命令行中执行pip install paddlepaddle
安装setuptools,在PyCharm中Terminal命令行中执行pip install -U pip setuptools
安装依赖,在PyCharm中Terminal命令行中执行 pip install -r requirements.txt
1 | # 运行图片检测人,结果输出在output目录 |
安装ffmpeg: brew install ffmpeg
下载安装rtsp推流服务bluenviron/mediamtx,在release页面选择适合的版本,我的是inter的mac,选择mediamtx_v1.8.1_darwin_amd64.tar.gz即可
解压,然后运行./mediamtx
运行视频流检测并推流python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_human_attr.yml --rtsp rtsp://admin:123456@172.1.1.1:554/ch01.264?dev=1 --pushurl rtsp://127.0.0.1:8554
1 | python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_human_attr.yml --rtsp rtsp://admin:123456@172.16.80.59:554/ch01.264?dev=1 --pushurl rtsp://127.0.0.1:8554 |
然后使用vlc播放rtsp://127.0.0.1:8554/ch01
流即可,流的地址在上一步日志里面可以看到the result will push stream to url:rtsp://127.0.0.1:8554/ch01
默认的模型,识别速度个人电脑会卡顿,可以替换为小模型,模型地址可以在PP-Human快速开始-模型下载里面进行找
1 | 修改该deploy/pipeline/config/examples/infer_cfg_human_attr.yml文件 |
安装依赖,执行pip install -r requirements.txt
时报AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'?
错误,详细信息如下:
1 | (.venv) ➜ PaddleDetection git:(release/2.7) pip install -r requirements.txt |
原因:在docs/tutorials/INSTALL_cn.md
文档里面可以查看到只支持Python 3(3.5.1+/3.6/3.7/3.8/3.9/3.10),64位版本。
解决:执行brew install python@3.10
,然后在上面安装的第二个步骤里面,切换成3.10的python环境
出现提示安装pip install numba==0.56.4
的警告,安装即可
运行视频流检测人时,报错
1 | python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_human_attr.yml -o visual=False --rtsp rtsp://admin:123456@172.16.1.1:554/ch01.264?dev=1 |
解决:删除命令里面的-o visual=False
,似乎是该参数有问题
运行视频流检测加推流的时候,报错
1 | python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_human_attr.yml --rtsp rtsp://admin:iexxk123456@172.16.80.229:554/ch01.264?dev=1 --pushurl rtsp://127.0.0.1:8554 |
解决:安装ffmpeg,执行brew install ffmpeg
下载安装即可
wsl2环境安装(Ubuntu22版本安装手册)
执行下面的安装命令
1 | sudo apt-get update && sudo apt upgrade -y |
访问http://hostname_or_ip/zm
添加监视器,查看官方使用手册
两个都无法正常用下面脚本获取摄像头信息
测试脚本nvr_test.py
1 | # pip install onvif_zeep |
飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,集深度学习核心训练和推理框架、基础模型库、端到端开发套件、丰富的工具组件于一体,是中国首个自主研发、功能完备、开源开放的产业级深度学习平台。国内的可以优先选择paddlepaddle,这是因为百度在大力推广该框架,能提供丰富的算力支持和技术支持,且百度开源了众多模型和应用,是人工智能入门的一个好选择,且能在模型上面进行一系列魔改,强烈推荐!
是由Facebook人工智能学院提供支持服务的,目前主要在学术研究方向领域处于领先地位,许多学术论文都是用pytorch编写的,因此使用范围更广
目前还没用过,官方已经不维护,建议用label-studio
还没用过,docker安装
启动有点慢
优先尝试:
● 百度飞桨开源数据集
● OpenDataLab 引领AI大模型时代的开放数据平台
● kaggle开源数据集
● 谷歌开源数据集
● ModelScope开源数据集
● TIANCHI天池开源数据集
● HuggingFace开源数据集
● 微软开源数据集
● Roboflow Universe: Open Source Computer Vision Community
备选:
● 启智开源数据集
● 和鲸开源数据集
● openimages开源数据集
● GitHub开源数据集
● AWS亚马逊开源数据集
● LUGE千言开源数据集
● UCI开源数据集
● 计算机视觉开源数据集
● Dataju聚数力开源数据集
● Hyper超神经开源数据集
● BAAI开源数据集
注意事项:
1. 检索关键词
2. 数据集格式
在PyCharm欢迎页通过Get from VCS拉取github上PaddlePaddle/PaddleSeg项目
拉取成功后,PyCharm会提示创建venv虚拟环境,点击确定即可,在PyCharm打开终端命令行前面有venv代表创建成功,如果没有,关闭终端点击Add new Interpreter
,添加后,重新在PyCharm打开终端
1 | 例如: |
安装paddle,在PyCharm中Terminal命令行中执行pip install paddlepaddle
安装setuptools,在PyCharm中Terminal命令行中执行pip install -U pip setuptools
[可选],检查paddle是否安装成功,在PyCharm中Python console执行import paddle
和paddle.utils.run_check()
,检查版本执行print(paddle.__version__)
安装paddleseg,在PyCharm中Terminal命令行中执行pip install paddleseg
,(这里采用的直接安装发布的版本,本地编译未实验通过)
验证安装是否成功,在在PyCharm中Terminal命令行中执行sh tests/install/check_predict.sh
PddleSeg已支持2种标注工具:LabelMe、精灵数据标注工具
下载安装labelme
根据文档操作,进行标注数据,简单流程打开图片目录->创建多边形->框选要标注的数据->保存
会在图片目录生成一个json文件,标注目录下的所有图片
1 | #标注前目录结构 |
将标注的数据转换为模型训练时所需的数据格式
1 | #python tools/data/labelme2seg.py [-h] 图片目录 输出目录 |
切分数据,对于所有原始图像和标注图像,需要按照比例划分为训练集、验证集、测试集。
1 | #python tools/data/split_dataset_list.py <dataset_root:原始图像目录名> <images_dir_name:原始图像目录名> <labels_dir_name:标注图像目录名> ${FLAGS} |
FLAGS说明:
FLAG | 含义 | 默认值 | 参数数目 |
---|---|---|---|
–split | 训练集、验证集和测试集的切分比例 | 0.7 0.3 0 | 3 |
–separator | txt文件列表分隔符 | “ “ | 1 |
–format | 原始图像和标注图像的图片后缀 | “jpg” “png” | 2 |
–postfix | 按文件主名(无扩展名)是否包含指定后缀对图片和标签集进行筛选 | “” “”(2个空字符) | 2 |
拷贝paddle_pr
数据集目录到项目根目录,在项目下面的目录configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml
,修改这两个路径配置:
1 | train_dataset: |
配置文件说明:
1 | batch_size: 4 #设定batch_size的值即为迭代一次送入网络的图片数量,一般显卡显存越大,batch_size的值可以越大。如果使用多卡训练,总得batch size等于该batch size乘以卡数。 |
使用pyCharm添加一个python run config
的启动配置,script设置为tools/train.py
,script parameters设置为--config configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml --save_interval 500 --do_eval --use_vdl --save_dir output
,然后点击右上角的run
。
运行相关的日志如下:
1 | /Users/x/workspace/PaddleSeg/venv/bin/python -X pycache_prefix=/Users/x/Library/Caches/JetBrains/PyCharm2023.3/cpython-cache /Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/pydevd.py --multiprocess --qt-support=auto --client 127.0.0.1 --port 64923 --file /Users/x/workspace/PaddleSeg/tools/train.py --config configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml --save_interval 500 --do_eval --use_vdl --save_dir output |
生成的文件:
1 | output |
拷贝paddle_pr
数据集目录到项目根目录,在项目下面的目录configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml
,修改这两个路径配置:
1 | val_dataset: |
使用pyCharm添加一个python run config
的启动配置,script设置为tools/val.py
,script parameters设置为--config configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml --model_path output/iter_1000/model.pdparams
,然后点击右上角的run
。
输出结果:
1 | /Users/x/workspace/PaddleSeg/venv/bin/python tools/val.py --config configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml --model_path output/iter_1000/model.pdparams |
使用pyCharm添加一个python run config
的启动配置,script设置为tools/predict.py
,script parameters设置为--config configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml --model_path output/iter_1000/model.pdparams --image_path paddle_pr/images/image1.jpg --save_dir output/result
,然后点击右上角的run
。
输出结果:
1 | /Users/x/workspace/PaddleSeg/venv/bin/python tools/predict.py --config configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml --model_path output/iter_1000/model.pdparams --image_path paddle_pr/images/image1.jpg --save_dir output/result |
生成的文件:
1 | output/result |
使用pyCharm添加一个python run config
的启动配置,script设置为tools/export.py
,script parameters设置为--config configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml --model_path output/best_model/model.pdparams --save_dir output/inference_model
,然后点击右上角的run
。
输出结果:
1 | /Users/x/workspace/PaddleSeg/venv/bin/python tools/export.py --config configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml --model_path output/best_model/model.pdparams --save_dir output/inference_model |
生成的文件:
1 | output/inference_model |
使用pyCharm添加一个python run config
的启动配置,script设置为deploy/python/infer.py
,script parameters设置为-config output/inference_model/deploy.yaml --image_path /Users/xuanleung/Downloads/test.jpg --device cpu
,然后点击右上角的run
。
生产的文件:output/test.png
1 | #检查环境 |
1 | mkdir paddle |
安装python3 -m pip install paddlepaddle==2.6.0 -i https://mirror.baidu.com/pypi/simple
提示如下错误
1 | ➜ ~ python3 -m pip install paddlepaddle==2.6.0 -i https://mirror.baidu.com/pypi/simple |
解决:参考pip(3) install,完美解决 externally-managed-environment
方案一:添加参数–break-system-packages,这种直接安装到系统,可能会影响系统环境。
1 | python3 -m pip install paddlepaddle==2.6.0 -i https://mirror.baidu.com/pypi/simple --break-system-packages |
方案二:pipx,安装完成后,无法导入paddle,初步判断无法进入虚拟环境
1 | # pipx会为每个安装的应用创建一个独立的虚拟环境,避免不同应用之间的依赖冲突。 |
【采用】方案三:使用venv
执行import paddle
提示Python 3: ImportError “No Module named Setuptools”
1 | >>> import paddle |
解决:执行pip install -U pip setuptools
执行
1 | python tools/train.py \ |
提示如下错误:
1 | (venv) ➜ PaddleSeg git:(release/2.9) ✗ python tools/train.py \ |
原因:tools/train.py
文件里面缺少参数to_static_training
解决:切换到release/2.8.1
分支,再次执行命令
执行
1 | python tools/train.py \ |
提示如下错误:
1 | - type: CrossEntropyLoss |
解决:使用pyCharm添加一个python run config
的启动配置,script设置为tools/train.py
,script parameters设置为--config configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml --save_interval 500 --do_eval --use_vdl --save_dir output
,然后点击右上角的run
。
识别率较低(已卸载)
mac安装执行brew install tesseract
即可,安装过程可能有点慢,要下载很久
安装完成后,执行brew info tesseract
,可以查看tesseract相关信息
1 | tesseract <图片名字> <输出的文本文件名(自带.txt)> [-l 语言类型] [--oem ocrenginemode] [--psm pagesegmode] [configfiles...] |
识别率高
pyCharm拉取github PaddlePaddle/PaddleOCR仓库的代码,并切换到分支release/2.7
在pyCharm终端执行下面命令,注意需要venv加载成功
1 | #环境所需依赖 |
提前训练好模型参考:PaddleSeg基于机器学习的图像分割
采用paddleSeg(模型预测)进行关键位置的识别
1 | #pycharm 运行 |
裁剪图片
1 | #pycharm 运行 |
执行ocr识别,会产生一个output目录,里面会产生和图片对应文件名的txt文本,内容为ocr识别的内容
1 | #建议优化脚本里面的识别方式,替换成PaddleOCR识别率提高非常的多 |
执行关键文字提取脚本,将关键字在文本文件里面保留
1 | #在图片所在的output目录里面 |
替换文件名,根据文本里面的内容作为图片的文件名
1 | #在图片所在目录 |
根据文件名生产csv表格
1 | #在图片所在目录 |
ocr.sh
:批量将当前脚本所在目录的图片转换成文本
1 | #建议优化脚本里面的识别方式,替换成PaddleOCR识别率提高非常的多 |
format.sh
:批量将当前脚本所在目录的文本只保留关键信息
1 | #!/bin/bash |
rename.sh
:批量重命名脚本所在目录的图片,文件名根据output目录对应文件名的文本内容进行命名
1 | #!/bin/bash |
csv.sh
:根据文件名生产表格,表格数据有两列,文件名以-
进行区分列
1 | #!/bin/bash |
crop.py
:根据模型预测的数据,进行图片裁剪
1 | # 参数:input_mask_dir 掩码图片目录,黑白图片 |
下载私有化部署包
解压下载的压缩包
在解压的目录新建一个Dockerfile
1 | FROM centos:centos7.9.2009 |
创建初始化启动脚本,在解压的目录新建一个init.sh
1 | #!/bin/bash |
nginx代理配置,在解压的目录新建一个default.conf
1 | # https://kf.shengxunwei.com |
在解压的目录新建一个appsettings.json
配置,里面进行mysql数据库配置,初始化脚本在:数据库建表脚本/CreateDatabase_MySql.sql
1 | { |
执行docker build -t harbor.domain.dev/base/shengxunwei:1.3 .
运行docker run harbor.domain.dev/base/shengxunwei:1.3
Resource
对应客户访问的界面
Management
对应客服管理后台界面
ApiUrl
:http://kf-api.domain.io
ResourceUrl
:http://kf-resource.domain.io
管理后台地址
:http://kf-m.domain.io
需要修改下面几个文件里面的ApiUrl和ResourceUrl
1 | /wwwroot/Resource/embedded.js |
客户访问http://kf-resource.domain.io/WebChat/MobileWebChat.html?siteCode=freesite
客服下载客户端,两个就能进行聊天了