人體關鍵點檢測2:Pytorch實現人體關鍵點檢測(人體姿勢估計)含訓練代碼

人體關鍵點檢測2:Pytorch實現人體關鍵點檢測(人體姿勢估計)含訓練代碼

目錄

人體關鍵點檢測2:Pytorch實現人體關鍵點檢測(人體姿勢估計)含訓練代碼

1. 前言

2.人體關鍵點檢測方法

(1)Top-Down(自上而下)方法

(2)Bottom-Up(自下而上)方法:

3.人體關鍵點檢測數據集

4.人體檢測模型訓練

5.人體關鍵點檢測模型訓練

(1)項目安裝

(2)準備Train和Test數據

(3)配置文件configs

(4)開始訓練

(5)Tensorboard可視化訓練過程

6.人體關鍵點檢測檢測模型效果

7.人體關鍵點檢測(推理代碼)下載

8.人體關鍵點檢測(訓練代碼)下載

9.人體關鍵點檢測C++/Android版本


1. 前言

人體關鍵點檢測(Human Keypoints Detection)又稱為人體姿態估計2D Pose,是計算機視覺中一個相對基礎的任務,是人體動作識別、行為分析、人機交互等的前置任務。一般情況下可以將人體關鍵點檢測細分為單人/多人關鍵點檢測、2D/3D關鍵點檢測,同時有算法在完成關鍵點檢測之后還會進行關鍵點的跟蹤,也被稱為人體姿態跟蹤。

本項目將實現人體關鍵點檢測算法,其中使用YOLOv5模型實現人體檢測(Person Detection),使用HRNet,LiteHRNet和Mobilenet-v2模型實現人體關鍵點檢測。項目分為數據集說明,模型訓練C++/Android部署等多個章節,本篇是項目《人體關鍵點檢測(人體姿勢估計)》系列文章之Pytorch實現人體關鍵點檢測(人體姿勢估計);為了方便后續模型工程化和Android平臺部署,項目支持高精度HRNet檢測模型,輕量化模型LiteHRNet和Mobilenet模型訓練和測試,并提供Python/C++/Android多個版本;

輕量化Mobilenet-v2模型在普通Android手機上可以達到實時的檢測效果,CPU(4線程)約50ms左右,GPU約30ms左右 ,基本滿足業務的性能需求。下表格給出HRNet,以及輕量化模型LiteHRNet和Mobilenet的計算量和參數量,以及其檢測精度

模型input-sizeparams(M)GFLOPsAP
HRNet-w32192×25628.48M5734.05M0.7585
LiteHRNet18192×2561.10M182.15M0.6237
Mobilenet-v2192×2562.63M529.25M0.6181

先展示一下人體關鍵點檢測效果:

Android人體關鍵點檢測APP Demo體驗(下載):https://download.csdn.net/download/guyuealian/88610359

【尊重原創,轉載請注明出處】https://blog.csdn.net/guyuealian/article/details/134837816


更多項目《人體關鍵點檢測(人體姿勢估計)》系列文章請參考:

  • 人體關鍵點檢測1:人體姿勢估計數據集(含下載鏈接)?https://blog.csdn.net/guyuealian/article/details/134703548
  • 人體關鍵點檢測2:Pytorch實現人體關鍵點檢測(人體姿勢估計)含訓練代碼和數據集?https://blog.csdn.net/guyuealian/article/details/134837816
  • 人體關鍵點檢測3:Android實現人體關鍵點檢測(人體姿勢估計)含源碼 可實時檢測?https://blog.csdn.net/guyuealian/article/details/134881797
  • 人體關鍵點檢測4:C/C++實現人體關鍵點檢測(人體姿勢估計)含源碼 可實時檢測?https://blog.csdn.net/guyuealian/article/details/134881797
  • 手部關鍵點檢測1:手部關鍵點(手部姿勢估計)數據集(含下載鏈接)https://blog.csdn.net/guyuealian/article/details/133277630
  • 手部關鍵點檢測2:YOLOv5實現手部檢測(含訓練代碼和數據集)https://blog.csdn.net/guyuealian/article/details/133279222
  • 手部關鍵點檢測3:Pytorch實現手部關鍵點檢測(手部姿勢估計)含訓練代碼和數據集https://blog.csdn.net/guyuealian/article/details/133277726
  • 手部關鍵點檢測4:Android實現手部關鍵點檢測(手部姿勢估計)含源碼 可實時檢測https://blog.csdn.net/guyuealian/article/details/133931698
  • 手部關鍵點檢測5:C++實現手部關鍵點檢測(手部姿勢估計)含源碼 可實時檢測https://blog.csdn.net/guyuealian/article/details/133277748

??


2.人體關鍵點檢測方法

目前主流的人體關鍵點檢測(人體姿勢估計)方法主要兩種:一種是Top-Down(自上而下)方法,另外一種是Bottom-Up(自下而上)方法;

(1)Top-Down(自上而下)方法

將人體檢測和人體關鍵點檢測(人體姿勢估計)檢測分離,在圖像上首先進行人體目標檢測,定位人體位置;然后crop每一個人體圖像,再估計人體關鍵點;這類方法往往比較慢,但姿態估計準確度較高。目前主流模型主要有CPN,Hourglass,CPM,Alpha Pose,HRNet等。

(2)Bottom-Up(自下而上)方法:

先估計圖像中所有人體關鍵點,然后在通過Grouping的方法組合成一個一個實例;因此這類方法在測試推斷的時候往往更快速,準確度稍低。典型就是COCO2016年人體關鍵點檢測冠軍Open Pose。

通常來說,Top-Down具有更高的精度,而Bottom-Up具有更快的速度;就目前調研而言,?Top-Down的方法研究較多,精度也比Bottom-Up(自下而上)方法高。本項目采用Top-Down(自上而下)方法,先使用YOLOv5模型實現人體檢測,然后再使用HRNet進行人體關鍵點檢測(人體姿勢估計);

本項目基于開源的HRNet進行改進,關于HRNet項目請參考GitHub

HRNet: https://github.com/leoxiaobin/deep-high-resolution-net.pytorch


3.人體關鍵點檢測數據集

本項目主要使用COCO數據集和MPII數據集,關于人體關鍵點檢測數據集說明,請參考《人體關鍵點檢測1:人體姿勢估計數據集》https://blog.csdn.net/guyuealian/article/details/134703548


4.人體檢測模型訓練

本項目采用Top-Down(自上而下)方法,使用YOLOv5模型實現人體目標檢測,使用HRNet進行人體關鍵點檢測(人體姿勢估計);關于人體檢測模型訓練方法,可參考 :

行人檢測(人體檢測)2:YOLOv5實現人體檢測(含人體檢測數據集和訓練代碼)


5.人體關鍵點檢測模型訓練

?整套工程項目基本結構如下:

.
├── configs              # 訓練配置文件
├── data                 # 一些數據
├── libs                 # 一些工具庫
├── pose                 # 姿態估計模型文件
├── work_space           # 訓練輸出工作目錄
├── demo.py              # 模型推理demo文件
├── README.md            # 項目工程說明文檔
├── requirements.txt     # 項目相關依賴包
└── train.py             # 訓練文件

(1)項目安裝

推薦使用Python3.8或Python3.7,更高版本可能存在版本差異問題,項目依賴python包請參考requirements.txt,使用pip安裝即可,項目代碼都在Ubuntu系統和Windows系統驗證正常運行,請放心使用;若出現異常,大概率是相關依賴包版本沒有完全對應

numpy==1.21.6
matplotlib==3.2.2
Pillow==8.4.0
bcolz==1.2.1
easydict==1.9
onnx==1.8.1
onnx-simplifier==0.2.28
onnxoptimizer==0.2.0
onnxruntime==1.6.0
opencv-contrib-python==4.5.2.52
opencv-python==4.5.1.48
pandas==1.1.5
PyYAML==5.3.1
scikit-image==0.17.2
scikit-learn==0.24.0
scipy==1.5.4
seaborn==0.11.2
sklearn==0.0
tensorboard==2.5.0
tensorboardX==2.1
torch==1.7.1+cu110
torchvision==0.8.2+cu110
tqdm==4.55.1
xmltodict==0.12.0
pycocotools==2.0.2
pybaseutils==0.9.4
basetrainer

項目安裝教程請參考(初學者入門,麻煩先看完下面教程,配置好Python開發環境):

  • 推薦使用Python3.8或Python3.7,更高版本可能存在版本差異問題
  • 項目開發使用教程和常見問題和解決方法
  • 視頻教程:1 手把手教你安裝CUDA和cuDNN(1)
  • 視頻教程:2 手把手教你安裝CUDA和cuDNN(2)
  • 視頻教程:3 如何用Anaconda創建pycharm環境
  • 視頻教程:4 如何在pycharm中使用Anaconda創建的python環境

(2)準備Train和Test數據

下載COCO數據集或者MPII數據集(建議使用COCO數據集),然后:

  • COCO數據集下載并解壓到本地,存儲目錄結構參考如下(原始圖片目錄和標注信息文件在同一級目錄)
─── COCO├── train2017│?? ├── images                           # COCO訓練集原始圖片目錄│?? └── person_keypoints_train2017.json  # COCO訓練集標注信息文件└── val2017├── images                           # COCO驗證集原始圖片目錄└── person_keypoints_val2017.json    # COCO驗證集標注信息文件
  • MPII數據集下載并解壓到本地,存儲目錄結構參考如下
─── MPII├── images      # MPII數據集原始圖片目錄├── train.json  # MPII訓練集標注信息文件└── valid.json  # MPII訓練集標注信息文件

(3)配置文件configs

項目支持HRNet以及輕量化模型LiteHRNet和Mobilenet模型訓練,并提供對應的配置文件;你需要修改對應配置文件的數據路徑;本篇以訓練HRNet-w32為例子,其配置文件在configs/coco/hrnet/w32_adam_192_192.yaml,修改該文件的訓練數據集路徑TRAIN_FILE(支持多個數據集訓練)和測試數據集TEST_FILE的數據路徑為你本地數據路徑,其他參數保持默認即可,如下所示:

WORKERS: 8
PRINT_FREQ: 10
DATASET:DATASET: 'custom_coco'TRAIN_FILE:- 'D:/COCO/train2017/person_keypoints_train2017.json'TEST_FILE: 'D:/COCO/val2017/person_keypoints_val2017.json'FLIP: trueROT_FACTOR: 45SCALE_FACTOR: 0.3SCALE_RATE: 1.25JOINT_IDS: [0,1]FLIP_PAIRS: [ ]SKELETON: [ ]

配置文件的一些參數說明,請參考

參數類型參考值說明
WORKERSint8數據加載處理的進程數
PRINT_FREQint10打印LOG信息的間隔
DATASETstrcustom_coco數據集類型,目前僅支持COCO數據格式
TRAIN_FILEList-訓練數據集文件列表(COCO數據格式),支持多個數據集
TEST_FILEstring-測試數據集文件(COCO數據格式),僅支持單個數據集
FLIPboolTrue是否翻轉圖片進行測試,可提高測試效果
ROT_FACTORfloat45訓練數據隨機旋轉的最大角度,用于數據增強
SCALE_FACTORfloat1.25圖像縮放比例因子
SCALE_RATEfloat0.25圖像縮放率
JOINT_IDSlist[ ][ ]表示所有關鍵點,也可以指定需要訓練的關鍵點序號ID
FLIP_PAIRSlist[ ]圖像翻轉時,關鍵點不受翻轉影響的ID號
SKELETONlist[ ]關鍵點連接線的序列列表,用于可視化效果

(4)開始訓練

修改好配置文件后,就可以開始準備訓練了:

  • 訓練高精度模型HRNet-w48或者HRNet-w32
# 高精度模型:HRNet-w32
python train.py  -c "configs/coco/hrnet/w48_adam_192_192.yaml" --workers=8 --batch_size=32 --gpu_id=0 --work_dir="work_space/person"
# 高精度模型:HRNet-w48
python train.py  -c "configs/coco/hrnet/w32_adam_192_192.yaml" --workers=8 --batch_size=32 --gpu_id=0 --work_dir="work_space/person"
  • 訓練輕量化模型LiteHRNet
# 輕量化模型:LiteHRNet
python train.py  -c "configs/coco/litehrnet/litehrnet18_192_192.yaml" --workers=8 --batch_size=32 --gpu_id=0 --work_dir="work_space/person"
  • 訓練輕量化模型Mobilenetv2
# 輕量化模型:Mobilenet
python train.py  -c "configs/coco/mobilenet/mobilenetv2_192_192.yaml" --workers=8 --batch_size=32 --gpu_id=0 --work_dir="work_space/person"

下表格給出HRNet,以及輕量化模型LiteHRNet和Mobilenet的計算量和參數量,以及其檢測精度AP; 高精度檢測模型HRNet-w32,AP可以達到0.7585,但其參數量和計算量比較大,不合適在移動端部署;LiteHRNet18和Mobilenet-v2參數量和計算量比較少,合適在移動端部署;雖然LiteHRNet18的理論計算量和參數量比Mobilenet-v2低,但在實際測試中,發現Mobilenet-v2運行速度更快。輕量化Mobilenet-v2模型在普通Android手機上可以達到實時的檢測效果,CPU(4線程)約50ms左右,GPU約30ms左右 ,基本滿足業務的性能需求

模型input-sizeparams(M)GFLOPsAP
HRNet-w32192×25628.48M5734.05M0.7585
LiteHRNet18192×2561.10M182.15M0.6237
Mobilenet-v2192×2562.63M529.25M0.6181

(5)Tensorboard可視化訓練過程

訓練過程可視化工具是使用Tensorboard,使用方法,在終端輸入:
# 基本方法
tensorboard --logdir=path/to/log/
# 例如
tensorboard --logdir="work_space/person/hrnet_w32_16_192_256_mpii_20231127_113836_6644/log"

點擊終端TensorBoard打印的鏈接,即可在瀏覽器查看訓練LOG信息等:


6.人體關鍵點檢測檢測模型效果

demo.py文件用于推理和測試模型的效果,填寫好配置文件,模型文件以及測試圖片即可運行測試了;demo.py命令行參數說明如下:

參數類型參考值說明
-c,--config_filestr-配置文件
-m,--model_filestr-模型文件
targetstr-骨骼點類型,如hand,coco_person,mpii_person
image_dirstrdata/image測試圖片的路徑
video_filestr,int-測試的視頻文件
out_dirstroutput保存結果,為空不保存
thresholdfloat0.3關鍵點檢測置信度
devicestrcuda:0GPU ID

下面以運行HRNet-w32為樣例,其他模型修改--config_file或者--model_file即可

  • 測試圖片
python demo.py -c work_space/person/hrnet_w32_17_192_256_custom_coco_20231115_092948_1789/w32_adam_192_192.yaml -m work_space/person/hrnet_w32_17_192_256_custom_coco_20231115_092948_1789/model/best_model_195_0.7585.pth --image_dir data/test_images --out_dir output
  • 測試視頻文件
python demo.py -c work_space/person/hrnet_w32_17_192_256_custom_coco_20231115_092948_1789/w32_adam_192_192.yaml -m work_space/person/hrnet_w32_17_192_256_custom_coco_20231115_092948_1789/model/best_model_195_0.7585.pth --video_file data/video-test.mp4 --out_dir output
  • ?測試攝像頭
python demo.py -c work_space/person/hrnet_w32_17_192_256_custom_coco_20231115_092948_1789/w32_adam_192_192.yaml -m work_space/person/hrnet_w32_17_192_256_custom_coco_20231115_092948_1789/model/best_model_195_0.7585.pth --video_file 0 --out_dir output

項目同時支持MPII數據集格式人體關鍵點檢測

  • 測試圖片(MPII格式的人體關鍵點檢測)
python demo.py -c work_space/person/hrnet_w32_16_192_256_mpii_20231127_113836_6644/w32_adam_192_192.yaml -m work_space/person/hrnet_w32_16_192_256_mpii_20231127_113836_6644/model/best_model_148_89.4041.pth --image_dir data/test_images --out_dir output --target mpii_person

運行效果(支持單人和多人人體關鍵點檢測):


7.人體關鍵點檢測(推理代碼)下載

人體關鍵點檢測推理代碼下載地址:Pytorch實現人體關鍵點檢測(人體姿勢估計)推理代碼

資源內容包含:

  1. 提供YOLOv5人體檢測推理代碼(不包含訓練代碼)
  2. 提供人體關鍵點檢測(人體姿勢估計)推理代碼demo.py(不包含訓練代碼)
  3. 提供高精度版本HRNet人體關鍵點檢測(人體姿勢估計)(不包含訓練代碼)
  4. 提供輕量化模型LiteHRNet,以及Mobilenet-v2人體關鍵點檢測(人體姿勢估計)(不包含訓練代碼)
  5. 提供訓練好的模型:HRNet-w32,LiteHRNet和Mobilenet-v2模型權重文件,配置好環境,可直接運行demo.py
  6. 推理代碼demo.py支持圖片,視頻和攝像頭測試

?如果你需要配套的訓練數據集和訓練代碼,請查看下面部分


8.人體關鍵點檢測(訓練代碼)下載

人體關鍵點檢測訓練代碼下載地址:?

資源內容包含:

  1. 提供YOLOv5人體檢測推理代碼
  2. 提供整套完整的項目工程代碼,包含人體關鍵點檢測(人體姿勢估計)的訓練代碼train.py和推理測試代碼demo.py
  3. 提供高精度版本HRNet人體關鍵點檢測(人體姿勢估計)訓練和測試代碼
  4. 提供輕量化模型LiteHRNet以及Mobilenet-v2人體關鍵點檢測(人體姿勢估計)訓練和測試代碼
  5. 項目代碼支持MPII數據集和COCO數據集人體關鍵點檢測模型訓練和測試
  6. 根據本篇博文說明,簡單配置即可開始訓練:train.py
  7. 提供訓練好的模型:HRNet-w32,LiteHRNet和Mobilenet-v2模型權重文件,配置好環境,可直接運行demo.py
  8. 推理代碼demo.py支持圖片,視頻和攝像頭測試

9.人體關鍵點檢測C++/Android版本

  • 人體關鍵點檢測3:Android實現人體關鍵點檢測(人體姿勢估計)含源碼 可實時檢測?https://blog.csdn.net/guyuealian/article/details/134881797
  • 人體關鍵點檢測4:C/C++實現人體關鍵點檢測(人體姿勢估計)含源碼 可實時檢測?https://blog.csdn.net/guyuealian/article/details/134881797

?Android人體關鍵點檢測APP Demo體驗(下載):https://download.csdn.net/download/guyuealian/88610359?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215492.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215492.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215492.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android - 分區存儲 MediaStore、SAF

官方頁面 參考文章 一、概念 分區存儲(Scoped Storage)的推出是針對 APP 訪問外部存儲的行為(亂建亂獲取文件和文件夾)進行規范和限制,以減少混亂使得用戶能更好的控制自己的文件。 公有目錄被分為兩大類:…

會員運營常用的ChatGPT通用提示詞模板

會員體系:如何建立和完善會員體系? 會員等級:如何設定會員等級及權益? 會員留存:如何提高會員留存率? 會員活躍度:如何提高會員活躍度? 會員招募:如何招募新會員&…

ubuntu install sqlmap

refer: https://github.com/sqlmapproject/sqlmap 安裝sqlmap,可以直接使用git 克隆整個sqlmap項目: git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev 2.然后進入sqlmap-dev,使用命令: python s…

靜態代理IP搭建步驟,靜態匿名在線代理IP如何使用?

靜態代理搭建步驟 1. 確定需求 在搭建靜態代理之前,需要明確自己的需求,包括代理服務器的位置、訪問速度、匿名性、安全性等方面的要求。 2. 選擇代理服務器提供商 可以選擇自己購買服務器搭建代理,也可以選擇使用云服務提供商的代理服務…

【Python百寶箱】探索強化學習算法的利器:航行在AI之海的羅盤指南

強化學習的工具寶盒:探索各色瑰寶,點亮智能之旅 前言 人工智能和強化學習正成為推動科技進步的重要力量。在這個領域中,使用適當的庫和工具可以加速算法研發和應用部署的過程。本文將深入探索一系列具有代表性的強化學習庫和工具&#xff0…

有趣的數學 用示例來闡述什么是初值問題二

一、示例 解決以下初值問題。 解決這個初始值問題的第一步是找到一個通用的解決方案。為此,我們找到微分方程兩邊的反導數。 即 我們能夠對兩邊進行積分,因為y項是單獨出現的。請注意,有兩個積分常數:C1和C2。求解前面的方程y給出…

電工--半導體器件

目錄 半導體的導電特性 PN結及其單向導電性 二極管 穩壓二極管 雙極型晶體管 半導體的導電特性 本征半導體:完全純凈的、晶格完整的半導體 載流子:自由電子和空穴 溫度愈高,載流子數目愈多,導電性能就愈好 型半導體&…

28. Python Web 編程:Django 基礎教程

目錄 安裝使用創建項目啟動服務器創建數據庫創建應用創建模型設計路由設計視圖設計模版 安裝使用 Django 項目主頁:https://www.djangoproject.com 訪問官網 https://www.djangoproject.com/download/ 或者 https://github.com/django/django Windows 按住winR 輸…

docker build構建報錯:shim error: docker-runc not installed on system

問題: docker構建鏡像時報錯:shim error: docker-runc not installed on system 解決: ln -s /usr/libexec/docker/docker-runc-current /usr/bin/docker-runc

MySQL數據庫——鎖-表級鎖(表鎖、元數據鎖、意向鎖)

目錄 介紹 表鎖 語法 特點 元數據鎖 介紹 演示 意向鎖 介紹 分類 演示 介紹 表級鎖,每次操作鎖住整張表。鎖定粒度大,發生鎖沖突的概率最高,并發度最低。應用在MyISAM、InnoDB、BDB等存儲引擎中。 對于表級鎖,主要…

選擇排序和堆排序

目錄 前言 一.選擇排序 1.思想 2.實現 3.特點 二.堆排序 1.思想 2.實現 3.特點 前言 排序算法是計算機科學中的基礎工具之一,對于數據處理和算法設計有著深遠的影響。了解不同排序算法的特性和適用場景,能夠幫助程序員在特定情況下…

【Go】基于GoFiber從零開始搭建一個GoWeb后臺管理系統(一)搭建項目

前言 最近兩個月一直在忙公司的項目,上班時間經常高強度寫代碼,下班了只想躺著,沒心思再學習、做自己的項目了。最近這幾天輕松一點了,終于有時間 摸魚了 做自己的事了,所以到現在我總算是搭起來一個比較完整的后臺管…

nrfutil工具安裝

準備工作,下載相關安裝包 鏈接:https://pan.baidu.com/s/1LWxhibf8LiP_Cq3sw0kALQ 提取碼:2dlc 解壓后,分別安裝以下安裝包 在C盤下創建目錄nordic_tools,并將nrfutil復制到剛創建的目錄下 環境變量path下添加C:\nor…

圖像采集卡 Xtium?2-XGV PX8支持高速 GigE Vision 工業相機

圖像采集卡(Image Capture Card),又稱圖像捕捉卡,是一種可以獲取數字化視頻圖像信息,并將其存儲和播放出來的硬件設備。很多圖像采集卡能在捕捉視頻信息的同時獲得伴音,使音頻部分和視頻部分在數字化時同步…

python elasticsearch 日期聚合

索引以及數據如下 PUT dateagg {"mappings": {"properties": {"charge":{"type": "double"},"types":{"type": "keyword"},"create_date":{"type": "date",&…

裸機單片機適用的軟件架構

單片機通常分為三種工作模式,分別是 1、前后臺順序執行法 2、操作系統 3、時間片輪詢法 1、前后臺順序執行法 利用單片機的中斷進行前后臺切換,然后進行任務順序執行,但其實在…

Spring Boot Web

目錄 一. 概述 二. Spring Boot Web 1.2.1 創建SpringBoot工程(需要聯網) 1.2.2 定義請求處理類 1.2.3 運行測試 1.3 Web分析 三. Http協議 3.1 HTTP-概述 剛才提到HTTP協議是規定了請求和響應數據的格式,那具體的格式是什么呢? 3…

spring結合設計模式之策略模式

策略模式基本概念: 一個接口或者抽象類,里面兩個方法(一個方法匹配類型,一個可替換的邏輯實現方法)不同策略的差異化實現(就是說,不同策略的實現類) 使用策略模式替換判斷,使代碼更加優雅。 …

Swagger快速上手

快速開始&#xff1a; 導入maven包 <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version> </dependency><dependency><groupId>io.springfox<…

MongoDB在Windows系統和Linux系統中實現自動定時備份

本文主要介紹MongoDB在Windows系統和Linux系統中如何實現自動定時備份。 目錄 MongoDB在Windows系統中實現自動定時備份MongoDB在Linux系統中實現自動定時備份備份步驟備份恢復 MongoDB在Windows系統中實現自動定時備份 要在Windows系統中實現自動定時備份MongoDB數據庫&#…