PaddleDetection目標檢測套件

2021-02-21 迷途小書童的Note
軟硬體環境簡介

引用官方的項目介紹

PaddleDetection飛槳目標檢測開發套件,旨在幫助開發者更快更好地完成檢測模型的組建、訓練、優化及部署等全開發流程。PaddleDetection模塊化地實現了多種主流目標檢測算法,提供了豐富的數據增強策略、網絡模塊組件(如骨幹網絡)、損失函數等,併集成了模型壓縮和跨平臺高性能部署能力。經過長時間產業實踐打磨,PaddleDetection已擁有順暢、卓越的使用體驗,被工業質檢、遙感圖像檢測、無人巡檢、新零售、網際網路、科研等十多個行業的開發者廣泛應用。

總結成一句話就是非常牛逼!

再來看看套件結構概覽

Architectures      Backbones      Components      Data Augmentation      

Two-Stage Detection

Faster RCNN

FPN

Cascade-RCNN

Libra RCNN

Hybrid Task RCNN

PSS-Det RCNN

One-Stage Detection

RetinaNet

YOLOv3

YOLOv4

PP-YOLO

SSD

Anchor Free

CornerNet-Squeeze

FCOS

TTFNet

Face-Detction

FaceBoxes

BlazeFace

BlazeFace-NAS

ResNet(&vd)

ResNeXt(&vd)

SENet

Res2Net

HRNet

Hourglass

CBNet

GCNet

DarkNet

CSPDarkNet

VGG

MobileNetv1/v3

GhostNet

Efficientnet

Common

Sync-BN

Group Norm

DCNv2

Non-local

Loss

Smooth-L1

GIoU/DIoU/CIoU

IoUAware

Speed

FP16 training

Multi-machine training

Resize

Flipping

Expand

Crop

Color Distort

Random Erasing

Mixup

Cutmix

Grid Mask

Auto Augment

眼睛都看花了,支持的也太xx全面了。除了功能,再來看看性能

各模型結構和骨幹網絡的代表模型在COCO數據集上精度mAP和單卡Tesla V100上預測速度(FPS)對比圖

paddledetection

圖中模型均可在模型庫中獲取,地址是 https://github.com/PaddlePaddle/PaddleDetection#模型庫

安裝PaddlePaddle

飛槳(PaddlePaddle)是百度研發的中國首個開源開放、技術領先、功能完備的產業級深度學習平臺,集深度學習核心訓練和推理框架、基礎模型庫、端到端開發套件和豐富的工具組件於一體。

首先創建python的虛擬環境,然後安裝paddlepaddle-gpu

conda create -n ppdetection python=3.7
conda activate ppdetection
pip install paddlepaddle-gpu==1.8.4.post107 -i https://mirror.baidu.com/pypi/simple

如果需要使用到多gpu的話,還要安裝nvidia的NCCL框架,它是用來進行多卡通訊的,下載地址是 https://developer.nvidia.com/nccl/nccl-download,選擇匹配CUDA版本的下載

使用以下命令進行驗證

(ppdetection) xugaoxiang@1070Ti:~/Works/github/PaddleDetection-release-0.5$ ipython
Python 3.7.9 (default, Aug 31 2020, 12:42:55)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.19.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import paddle.fluid as fluid

In [2]: fluid.install_check.run_check()
Running Verify Fluid Program ...
W1208 13:28:59.964426 13251 device_context.cc:252] Please NOTE: device: 0, CUDA Capability: 61, Driver API Version: 11.0, Runtime API Version: 10.0
W1208 13:29:00.090900 13251 device_context.cc:260] device: 0, cuDNN Version: 7.6.
Your Paddle Fluid works well on SINGLE GPU or CPU.
Your Paddle Fluid works well on MUTIPLE GPU or CPU.
Your Paddle Fluid is installed successfully! Let's start deep Learning with Paddle Fluid now

In [3]: import paddle

In [4]: paddle.__version__
Out[4]: '1.8.4'

In [5]:

安裝其它依賴

pip install pycocotools

安裝PaddleDetection

目前最新的版本是0.5,下載後進入目錄安裝必要的依賴

wget https://github.com/PaddlePaddle/PaddleDetection/archive/release/0.5.zip
unzip PaddleDetection-release-0.5.zip
cd PaddleDetection-release-0.5
pip install -r requirements.txt

確認下面測試通過

(ppdetection) xugaoxiang@1070Ti:~/Works/github/PaddleDetection-release-0.5$ python ppdet/modeling/tests/test_architectures.py
ss/home/xugaoxiang/Works/github/PaddleDetection-release-0.5/ppdet/core/workspace.py:118: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working 
 isinstance(merge_dct[k], collections.Mapping)):


Ran 12 tests in 2.866s

OK (skipped=2)

使用官方提供的預訓練模型預測圖片,快速體驗模型預測效果

# 通過use_gpu參數設置是否使用GPU
python tools/infer.py -c configs/ppyolo/ppyolo.yml -o use_gpu=true weights=https://paddlemodels.bj.bcebos.com/object_detection/ppyolo.pdparams --infer_img=demo/000000014439.jpg

程序運行結束後,會在output文件夾下生成一個畫有預測結果的同名圖像

paddledetection

paddledetection

paddledetection模型訓練

這裡以paddledetection自帶的蘋果、香蕉和桔子數據集為例,官方代碼中提供了下載腳本及配置文件

cd dataset/fruit

# 下載數據集,vod格式
python download_fruit.py

這個水果數據集是採用的VOC格式,下載完成後,目錄結構是這樣的

paddledetection

接下來就可以開始訓練了,這裡使用YOLOv3作為訓練模型,backbone是mobilenet_v1

python tools/train.py -c configs/yolov3_mobilenet_v1_fruit.yml --eval

其中-c指定訓練配置文件,--eval表示邊訓練邊測試,配置文件中的參數解釋可以參考 https://github.com/PaddlePaddle/PaddleDetection/blob/release/0.5/docs/advanced_tutorials/config_doc/yolov3_mobilenet_v1.md,非常的詳細

paddledetection

通過visualdl命令可以實時查看變化曲線

# 設置visualdl參數
python tools/train.py -c configs/yolov3_mobilenet_v1_roadsign.yml --eval -o use_gpu=true --use_vdl=True --vdl_log_dir=vdl_dir/scalar

# 打開visualdl
visualdl --logdir vdl_dir/scalar/ --host <host_IP> --port <port_num>

paddledetection

訓練好的模型存放在output/yolov3_mobilenet_v1_fruit下

paddledetection

使用訓練好的模型進行預測

# 使用參數--infer_dir來預測圖片文件夾
python tools/infer.py -c configs/yolov3_mobilenet_v1_fruit.yml -o weights=output/yolov3_mobilenet_v1_fruit/best_model.pdmodel --infer_img=demo/orange_71.jpg --output_dir=output

paddledetection

paddledetection參考資料https://xugaoxiang.com/2019/12/08/anaconda/https://xugaoxiang.com/2020/09/24/ubuntu-nvidia-driver/https://xugaoxiang.com/2019/12/13/ubuntu-cuda/https://github.com/PaddlePaddle/PaddleDetectionhttps://www.paddlepaddle.org.cn/install/quick

相關焦點

  • 如何用PaddleDetection做一個完整的目標檢測項目
    針對不同的業務場景(性能、目標大小、準確率等)可以選擇框架中的不同模塊組合得到最適合的模型,實現任務。相比於tensorflow的Object_Detection,優勢之一就是將YOLOv3這一目標檢測的快速算法融合到了框架下。文章將以一個Yolov3識別水果的例子為說明,詳解如何利用PaddleDetection完成一個項目。
  • PaddleDetcion——紅綠燈檢測:PaddleDetection-SSD_Mobilenet-VOCdataset
    architecture: SSDpretrain_weights: https://paddlemodels.bj.bcebos.com/object_detection/ssd_mobilenet_v1_coco_pretrained.taruse_gpu: truemax_iters: 28000snapshot_iter: 2000log_smooth_window
  • mmdetection目標檢測框架安裝與測試
    一、mmdetection簡介項目地址:https://github.com/open-mmlab/mmdetection
  • Paddle.js & PaddleClas 實戰 ——『尋物大作戰』AI 小遊戲
    所依賴的技術主要包含兩大部分:百度飛槳圖像分類套件 PaddleClas 和基於 JavaScript 的前端深度學習推理引擎 Paddle.js。接下來將對這兩部分進行詳細說明。構建神經網絡/深度學習模型的基本步驟PaddleClas 作為「開箱即用」的圖像分類套件,擁有 180+ 預訓練模型,都只需經過簡單配置,即可完成從訓練到部署的全流程工作
  • 【乾貨】目標檢測(Object Detection)和目標跟蹤(Object Tracking)的區別
    推薦閱讀時間:5min~10min主要內容:目標檢測(Object Detection)和目標跟蹤(Object Tracking)的區別在計算機視覺中,目標檢測是在圖像和視頻(一系列的圖像)中掃描和搜尋目標,概括來說就是在一個場景中對目標進行定位和識別,如下圖中展示的,我們要檢測圖像中的車輛,這就是典型的目標檢測實例
  • 綜述:在RGB-D圖像上進行目標檢測(Object detection in RGB-D images)
    ,根據構圖先驗和背景先驗的方法進行顯著目標檢測。本文根據論文先後發表的時間順序,帶大家速覽自2014年以來的,在RGB-D圖像上進行目標檢測的典型論文。>>加入極市CV技術交流群,走在計算機視覺的最前沿CNN(convolutional neural network)在目標檢測中大放異彩,R-CNN系列,YOLO,SSD各類優秀的方法層出不窮。在2D圖像的目標檢測上,不少學術界提出的框架已經投入商用。
  • MMDetection目標檢測工具箱
    MMDetection是基於深度學習的目標檢測算法框架,使用MMDetection能快速搭建目標檢測網絡,實現目標檢測。本文將介紹MMDetection:MMDetection,包含一組豐富的對象檢測和實例細分方法以及相關的組件和模塊。
  • MMDetection V2.0來了!更快更強的通用目標檢測平臺
    https://github.com/open-mmlab/mmdetection太長不看版:經過對模型各個組件的重構和優化,我們全面提升了 MMDetection 的速度和精度,達到了現有檢測框架中的最優水平。通過更細粒度的模塊化設計,MMDetection 的任務拓展性大大增強,成為了檢測相關項目的基礎平臺。同時對文檔和教程進行了完善,增強用戶體驗。
  • PaddlePaddle升級解讀 | 十餘行代碼完成遷移學習,PaddleHub實戰篇
    PaddleHub 目前的預訓練模型覆蓋了圖像分類、目標檢測、詞法分析、Transformer、情感分析五大類別。未來會持續開放更多類型的深度學習模型,如語言模型、視頻分類、圖像生成等預訓練模型。PaddleHub 的功能全景如圖 1 所示。
  • 小目標檢測
    (object detection),就是在給定的一張圖片中精確找到物體所在的位置,並標註出物體的類別。所以,目標檢測要解決的問題就是物體在哪裡以及是什麼的整個流程問題。但是,在實際照片中,物體的尺寸變化範圍很大,擺放物體的角度、姿態、在圖片中的位置都不一樣,物體之間可能還有重疊現象,這使得目標檢測的難度變得很大。目標檢測近些年取得了較大發展,主要原因就是卷積神經網絡在目標檢測任務的應用代替了原有的基於人工規則提取特徵的方法。
  • 使用Tensorflow Object Detection API實現對象檢測
    ,對應用場景相對簡單的視頻分析與對象檢測提供了極大的方便與更多的技術方案選擇。tensorflow object detection提供的預訓練模型都是基於以下三個數據集訓練生成,它們是:COCO數據集Kitti數據集Open Images數據集每個預訓練模型都是以tar文件形式存在,其中包括以下幾個部分:基於COCO數據集訓練的模型名稱、運行速度、mAP指標及輸出列表如下:二:使用模型實現對象檢測
  • Video Analysis 相關領域解讀之Temporal Action Detection(時序行為檢測)
    action recognition與temporal action detection之間的關係同 image classfication與 object detection之間的關係非常像。基於image classification問題,發展出了許多強大的網絡模型(比如ResNet,VGGNet等),這些模型在object detection的方法中起到了很大的作用。
  • Kaggle實戰目標檢測奇淫技巧合集
    點擊文末「閱讀原文」立刻申請入群~本文來自52CV群友Spytensor參加Kaggle目標檢測比賽的總結,作者是位數據競賽愛好者,文章非常具有實戰意義。這裡分享一下我總結的一些目標檢測中會用到的 「奇淫技巧」,牽扯到代碼的我就直接拿 mmdetection[1] 來舉例了,修改起來比較簡單。1.
  • 百度飛槳口罩人臉檢測與識別模型再升級,視頻教學帶你實戰
    自百度開源業界首個口罩人臉檢測及分類模型之後,開發者社區進行了充分討論並提出了該模型存在的一些問題和不足。在本文中,百度飛槳官方對這些反饋積極回應,同時提出四大升級方案,為開發者一一解惑。2月13日《百度開源業內首個口罩人臉檢測及分類模型》文章中介紹,該模型可以有效檢測在密集人流區域中攜帶和未攜戴口罩的所有人臉,同時判斷是否佩戴口罩。
  • 入門指南:用Python實現實時目標檢測(內附代碼)
    目標檢測 (ObjectDetection) 也是計算機視覺最酷的應用之一,這是不容置疑的事實。現在的CV工具能夠輕鬆地將目標檢測應用於圖片甚至是直播視頻。本文將簡單地展示如何用TensorFlow創建實時目標檢測器。
  • 教程 | 如何使用Docker、TensorFlow目標檢測API和OpenCV實現實時目標檢測和視頻處理
    API,通過網絡攝像頭執行實時目標檢測,同時進行視頻後處理。此外,我還在項目中添加了視頻後處理功能,這一功能也使用了多進程,以減少視頻處理的時間(如果使用原始的 TensorFlow 目標檢測 API 處理視頻,會需要非常非常長的時間)。在我的個人電腦上可以同時進行高性能的實時目標檢測和視頻後處理工作,該過程僅使用了 8GB 的 CPU。
  • CVPR 2019 論文大盤點—目標檢測篇
    , Ram Nevatia,Vignesh Ramanathanhttps://github.com/zhenheny/Activity-Driven-Weakly-Supervised-Object-Detection顯著性目標檢測通過擴大卷積神經網絡中的池化的作用解決顯著目標檢測問題
  • TF2的目標檢測API
    簡介目標檢測(OD)改進是由工業界廣泛採用該技術所推動的。汽車製造商使用目標檢測來幫助車輛自主駕駛道路,醫生使用它改進診斷過程,農民使用它來檢測各種農作物疾病等等,當然還有許多其他的使用案例(尚未發現),OD可以提供巨大的工業價值。Tensorflow是一個深度學習框架,為自然語言處理(NLP)、語音合成、語義分割和目標檢測等領域的許多最先進(SOTA)模型提供了支持。
  • SSD目標檢測
    圖1 速度對比SSD具有如下主要特點:從YOLO中繼承了將detection轉化為regression的思路,一次完成目標定位與分類基於Faster RCNN中的Anchor,提出了相似的Prior box;加入基於特徵金字塔(Pyramidal Feature Hierarchy)的檢測方式,即在不同感受野的feature map上預測目標