【YOLO5 项目实战】(6)YOLO5+StrongSORT 目标追踪

news2024/9/19 10:06:17

欢迎关注『youcans动手学模型』系列
本专栏内容和资源同步到 GitHub/youcans
【YOLO5 项目实战】(1)YOLO5 环境配置与检测
【YOLO5 项目实战】(2)使用自己的数据集训练目标检测模型


【YOLO5 项目实战】(6)YOLO5+StrongSORT 目标追踪

    • 1. 目标追踪任务
      • 1.1 目标追踪任务的一般步骤
      • 1.2 单目标跟踪算法
      • 1.3 DeepSORT 多目标跟踪算法
      • 1.4 StrongSORT 多目标跟踪算法
    • 2. YOLOv5_StrongSORT 安装与配置
      • 2.1 YOLOv5_StrongSORT 简介
      • 2.2 下载 YOLOv5_StrongSORT
      • 2.3 安装项目依赖
    • 3. YOLO5_StrongSORT 目标追踪
      • 3.1 运行帮助
      • 3.2 运行推理(目标追踪)

上节介绍 YOLOv5 目标检测任务,本节详细介绍 YOLOv5 + StrongSORT 算法目标追踪任务。

YOLOv5_StrongSORT 是一个基于 YOLOv5 的两阶段目标追踪算法,用于实现视频中的目标检测和追踪。先使用 Yolov5 模型逐帧进行目标检测,再使用 StrongSORT 对目标检测结果进行匹配来实现目标跟踪。可以帮助用户快速地在本地或者云端上实现视频目标检测和跟踪。


1. 目标追踪任务

目标检测任务要求识别图像或视频中的特定对通过在目标周围绘制边界框(Bounding Box)来标记目标位置。

目标追踪任务在目标检测任务的基础上,要求从视频序列中连续地跟踪特定目标的运动轨迹。目标追踪任务不仅要从图像中检测目标位置,还要在时间上保持目标的一致性。

目标追踪的应用非常广泛,例如视频监控、自动驾驶、视频分析、虚拟现实等。


1.1 目标追踪任务的一般步骤

  1. 目标初始化:首先要在视频序列的第一帧中检测和识别目标,并为目标分配唯一的ID。

  2. 目标预测:在之后的视频帧中,目标追踪算法会使用目标在上一帧中的位置和运动信息,对目标在当前帧的位置进行预测。

  3. 目标检测:使用目标检测或特征匹配技术检测当前帧中的目标位置。常用方法有区域匹配、相关滤波器、深度学习。

  4. 目标关联:检测到当前帧中的目标位置以后,要将其与之前帧中的目标进行关联,以保持目标的一致性。

  5. 后处理: 通过滤波或者平滑处理,可以减少噪声或者不稳定性,并提高追踪的准确性和稳定性。


1.2 单目标跟踪算法

  • MedianFlow: 基于KLT(Kanade-Lucas-Tomasi)光流和匹配的简单单目标跟踪器。
  • KCF(Kernelized Correlation Filters): 使用核相关滤波器来实现快速的单目标跟踪。
  • TLD(Tracking-Learning-Detection): 结合目标检测和跟踪,能够在目标丢失时重新检测目标。
  • MIL(Multi Instance Learning): 采用多实例学习方法跟踪目标。

1.3 DeepSORT 多目标跟踪算法

  • SORT(Simple Online and Real Time Tracking): 在多目标跟踪中,通过卡尔曼滤波和匈牙利算法进行目标关联。

  • DeepSORT(Deep Learning-based SORT)算法是基于深度学习的多目标跟踪算法, 在SORT的基础上加入深度学习特征,提高目标关联的准确性和鲁棒性。主要步骤如下:
    (1)目标检测:在每一帧中,使用目标检测算法(如YOLO、Faster R-CNN、SSD等)来检测图像中的目标,并得到目标的边界框(bounding box)和类别信息。
    (2)边界框预测:使用卡尔曼滤波器对检测到的对象进行边界框预测,生成未来的位置估计。
    (3)深度外观描述符:对于每个检测到的目标,使用预训练的深度学习模型(如ResNet、MobileNet等)来提取目标区域的特征向量。这些特征向量能够表示目标的语义信息和视觉特征。
    (4)IOU匹配:使用IOU计算检测到的边界框与预测边界框的相似度,进行匹配。
    (5)级联匹配:在时间维度上进行级联匹配,确保长时间的对象跟踪稳定性。
    (6)结果输出:结合卡尔曼滤波和深度外观描述符的结果,生成最终的对象跟踪结果。


1.4 StrongSORT 多目标跟踪算法

StrongSORT 算法在 DeepSORT的基础上进行改进,通过在特征提取、运动信息处理和成本矩阵计算等方面的改进,提高了多目标跟踪的性能。StrongSORT++则通过引入AFLink和GSI技术,进一步优化了跟踪的准确性和鲁棒性。这些改进使得StrongSORT能够在复杂的场景中更有效地处理遮挡、目标丢失和重新出现等问题,从而实现最先进的跟踪性能(SOTA)。

StrongSORT 算法对 DeepSORT 的主要改进包括:
(1)BoT(Bag of Tricks): 改进了外观特征提取器,它使用深度学习技术来提取目标的视觉特征,这些特征对于区分和识别不同的目标至关重要。
(2)EMA(Exponential Moving Average): 通过引入惯性项来平滑特征更新,EMA有助于减少噪声和异常值的影响,使得跟踪更加稳定。
(3)NSA(Neural Network-based Appearance): 这是一种用于非线性运动的卡尔曼滤波器,它通过神经网络来预测目标的状态,以适应更复杂的运动模式。
(4)MC(Motion Compensation): 包括运动信息的成本矩阵,这有助于在匹配过程中更好地考虑目标的运动信息,提高匹配的准确性。
(5)ECC(External Camera Calibration): 摄像机运动更正,它允许算法校正摄像机的外部参数,从而提高跟踪的准确性。
(6)woC(Without Cascading): 不采用级联算法,这可能意味着算法避免了在不同阶段使用不同复杂度的检测器,从而提高了处理速度。

StrongSORT++是StrongSORT的一个变体,它进一步引入了:
(1)AFLink(Association Graph Linking): 这是一种仅使用运动信息的全局链接方法,它在离线处理阶段用于改进跟踪结果。
(2)GSI(Gaussian Process-based Interpolation): 通过高斯过程对检测误差进行内插,这是一种后处理技术,用于进一步提高跟踪的精度。

StrongSORT 下载地址:
论文地址:https://arxiv.org/abs/2202.13514
代码地址:https://github.com/dyhBUPT/StrongSORT

在这里插入图片描述


2. YOLOv5_StrongSORT 安装与配置

2.1 YOLOv5_StrongSORT 简介

YOLOv5_StrongSORT 是一个基于 YOLOv5 的两阶段目标追踪算法,用于实现视频中的目标检测和追踪。

  • 先使用 YOLOv5/YOLOv7/YOLOv8 作为目标检测器,逐帧进行目标检测,具有很高的检测速度和精度。

  • 再使用 StrongSORT追踪算法,利用OSNet模型进行特征匹配,实现对视频中物体的精准识别和稳定跟踪。

    • StrongSORT模块通过结合运动信息和外观特征,增强了物体在帧间的连续性,即便是在快速移动或遮挡的情况下也能保持良好的跟踪效果。
    • OSNet行人重识别模型是深层特征提取网络,确保了对个体身份的准确识别,即使在光照变化和姿态变换等条件下也是如此。

2.2 下载 YOLOv5_StrongSORT

项目下载地址:

  • 原始项目地址:Github-Yolov5_StrongSORT_OSNet
  • 推荐下载地址:Github-StrongSORT-YOLO

方法一:克隆 repo。

git clone https://github.com/bharath5673/StrongSORT-YOLO

方法二:直接从 GitHub 网页下载压缩文件,如下图所示。
解压到 Python 项目文件夹,如"C:\Python|PythonProjects\YOLOv5_StrongSORT"。

注意:直接下载 zip 压缩包,可能会缺一些模块。这是因为项目中包含的子项目往往是一个链接,并没有直接放到本项目中管理维护,所以下载的 压缩包并不包含子项目的源码。

  1. 默认 yolov5文件夹下内容是空的,需要点击编号(yolov5@******)下载yolov5源码放在yolov5目录下。
  2. 如果从原始项目地址 [Github-Yolov5_StrongSORT_OSNet] 下载,strong_sort/deep/reid 目录也是空的,需要另外下载 torchreid 并放到 strong_sort/deep/reid。如果从推荐下载地址[Github-StrongSORT-YOLO] 下载,则 strong_sort/deep/reid 目录中已经包括 torchreid,无需另外下载。

在这里插入图片描述

在下载的 YOLOv5 项目中,包括了项目说明文档:Readme.md。

在这里插入图片描述


2.3 安装项目依赖

本项目中的 requirements.txt 文件已经详细列出了所需的库及版本。

# pip install -r requirements.txt

# base ----------------------------------------

matplotlib>=3.2.2
numpy>=1.18.5
opencv-python>=4.1.2
Pillow>=7.1.2
PyYAML>=5.3.1
requests>=2.23.0
scipy>=1.4.1
torch>=1.7.0
torchvision>=0.8.1
tqdm>=4.41.0

# plotting ------------------------------------

pandas>=1.1.4
seaborn>=0.11.0

# deep_sort -----------------------------------

easydict

# torchreid

Cython
h5py
six
tb-nightly
future
yacs
gdown
flake8
yapf
isort==4.3.21
imageio

可以在 Pycharm 的控制台(terminal),输入脚本指令来安装所需的库。

也可以通过 Anaconda 或 Miniconda 来安装,注意要安装到所选择的 Python 环境。


3. YOLO5_StrongSORT 目标追踪

3.1 运行帮助

在 Github-StrongSORT-YOLO 项目中提供了 YOLOv5 和 YOLOv7 两种检测器。本文只讨论使用 YOLOv5 检测器。

从控制台运行 track_v5.py 查看帮助:

python track_v5.py -h

(torch) PS C:\Python\PythonProjects\YOLOv5_StrongSORT> python .\track_v5.py -h
usage: track_v5.py [-h] [--yolo-weights YOLO_WEIGHTS [YOLO_WEIGHTS ...]] [--strong-sort-weights STRONG_SORT_WEIGHTS] [--config-strongsort CONFIG_STRONGSORT] [--source SOURCE] [--imgsz IMGSZ [IMGSZ ...]]
                   [--conf-thres CONF_THRES] [--iou-thres IOU_THRES] [--max-det MAX_DET] [--device DEVICE] [--show-vid] [--save-txt] [--save-conf] [--save-crop] [--save-vid] [--nosave] [--count] [--draw]
                   [--classes CLASSES [CLASSES ...]] [--agnostic-nms] [--augment] [--visualize] [--update] [--project PROJECT] [--name NAME] [--exist-ok] [--line-thickness LINE_THICKNESS] [--hide-labels] [--hide-conf]
                   [--hide-class] [--half] [--dnn]

optional arguments:
  -h, --help            show this help message and exit
  --yolo-weights YOLO_WEIGHTS [YOLO_WEIGHTS ...]
                        model.pt path(s)
  --strong-sort-weights STRONG_SORT_WEIGHTS
  --config-strongsort CONFIG_STRONGSORT
  --source SOURCE       file/dir/URL/glob, 0 for webcam
  --imgsz IMGSZ [IMGSZ ...], --img IMGSZ [IMGSZ ...], --img-size IMGSZ [IMGSZ ...]
                        inference size h,w
  --conf-thres CONF_THRES
                        confidence threshold
  --iou-thres IOU_THRES
                        NMS IoU threshold
  --max-det MAX_DET     maximum detections per image
  --device DEVICE       cuda device, i.e. 0 or 0,1,2,3 or cpu
  --show-vid            display tracking video results
  --save-txt            save results to *.txt
  --save-conf           save confidences in --save-txt labels
  --save-crop           save cropped prediction boxes
  --save-vid            save video tracking results
  --nosave              do not save images/videos
  --count               display all MOT counts results on screen
  --draw                display object trajectory lines
  --classes CLASSES [CLASSES ...]
                        filter by class: --classes 0, or --classes 0 2 3
  --agnostic-nms        class-agnostic NMS
  --augment             augmented inference
  --visualize           visualize features
  --update              update all models
  --project PROJECT     save results to project/name
  --name NAME           save results to project/name
  --exist-ok            existing project/name ok, do not increment
  --line-thickness LINE_THICKNESS
                        bounding box thickness (pixels)
  --hide-labels         hide labels
  --hide-conf           hide confidences
  --hide-class          hide IDs
  --half                use FP16 half-precision inference
  --dnn                 use OpenCV DNN for ONNX inference

其中:

[–yolo-weights] 用于指定YOLOv5 权重文件的路径,默认路径为:‘weights/yolov5n.pt’
[–strong-sort-weights] 用于指定OSNet权重文件的路径,默认路径为:‘weights/osnet_x0_25_msmt17.pt’
[–config-strongsort] 用于指定StrongSort配置文件的路径,默认路径为:‘strong_sort/configs/strong_sort.yaml’
[–source] 用于指定输入视频文件的路径,默认路径为:‘inference/images…’
[–output OUTPUT] 用于指定输出结果文件的路径,默认路径为:‘inference/output’
[–save-vid] 用于指定是否保存跟踪结果视频文件
[–classes] 用于指定跟踪类别

track_v5.py 默认不保存视频,只能在控制台查看输出结果。如果要保存视频,可以指定–save-vid参数,使用命令 python track_v5.py --save-vid。


3.2 运行推理(目标追踪)

将测试视频保存在文件夹 ‘inference/images/test_person.mp4’,YOLOv5 权重文件保存在文件夹 ‘weights/yolov5n.pt’,OSNet权重文件保存在‘weights/osnet_x0_25_msmt17.pt’。

从控制台运行 track.py 对测试视频进行目标追踪:

python track_v5.py --source ‘inference/images/test_person.mp4’ --save-vid

运行结果如下:

(torch) PS C:\Python\PythonProjects\YOLOv5_StrongSORT> python track_v5.py --source 'inference/images/test_person.mp4' --save-vid
track_v5: yolo_weights=C:\Python\PythonProjects\YOLOv5_StrongSORT\weights\yolov5n.pt, strong_sort_weights=C:\Python\PythonProjects\YOLOv5_StrongSORT\weights\osnet_x0_25_msmt17.pt, config_strongsort=strong_sort/configs/strong_sort.yaml, source=inference/images/test_person.mp4, imgsz=[640, 640], conf_thres=0.5, iou_thres=0.5, max_det=1000, device=, show_vid=False, save_txt=False, save_conf=False, save_crop=False, save_vid=True, nosave=False, count=False, draw=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=inference\images, name=exp, exist_ok=False, line_thickness=2, hide_labels=False, hide_conf=False, hide_class=False, half=False, dnn=False
YOLOv5  2024-8-21 Python-3.8.19 torch-2.3.1+cu121 CUDA:0 (NVIDIA GeForce RTX 3060, 12288MiB)

Fusing layers... 
YOLOv5n summary: 213 layers, 1867405 parameters, 0 gradients, 4.5 GFLOPs
Model: osnet_x0_25
- params: 203,568
- flops: 82,316,000
Successfully loaded pretrained weights from "C:\Python\PythonProjects\YOLOv5_StrongSORT\weights\osnet_x0_25_msmt17.pt"
** The following layers are discarded due to unmatched keys or layer size: ['classifier.weight', 'classifier.bias']
video 1/1 (1/443) C:\Python\PythonProjects\YOLOv5_StrongSORT\inference\images\test_person.mp4: 384x640 12 persons, 1 bicycle, Done. YOLO:(0.062s), StrongSORT:(0.049s)
video 1/1 (2/443) C:\Python\PythonProjects\YOLOv5_StrongSORT\inference\images\test_person.mp4: 384x640 12 persons, 2 bicycles, Done. YOLO:(0.016s), StrongSORT:(0.062s)

...
video 1/1 (443/443) C:\Python\PythonProjects\YOLOv5_StrongSORT\inference\images\test_person.mp4: 384x640 13 persons, Done. YOLO:(0.009s), StrongSORT:(0.044s)
Speed: 1.2ms pre-process, 10.1ms inference, 1.3ms NMS, 36.5ms strong sort update per image at shape (1, 3, 640, 640)
Results saved to inference\images\exp


目标追踪结果如下图所示,追踪视频默认保存在文件夹 ‘inference/images/exp/test_person.mp4’。

在这里插入图片描述

如果要获得追踪结果的数据文件,可以在运行 track.py 时加入 “–save-txt” 选项:

python track_v5.py --source ‘inference/images/test_person.mp4’ --save-vid --save-txt

就可以得到 追踪结果数据文件 ‘inference/images/exp/test_person. txt’。,内容如下。

3 0 1 245 794 113 280 -1 -1 -1 -1 
3 0 2 799 235 66 188 -1 -1 -1 -1 
3 0 3 1648 116 68 167 -1 -1 -1 -1 
...
443 0 48 278 590 107 256 -1 -1 -1 -1 
443 0 49 1410 840 137 239 -1 -1 -1 -1 

追踪结果数据文件的每行有 10列数据,依次是:帧序号 frame_idx, 目标序号 identity, 边界框参数 bbox_left, bbox_top, bbox_w, bbox_h, 和标志位 -1, -1, -1, -1。


【本节完】


版权声明:
欢迎关注『youcans动手学模型』系列
转发请注明原文链接:
【YOLO5 项目实战】(6)YOLO5+StrongSORT 目标追踪
Copyright 2024 youcans, XUPT
Crated:2024-08-21


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库机器上停service360safe

发现有个数据库的负载较高,发现有360safe,就准备停了该服务再观察 [rootdb1 ~]# ps -ef |grep 360 root 970 1 0 15:12 ? 00:00:10 /opt/360safe/360entclient root 976 970 5 15:12 ? 00:18:42 /opt/360…

Linux之RabbitMQ集群部署

RabbitMQ 消息中间件 1、消息中间件 消息(message): 指在服务之间传送的数据。可以是简单的文本消息,也可以是包含复杂的嵌入对象的消息 消息队列(message queue): 指用来存放消息的队列,一般采用先进先出的队列方式,即最先进入的…

关于springboot的异常处理以及源码分析(一)

一、什么是异常处理 1、文档定义 首先我们先来看springboot官方对于异常处理的定义。springboot异常处理 在文档的描述中,我们首先可以看到的一个介绍如下: By default, Spring Boot provides an /error mapping that handles all errors in a sensib…

优思学院|如何在30分钟内评审一家供应商?SQE必需知道的11点

在供应商评审中,特别是时间有限的情况下,SQE(供应商质量工程师)需要通过高效的观察和分析来快速评估供应商的能力。在《哈佛商业评论》中,R. Eugene Goodson 的一篇“Read a Plant—Fast”文章正好提供了一个极为实用的…

python实现指数平滑法进行时间序列预测

python实现指数平滑法进行时间序列预测 一、指数平滑法定义 1、指数平滑法是一种常用的时间序列预测算法,有一次、二次和三次平滑,通过加权系数来调整历史数据权重; 2、主要思想是:预测值是以前观测值的加权和,且对不同的数据给予不同的权数,新数据给予较大的权数,旧数…

基于x86 平台opencv的图像采集和seetaface6的人脸识别功能

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 配置资源文件3.2 验证功能一、概述 本文档是针对x86 平台opencv的图像采集和seetaface6的人脸识别功能,opencv通过读取本地图像,将采集的本地图像送给seetaface6的人脸识别模块从而实现人脸识…

FreeRTOS学习笔记(四)——延时函数,列表,软件定时器,低功耗模式,内存管理

FreeRTOS学习笔记(四)——延时函数,列表,软件定时器,低功耗模式,内存管理 文章目录 FreeRTOS学习笔记(四)——延时函数,列表,软件定时器,低功耗模…

尚硅谷Java面试题第四季-MySQL面试题

1.如何建立复合索引,一般加在哪些字段?建索引的理论依据或者经验 2.Innodb的行锁到底锁了什么? 结论: InnoDB的行锁,是通过锁住索引来实现的,如果加锁查询的时候没有使用到索引,会将整个聚簇索引都锁住&am…

【python报错已解决】`Traceback (most recent call last)`

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言 你是否在运行Python程序时遇到了Traceback (most recent call last)的错误?这个错误通常表明你的程序中有一个…

为什么大负载通电瞬间电压跌落,前级MOS开关如何设计

文章目录 1.1 前言1.2 简单典型电路1.3 分析优劣性1.4 优化后的开关电路1.5 具体原理分析1.6 实验验证效果1.7 适用应用场景 1.1 前言 电子产品设计电路某负载需要断电省下或异常下电复位,这时候会考虑在负载供电前端增加一个开关对其进行供电做控制,典…

超声波模块HC_SR04(hal库)

超声波模块HC_SR04 原理 1.触发信号:拉高至少10us的高电平 2.回响信号处理:计算高电平时长 3.计算距离:时间*速度(声速)/2(注意单位问题) 代码实现 方法1.下拉输入 配置 用于延时微秒us和…

第四届机械制造与智能控制国际学术会议(ICMMIC 2024)

目录 重要信息 大会介绍 主办单位 协办单位 大会主席 主讲嘉宾 征稿主题 会议日程 参会方式 重要信息 会议时间:2024年9月27-29日 大会官网:www.icmmic.com(点击查看,大会信息,报名,投稿&#x…

【数据结构初阶】单链表接口实现超详解

文章目录 1. 顺序表问题与思考2.单链表2. 1 概念与结构2.1.1 结点2.1.2 链表的性质 3. 单链表实现3. 1 单链表初始化3. 2 单链表的打印3. 3 头插3. 4 创建新节点3. 5 尾插3. 6 头删和尾删3. 7 查找3. 8 在指定位置之后插入或删除3. 9 在指定位置前面插入或删除指定位置3. 10 销…

推荐一款好用的mac解压缩软件

文章目录 介绍软件功能安装下载使用注意事项1.打开系统设置选择隐私与安全性2.点击添加扩展3.勾选访达扩展 小结 介绍 FastZip for Mac集压缩、解压、预览、加密压缩、分卷压缩、固实压缩、右键压缩解压、多线程压缩等功能于一体,绝佳的设计、便捷的操作&#xff0…

设计师AI神器!AnyDesign,一张照片加简单描述就可以编辑时尚图像!

在AI时代很多行业都被颠覆了,建议大家在业余时间也尽量多学习一些AI工具的使用,提高效率的同时也去探索更多好玩的应用。 今天给大家介绍一个非常好用的图像编辑方法-AnyDesign,适合时尚设计师以及普通用户使用的,可以让你能够更…

Python编程:从入门到实践书籍介绍

对于Python入门的书籍推荐,以下是五本详细讲解的书籍,它们各自具有不同的特点和适用对象: 1. 《Python编程:从入门到实践》 作者:埃里克马瑟斯(Eric Matthes)《Python编程:从入门到实践》是一本经典的Pyth…

C#实现数据采集系统-数据反写(1)MQTT订阅接收消息

C#实现数据采集系统-数据反写 实现步骤 MQTT订阅,接收消息反写内容写入通信类,添加到写入队列中 链接-消息内容处理和写入通信类队列实现Modbustcp通信写入 具体实现 1.MQTT订阅,接收消息 Mqtt实现采集数据转发 Mqtt控制类增加订阅方法…

【微信小程序】使用 npm 包 - Vant Weapp --定制主题

小程序对 npm 的支持与限制 1. 什么是 Vant Weapp 官方文档地址 :https://youzan.github.io/vant-weapp 2. 安装 Vant 组件库 详细的操作步骤,大家可以参考 Vant 官方提供的快速上手教程: https://youzan.github.io/vant-weapp/#/quickst…

Texio电源维修德士直流电源维修PSW-1080M160

Texio德士电源维修类型有:指针式小型直流电源、数字显示直流电源、多路输出直流电源、直流电源、相控电源、低噪声开关电源、宽幅电源、高电压宽幅电源、开关电源、超薄直流电源、4象限双电源、高电压直流电源 Texio电源维修常见系列如下 PSW-系列是一款单路输出、…

框架——Mybatis(!!!MyBatis 环境搭建步骤)

目录 一、Mybatis 概述 1.背景 2.简介 3.Mybatis 中文官网 二、MyBatis 环境搭建(超全!!!) 1.创建一张表和表对应的实体类 2.导入 MyBatis jar包,mysql数据库驱动包 3.创建 MyBatis全局配置文件 4. 在接口中…