OpenMMLab MMDetectionV3.1.0-SAM(环境安装、模型测试、训练以及模型后处理工具)

OpenMMLab Playground

概况

在这里插入图片描述
当前通用目标检测的研究方向正在朝着大型多模态模型发展。除了图像输入之外,最近的研究成果还结合了文本模式来提高性能。添加文本模态后,通用检测算法的一些非常好的属性开始出现,例如:

可以利用大量易于访问的文本数据进行联合训练。
轻松实现开放集目标检测,从而实现真正通用的检测任务。
可以与 NLP 中的优秀模型一起使用来创建一些有趣且有用的功能。

从目前来看,通用物体检测可以分为两大类:

(1)闭集目标检测,只能检测训练集中出现的固定数量类别的目标
(2)开放集目标检测,还可以检测不在训练集中的对象和类别

随着多模态算法的流行,开放集目标检测成为一个新的研究领域,其中有三个热门方向:
(1)零样本目标检测(Zero-Shot Object Detection),也称为零样本目标检测,强调测试集中的目标类别不在训练集中。
(2)开放词汇对象检测(Open-Vocabulary Object Detection),检测目标图像中出现的具有给定类别列表的所有对象
(3)接地对象检测(Grounding Object Detection),通过目标图像中出现的给定文本描述来预测对象的位置

这三个方向在实践中并不能完全区分,只是一般意义上的不同。基于以上描述,我们提供了多种模型的推理和评估脚本,与Segment Anything配合使用,实现了以下功能:

(1)支持 MMDet 中经典的 Closed-Set 对象检测模型,与 SAM 模型配合使用,以进行自动检测和实例分割,例如 Faster R-CNN 和 DINO。
(2)支持 Open-Vocabulary 检测模型(如 Detic)与 SAM 模型配合使用,以进行自动检测和实例分割。
(3)支持 Grounding 物体检测模型与 SAM 模型配合使用,进行自动检测和实例分割,例如 Grounding DINO 和 GLIP。
(4)支持跨所有模型的分布式检测和分段评估以及自动 COCO JSON 导出,以实现用户友好的自定义数据评估

File Introduction(代码介绍)

在这里插入图片描述

(1)detector_sam_demo.py:用于对单个图像和图像文件夹进行检测和实例分割。
(2)coco_style_eval.py:用于对给定的 COCO JSON 进行推理、评估和导出。
(3)browse_coco_json.py:用于可视化导出的 COCO JSON。
(4)images2coco.py:用于基于用户自己的图像文件夹的自定义和未注释的 COCO 风格 JSON。此 JSON 可以用作coco_style_eval.py.

环境搭建

conda create -n mmdetsam python=3.8 -y
conda activate mmdetsam
pip install torch==1.9.1+cu111 torchvision==0.10.1+cu111 -f https://download.pytorch.org/whl/torch_stable.html
pip install mmengine  -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.comgit clone https://github.com/open-mmlab/playground.git
cd playground

功能介绍

该项目包含了许多优秀的开源算法,以减轻环境安装的负担。如果您不想使用某部分功能,可以跳过相应部分。我们的项目可以分为以下三个部分。

1 开放词汇+SAM(Open-Vocabulary + SAM)

将开放词汇目标检测器与 SAM 模型结合使用。目前我们支持 Detic。
依赖安装

pip install -U openmim  -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
mim install "mmcv>=2.0.0"  -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com# build from source
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection; pip install -e .; cd ..pip install git+https://github.com/facebookresearch/segment-anything.git
pip install git+https://github.com/openai/CLIP.git
验证mmdetection安装成功
python demo/image_demo.py demo/demo.jpg rtmdet_tiny_8xb32-300e_coco.py --weights rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --device cpu

在这里插入图片描述

Demonstration
cd mmdet_sam# download weights
mkdir ../models
wget -P ../models/ https://download.openmmlab.com/mmdetection/v3.0/detic/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth
wget -P ../models/ https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth####input a single image
python detector_sam_demo.py ../images/cat_remote.jpg \configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py \../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth \-t cat \--sam-device cpu
python detector_sam_demo.py ../images/cat_remote.jpg configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py  ../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth  -t cat 

在这里插入图片描述
我们还可以通过编辑–test-prompt来检测遥控器。请注意,您必须使用空白区域并.分隔不同的类别。

# input a single image
python detector_sam_demo.py ../images/cat_remote.jpg \configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py \../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth \-t "cat . remote" \--sam-device cpu
python detector_sam_demo.py ../images/cat_remote.jpg configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py ../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth -t "cat . remote" --sam-device cpu

在这里插入图片描述

python detector_sam_demo.py ../images/hengxuhe-20190411___1920___1920_24.jpg  configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py  ../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth  -t ship

在这里插入图片描述

您还可以使用以下命令对文件夹运行推理:

# input a folder
python detector_sam_demo.py ../images configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py ../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth -t "cat . remote" --sam-device cpu

如果您的 GPU 的显存只能支持运行一种模型,您可以使用以下方法–cpu-off-load来确保每次 GPU 上都只运行一种模型:

# input a folder
python detector_sam_demo.py ../images \configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py \../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth \-t "cat . remote" \--cpu-off-load

我们还通过使用支持 CPU 推理–det-device cpu 。

由于 Detic 包含掩模结果,因此我们添加了一个附加参数–use-detic-mask。这允许我们只运行 Detic,而不运行 SAM 模型。

# input a folder
python detector_sam_demo.py ../images \configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py \../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth \-t "cat . remote" \--det-device cpu \--use-detic-mask
# input a folder
python detector_sam_demo.py ../images configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py ../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth -t "cat . remote" --det-device cpu --use-detic-mask

如果您只想可视化结果,可以使用 set–only-det来运行而不使用 SAM 模型。

# input a sinle image
python detector_sam_demo.py ../images/cat_remote.jpg \configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py \../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth \-t "cat" \--only-det

在这里插入图片描述

2 MMdet models + SAM

将 MMDet 模型与 SAM 模型结合使用来执行实例分割任务。目前支持所有 MMDet 模型。

依赖安装

pip install -U openmim
mim install "mmcv>=2.0.0"# build from source(安装的是v3.1.0)
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection; pip install -e .; cd ..

在这里插入图片描述

Demonstration

您可以运行我们在上面的 Detic 部分中介绍的所有功能。唯一的区别是您不需要设置–text-prompt。这里我们演示一些经典用法。

Faster R-CNN models
cd mmdet_sammkdir ../models
wget -P ../models/ https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_2x_coco/faster_rcnn_r50_fpn_2x_coco_bbox_mAP-0.384_20200504_210434-a5d8aa15.pth# input a single image
python detector_sam_demo.py ../images/cat_remote.jpg \../mmdetection/configs/faster_rcnn/faster-rcnn_r50_fpn_2x_coco.py \../models/faster_rcnn_r50_fpn_2x_coco_bbox_mAP-0.384_20200504_210434-a5d8aa15.pth \--sam-device cpu
python detector_sam_demo.py ../images/cat_remote.jpg ../mmdetection/configs/faster_rcnn/faster-rcnn_r50_fpn_2x_coco.py ../models/faster_rcnn_r50_fpn_2x_coco_bbox_mAP-0.384_20200504_210434-a5d8aa15.pth --sam-device cpu

运行结果:目前看来先检测后分割会存在分割目标不全的问题。
在这里插入图片描述

DINO models
cd mmdet_sammkdir ../models
wget -P ../models/ https://download.openmmlab.com/mmdetection/v3.0/dino/dino-5scale_swin-l_8xb2-12e_coco/dino-5scale_swin-l_8xb2-12e_coco_20230228_072924-a654145f.pth# input a single image
python detector_sam_demo.py ../images/cat_remote.jpg \../mmdetection/configs/dino/dino-5scale_swin-l_8xb2-12e_coco.py \dino-5scale_swin-l_8xb2-12e_coco_20230228_072924-a654145f.pth  \--sam-device cpu
python detector_sam_demo.py ../images/cat_remote.jpg ../mmdetection/configs/dino/dino-5scale_swin-l_8xb2-12e_coco.py  ../models/dino-5scale_swin-l_8xb2-12e_coco_20230228_072924-a654145f.pth --sam-device cpu

在这里插入图片描述

3 Grounding models + SAM

将接地物体检测器与 SAM 模型结合使用来执行实例分割任务。目前我们支持 Grounding DINO 和 GLIP。

依赖安装

Grounding DINO:
cd playground
pip install git+https://github.com/facebookresearch/segment-anything.git 
pip install git+https://github.com/IDEA-Research/GroundingDINO.git  -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
# Please make sure your PyTorch, GCC and NVCC are all compatible to build CUDA ops successfully
GLIP:
cd playgroundpip install git+https://github.com/facebookresearch/segment-anything.git
pip install einops shapely timm yacs tensorboardX ftfy prettytable pymongo transformers nltk inflect scipy pycocotools opencv-python matplotlibgit clone https://github.com/microsoft/GLIP.git
cd GLIP; python setup.py build develop --user # Please make sure your PyTorch, GCC and NVCC are all compatible to build CUDA ops successfully
Demonstration

不过,用法与 Detic 部分相同,我们在这里仅演示部分功能。

cd mmdet_sammkdir ../models
wget -P ../models/ https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth# input a single image
python detector_sam_demo.py ../images/cat_remote.jpg \configs/GroundingDINO_SwinT_OGC.py \../models/groundingdino_swint_ogc.pth \-t "cat . remote" \--sam-device cpu
python detector_sam_demo.py ../images/cat_remote.jpg configs/GroundingDINO_SwinT_OGC.py ../models/groundingdino_swint_ogc.pth -t "cat . remote" --sam-device cpu

结果将outputs/cat_remote.jpg如下生成:

cd mmdet_sammkdir ../models
wget -P ../models/ https://penzhanwu2bbs.blob.core.windows.net/data/GLIPv1_Open/models/glip_a_tiny_o365.pth# input a single image
python detector_sam_demo.py ../images/cat_remote.jpg \configs/glip_A_Swin_T_O365.yaml \../models/glip_a_tiny_o365.pth \-t "cat . remote" \--sam-device cpu

4 COCO JSON评估

我们支持coco_style_eval.py分布式和非分布式方式运行。默认情况下,该脚本在按如下格式组织的 COCO Val2017 数据集上运行:
├── ${COCO_DATA_ROOT}
│ ├── annotations
│ ├──── instances_val2017.json
│ ├── val2017

cd mmdet_sam# non-distributed
python coco_style_eval.py ${COCO_DATA_ROOT} \configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py \../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth \-t coco_cls_name.txt# distributed on eight cards on one machine
bash ./dist_coco_style_eval.sh 8 ${COCO_DATA_ROOT} \configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py \../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth \-t coco_cls_name.txt

6 Custom dataset

Data prepare

使用以下命令下载 cat 数据集:

cd playgroundwget https://download.openmmlab.com/mmyolo/data/cat_dataset.zip
mkdir data
unzip cat_dataset.zip -d data/cat
rm cat_dataset.zip

Note:,Need to replace 1 cat with cat in cat/class_with_id.txt

使用images2coco.py脚本生成无标签的json文件:

cd mmdet_sam
python images2coco.py ../data/cat/images ../data/cat/class_with_id.txt cat_coco.json

推理

这里我们以GroundingDINO和SAM模型为例进行推理,得到预测json文件:

python coco_style_eval.py ../data/cat/ \configs/GroundingDINO_SwinT_OGC.py \../models/groundingdino_swint_ogc.pth \-t ../data/cat/class_with_id.txt \--data-prefix images \--ann-file annotations/cat_coco.json \--out-dir ../cat_pred \--sam-device cpu

MMRotate-SAM概况

在这里插入图片描述

我们提供了一套基于MMRotate和SAM的应用程序。其特点包括:
在这里插入图片描述

支持使用 SAM 进行零样本目标检测。
在单个图像上执行基于 SAM 的零样本面向对象检测推理。
在这里插入图片描述
eval_zero-shot-oriented-detection_dota.py使用 SAM 实施面向零样本的目标检测。它向 SAM 提示来自水平物体检测器的预测框。
demo_zero-shot-oriented-detection.py使用 SAM 进行零样本定向物体检测的推理单图像。
data_builder保存数据集、数据加载器的配置信息和进程。

pip install opencv-python pycocotools matplotlib onnxruntime onnx -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

您还可以选择从源代码安装MMRotate

git clone https://github.com/open-mmlab/mmrotate.git
cd mmrotate; pip install -e .; cd ..

用法

用单张图像推理MMRotate-SAM并获得可视化结果。

# download weights
cd mmrotate_sammkdir ../models
wget -P ../models https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth
wget -P ../models https://download.openmmlab.com/mmrotate/v0.1.0/rotated_fcos/rotated_fcos_sep_angle_r50_fpn_1x_dota_le90/rotated_fcos_sep_angle_r50_fpn_1x_dota_le90-0be71a0c.pth# demo
python demo_zero-shot-oriented-detection.py \../mmrotate/data/split_ss_dota/test/images/P0006__1024__0___0.png \../mmrotate/configs/rotated_fcos/rotated-fcos-hbox-le90_r50_fpn_1x_dota.py \../models/rotated_fcos_sep_angle_r50_fpn_1x_dota_le90-0be71a0c.pth \--sam-type "vit_b" --sam-weight ../models/sam_vit_b_01ec64.pth --out-path output.png

在这里插入图片描述

评估DOTA数据集上的定量评价指标。

python eval_zero-shot-oriented-detection_dota.py \../mmrotate/configs/rotated_fcos/rotated-fcos-hbox-le90_r50_fpn_1x_dota.py \../models/rotated_fcos_sep_angle_r50_fpn_1x_dota_le90-0be71a0c.pth \--sam-type "vit_b" --sam-weight ../models/sam_vit_b_01ec64.pth

Open-Tracking概况

我们提供了一种基于开放对象检测并利用运动信息(卡尔曼滤波器)进行多对象跟踪的方法。
在这里插入图片描述
借助开放对象检测和利用运动信息(卡尔曼滤波器),可以执行多对象跟踪。由于时间限制,目前仅支持GroundingDINO、GLIP、Detic结合ByteTrack进行追踪。
在这里插入图片描述

参数说明
tracking_demo.py:用于视频或图像文件夹上的多对象跟踪推理。

基础开发环境设置

pip install -U openmim
mim install "mmcv>=2.0.0"# build from source
cd playground
git clone -b tracking https://github.com/open-mmlab/mmdetection.git
cd mmdetection; pip install -e .; cd ..
pip install lap seaborn

Grounding Dino Dependencies Installation

cd playground
pip install git+https://github.com/IDEA-Research/GroundingDINO.git

如果由于网络原因无法使用pip下载,可以选择以下方法代替。

git clone git+https://github.com/IDEA-Research/GroundingDINO.git
cd GroundingDINO
python setup.py install

GLIP 依赖​​项安装

cd playground
pip install einops shapely timm yacs tensorboardX ftfy prettytable pymongo transformers nltk inflect scipy pycocotools opencv-python matplotlibgit clone https://github.com/microsoft/GLIP.git
cd GLIP; python setup.py build develop --user; cd ..

SAM Dependencies Installation

pip install git+https://github.com/facebookresearch/segment-anything.git

If you can’t use pip to download due to network reasons, you can choose the following method instead.

git clone git+https://github.com/facebookresearch/segment-anything.git
cd segment-anything
python setup.py install

获取演示视频和图片

cd playground
wget https://download.openmmlab.com/playground/mmtracking/tracking_demo.zip
unzip tracking_demo.zip

下载权重

mkdir ../models
wget -P ../models/ https://download.openmmlab.com/mmdetection/v3.0/detic/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth
wget -P ../models/ https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth
wget -P ../models/ https://penzhanwu2bbs.blob.core.windows.net/data/GLIPv1_Open/models/glip_a_tiny_o365.pth
wget -P ../models/ https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha2/groundingdino_swinb_cogcoor.pth

模型推理演示

仅使用 GroundingDINO 作为示例。
MOT

cd mmtracking_open_detection# input a video
python tracking_demo.py "../tracking_demo/mot_challenge_track.mp4" "configs/GroundingDINO_SwinB.cfg.py" "../models/groundingdino_swinb_cogcoor.pth"  --text-prompt "person . rider . car . truck . bus . train . motorcycle . bicycle ." --out-dir "outputs/mot_challenge" --init_track_thr 0.35 --obj_score_thrs_high 0.3# input a images folder
python tracking_demo.py "../tracking_demo/bdd_val_track" "configs/GroundingDINO_SwinB.cfg.py" "../models/groundingdino_swinb_cogcoor.pth"  --text-prompt "person . rider . car . truck . bus . train . motorcycle . bicycle ." --out-dir "outputs/bdd100k" --fps 30

MOTS

cd mmtracking_open_detection# input a images folder
python tracking_demo.py "../tracking_demo/bdd_val_track" "configs/GroundingDINO_SwinB.cfg.py" "../models/groundingdino_swinb_cogcoor.pth"  --text-prompt "person . rider . car . truck . bus . train . motorcycle . bicycle ." --out-dir "outputs/bdd100k" --fps 30 --mots

MMagic-SAM概述

在这里插入图片描述
我们提供了一套基于MMEditing和SAM的应用程序。其特点包括:

使用 MMEditing 界面生成图像。
将 SAM 生成的蒙版与 MMEditing 的图像编辑功能相结合,创建新图片。

# create env and install torch
conda create -n mmedit-sam python=3.8 -y
conda activate mmedit-sam
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113# install mmagic
pip install openmim
mim install mmengine "mmcv>=2.0.0"
git clone -b dev-1.x https://github.com/open-mmlab/mmagic.git
pip install -e ./mmagic# install sam
pip install git+https://github.com/facebookresearch/segment-anything.git# you may need ffmpeg to get frames or make video
sudo apt install ffmpeg

使用 SAM 播放 controlnet 动画

找到您要编辑的视频剪辑并获取帧

mkdir -p inputs/demo_video
ffmpeg -i your_video.mp4 inputs/demo_video/%04d.jpg

运行脚本。

python play_controlnet_animation_sam.py

使用输出帧制作视频。

ffmpeg -r 10 -i results/final_frames/%04d.jpg -b:v 30M -vf fps=10 results/final_frames.mp4

在这里插入图片描述
我们通过以下步骤得到最终的视频:

(1)将输入视频分割成帧
(2)通过MMagic的推理API调用controlnet动画模型修改视频的每一帧,使其成为AI动画
(3)使用MMagic中的稳定扩散生成符合动画内容语义的背景图像
(4)使用SAM预测动画中人物的面具
(5)将动画中的背景替换为我们生成的背景图片

MMOCR-SAM概述

在这里插入图片描述
该项目是从OCR-SAM迁移而来的,它结合了 MMOCR 和 Segment Anything。我们提供了一套基于MMOCR和SAM的应用程序。其特点包括:

支持端到端文本检测和识别,能够分割每个文本字符。
由扩散模型和 Gradio 驱动的引人注目的文本删除和文本修复 WebUI 演示。

安装

conda create -n ocr-sam python=3.8 -y
conda activate ocr-sam
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113pip install -U openmim
mim install mmengine
mim install mmocr
mim install 'mmcv==2.0.0rc4'
mim install 'mmdet==3.0.0rc5'
mim install 'mmcls==1.0.0rc5'pip install git+https://github.com/facebookresearch/segment-anything.git
pip install -r requirements.txtpip install gradio
pip install diffusers
pip install pytorch-lightning==2.0.1.post0

下载检查点

我们以 Swin Transformer V2 作为骨干,结合多个场景文本数据集(例如 HierText、TextOCR)重新训练 DBNet++。Google Drive (1G)上的 DBNet++ 检查点。

mkdir checkpoints
mkdir checkpoints/mmocr
mkdir checkpoints/sam
mkdir checkpoints/ldm
mv db_swin_mix_pretrain.pth checkpoints/mmocr

将其余检查点下载到相关路径(如果已完成,请忽略以下内容):

# mmocr recognizer ckpt
wget -O checkpoints/mmocr/abinet_20e_st-an_mj_20221005_012617-ead8c139.pth https://download.openmmlab.com/mmocr/textrecog/abinet/abinet_20e_st-an_mj/abinet_20e_st-an_mj_20221005_012617-ead8c139.pth# sam ckpt, more details: https://github.com/facebookresearch/segment-anything#model-checkpoints
wget -O checkpoints/sam/sam_vit_h_4b8939.pth https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth# ldm ckpt
wget -O checkpoints/ldm/last.ckpt https://heibox.uni-heidelberg.de/f/4d9ac7ea40c64582b7c9/?dl=1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/73459.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UniPro助力金融企业数字化转型 强化项目协作与跟踪

根据一份来自Standish Group的研究报告("CHAOS Report"),该报告对美国各行业的项目进行了调查,结果显示仅有不到一半(约44%)的项目能够成功按时完成,并达到预期的业务目标。其中&…

短视频矩阵营销系统技术开发者开发笔记分享

一、开发短视频seo抖音矩阵系统需要遵循以下步骤: 1. 确定系统需求:根据客户的需求,确定系统的功能和特点,例如用户注册登录、视频上传、视频浏览、评论点赞等。 2. 设计系统架构:根据系统需求,设计系统的…

【uniapp】【Vue3】 超简单全局自定义弹窗组件Modal

Element-Plus 自动引入&#xff0c;Icon图标不显示 //这样写是不会显示的 <el-icon size"20"><view /> </el-icon>// 应该这样写 <el-icon size"20"><i-ep-view/> </el-icon>// 或 <i-ep-view/>这个名字怎么去…

Jenkins 自动化部署实例讲解,另附安装教程!

【2023】Jenkins入门与安装_jenkins最新版本_丶重明的博客-CSDN博客 也可以结合这个互补看 前言 你平常在做自己的项目时&#xff0c;是否有过部署项目太麻烦的想法&#xff1f;如果你是单体项目&#xff0c;可能没什么感触&#xff0c;但如果你是微服务项目&#xff0c;相…

改进的智能优化算法定性分析:收敛行为分析(Analysis of the convergence behavior )

目录 一、智能优化算法改进收敛行为分析运行结果 二、收敛性分析 三、GWO1在F1收敛性运行结果 四、改进灰狼算法GWO1 五、代码获取 一、智能优化算法改进收敛行为分析运行结果 本文以改进的灰狼算法 GWO1 为例&#xff0c;在 CEC2005 测试函数上进行定性分析实验。 F1:…

SpringBoot之Actuator基本使用

SpringBoot之Actuator基本使用 引入分类常用接口含义healthbeansconditionsheapdumpmappingsthreaddumploggersmetrics 引入 <!-- actuator start--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

大麦订单生成器 大麦订单购买截图生成

后台一键生成链接&#xff0c;独立后台管理 教程&#xff1a;修改数据库config/Conn.php 不会可以看源码里有教程 下载程序&#xff1a;https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3

企业邮箱费用详解!了解企业邮箱的费用及其相关信息

对于需要可靠的邮箱平台的企业来说&#xff0c;企业邮箱可能是最好的解决方案。有许多供应商提供企业邮箱服务&#xff0c;他们通常每月都有相应的费用。 在考虑企业邮箱的成本时&#xff0c;有几件事要记住。首先&#xff0c;您应该考虑使用邮箱服务的用户数量&#xff0c;因为…

✅1本期刊发生变动,EI期刊目录更新!

【SciencePub学术】继上次更新后一个月&#xff0c;爱思唯尔&#xff08;Elsevier&#xff09;官网更新了EI Compendex收录期刊目录。本次更新EI期刊目录中&#xff0c;Serials&#xff08;连续出版/核心收录&#xff09;列表共收录期刊名称5347个&#xff0c;与上次更新相比&a…

java快速生成数据库表文档(HTML、DOC、MD)

在企业级开发中、我们经常会有编写数据库表结构文档的时间付出&#xff0c;关于数据库表结构文档状态&#xff1a;要么没有、要么有、但都是手写、后期运维开发&#xff0c;需要手动进行维护到文档中&#xff0c;很是繁琐&#xff0c;这里推荐一个开源项目&#xff1a;screw gi…

leetcode743. 网络延迟时间 floyd

https://leetcode.cn/problems/network-delay-time/ 有 n 个网络节点&#xff0c;标记为 1 到 n。 给你一个列表 times&#xff0c;表示信号经过 有向 边的传递时间。 times[i] (ui, vi, wi)&#xff0c;其中 ui 是源节点&#xff0c;vi 是目标节点&#xff0c; wi 是一个信…

成都链安:7月区块链安全事件爆发式增长,导致损失超4.11亿美元

7月&#xff0c;各类安全事件数量及造成的损失较6月爆发式增长。7月发生较典型安全事件超36起&#xff0c;各类安全事件造成的损失总金额约4.11亿美元&#xff08;虚拟货币案件涉案金额除外&#xff09;&#xff0c;较6月上涨约321%。Rug Pull导致损失约2065万美元&#xff0c;…

Python模块psycopg2连接postgresql

目录 1. 基础语法 2. 基础用法 3. 多条SQL 4. 事务SQL 1. 基础语法 语法 psycopg2.connect(dsn #指定连接参数。可以使用参数形式或 DSN 形式指定。host #指定连接数据库的主机名。dbname #指定数据库名。user #指定连接数据库使用的用户名。…

探寻AI大模型平台之巅——文心千帆

目录 前言1. 何为文心千帆2. 核心亮点2.1 第三方大模型2.2 Prompt模板2.3 安全可靠 3. 一站式服务3.1 数据管理3.2 数据标注3.3 数据处理3.4 数据训练3.5 模型纳管3.5.1 模型评估3.5.2 模型压缩 3.6 服务发布 总结 前言 众多AI大模型不断涌现&#xff0c;一时不知如何挑选&…

Java 线程的生命周期和状态(实践加深理解)

一、常规回答&#xff08;八股文&#xff09; 线程的生命周期一共分为有6个状态&#xff0c;在某个时刻中&#xff0c;一个线程只会处在6个状态中的其中一种。 第1&#xff1a;初始状态&#xff08;NEW&#xff09; 当前的线程已经被创建了出来&#xff0c;但是还没有通过调用…

ELK高级搜索(一)

文章目录 ELK搜索1&#xff0e;简介1.1 内容1.2 面向 2&#xff0e;Elastic Stack2.1 简介2.2 特色2.3 组件介绍 3&#xff0e;Elasticsearch3.1 搜索是什么3.2 数据库搜索3.3 全文检索3.4 倒排索引3.5 Lucene3.6 Elasticsearch3.6.1 Elasticsearch的功能3.6.2 Elasticsearch使…

【uniapp】样式合集

1、修改uni-data-checkbox多选框的样式为单选框的样式 我原先是用的单选&#xff0c;但是单选并不支持选中后&#xff0c;再次点击取消选中&#xff1b;所以我改成了多选&#xff0c;然后改变多选样式&#xff0c;让他看起来像单选 在所在使用的页面上修改样式即可 <uni-d…

Android Gradle 骚操作,将两个项目合并到一个项目中

1. 前言 在工作中&#xff0c;由于各种原因&#xff0c;导致需要将两个可单独运行的App项目&#xff0c;合并到一个git仓库里&#xff0c;且单独的App项目里还有其他Module模块。 如果只是将两个项目复制到同一个文件夹下&#xff0c;还是得单独打开各个项目&#xff0c;是很不…

CCL 2023 电信网络诈骗案件分类评测-第一名方案

1 任务内容 1.1 任务背景 2022年12月1日起&#xff0c;新出台的《反电信网络诈骗犯罪法》正式施行&#xff0c;表明了我国治理当前电信网络诈骗乱象的决心。诈骗案件分类问题是打击电信网路诈骗犯罪过程中的关键一环&#xff0c;根据不同的诈骗方式、手法等将其分类&#xff…

Leetcode每日一题:141. 环形链表、142. 环形链表 II、143. 重排链表(2023.7.29、30、31 C++)

目录 141. 环形链表 问题描述&#xff1a; 实现代码与解析&#xff1a; 快慢指针&#xff1a; 原理思路&#xff1a; 142. 环形链表 II 问题描述&#xff1a; 实现代码与解析&#xff1a; 快慢指针 原理思路&#xff1a; 143. 重排链表 题目描述&#xff1a; 实现…