• 在Yolov5 Yolov4 Yolov3 TensorRT 实现Implementation


    在Yolov5 Yolov4 Yolov3 TensorRT 实现Implementation

    news: yolov5 support

    引论

    该项目是nvidia官方yolo-tensorrt的封装实现。你必须有经过训练的yolo模型(.weights)和来自darknet(yolov3&yolov4)的.cfg文件。对于yolov5,需要Pythorch中的模型文件(yolov5s.yaml)和经过训练的权重文件(yolov5s.pt)。

     

     参考:https://github.com/enazoe/yolo-tensorrt

    • yolov5s , yolov5m , yolov5l , yolov5x tutorial
    • yolov4 , yolov4-tiny
    • yolov3 , yolov3-tiny

    Features

    • inequal net width and height
    • batch inference
    • support FP32,FP16,INT8
    • dynamic input size

    PLATFORM & BENCHMARK

    • windows 10
    • ubuntu 18.04
    • L4T (Jetson platform)

    BENCHMARK

    x86 (inference time)

    model

    size

    gpu

    fp32

    fp16

    INT8

    yolov5s

    640x640

    1080ti

    8ms

    /

    7ms

    yolov5m

    640x640

    1080ti

    13ms

    /

    11ms

    yolov5l

    640x640

    1080ti

    20ms

    /

    15ms

    yolov5x

    640x640

    1080ti

    30ms

    /

    23ms

    Jetson NX with Jetpack4.4.1 (inference / detect time)

    model

    size

    gpu

    fp32

    fp16

    INT8

    yolov3

    416x416

    nx

    105ms/120ms

    30ms/48ms

    20ms/35ms

    yolov3-tiny

    416x416

    nx

    14ms/23ms

    8ms/15ms

    12ms/19ms

    yolov4-tiny

    416x416

    nx

    13ms/23ms

    7ms/16ms

    7ms/15ms

    yolov4

    416x416

    nx

    111ms/125ms

    55ms/65ms

    47ms/57ms

    yolov5s

    416x416

    nx

    47ms/88ms

    33ms/74ms

    28ms/64ms

    yolov5m

    416x416

    nx

    110ms/145ms

    63ms/101ms

    49ms/91ms

    yolov5l

    416x416

    nx

    205ms/242ms

    95ms/123ms

    76ms/118ms

    yolov5x

    416x416

    nx

    351ms/405ms

    151ms/183ms

    114ms/149ms

    ubuntu

    model

    size

    gpu

    fp32

    fp16

    INT8

    yolov4

    416x416

    titanv

    11ms/17ms

    8ms/15ms

    7ms/14ms

    yolov5s

    416x416

    titanv

    7ms/22ms

    5ms/20ms

    5ms/18ms

    yolov5m

    416x416

    titanv

    9ms/23ms

    8ms/22ms

    7ms/21ms

    yolov5l

    416x416

    titanv

    17ms/28ms

    11ms/23ms

    11ms/24ms

    yolov5x

    416x416

    titanv

    25ms/40ms

    15ms/27ms

    15ms/27ms

    WRAPPER

    Prepare the pretrained .weights and .cfg model.

    Detector detector;

    Config config;

     

    std::vector<BatchResult> res;

    detector.detect(vec_image, res)

    Build and use yolo-trt as DLL or SO libraries

    windows10

    • dependency : TensorRT 7.1.3.4 , cuda 11.0 , cudnn 8.0 , opencv4 , vs2015
    • build:

    open MSVC sln/sln.sln file

      • dll project : the trt yolo detector dll
      • demo project : test of the dll

    ubuntu & L4T (jetson)

    The project generate the libdetector.so lib, and the sample code. If you want to use the libdetector.so lib in your own project,this cmake file perhaps could help you .

    git clone https://github.com/enazoe/yolo-tensorrt.git
    cd yolo-tensorrt/
    mkdir build
    cd build/
    cmake ..
    make
    ./yolo-trt

    API

    struct Config
    {
            std::string file_model_cfg = "configs/yolov4.cfg";
     
            std::string file_model_weights = "configs/yolov4.weights";
     
            float detect_thresh = 0.9;
     
            ModelType net_type = YOLOV4;
     
            Precision inference_precison = INT8;
            
            int gpu_id = 0;
     
            std::string calibration_image_list_file_txt = "configs/calibration_images.txt";
     
    };
     
    class API Detector
    {
    public:
            explicit Detector();
            ~Detector();
     
            void init(const Config &config);
     
            void detect(const std::vector<cv::Mat> &mat_image,std::vector<BatchResult> &vec_batch_result);
     
    private:
            Detector(const Detector &);
            const Detector &operator =(const Detector &);
            class Impl;
            Impl *_impl;
    };

    REFERENCE

     

    人工智能芯片与自动驾驶
  • 相关阅读:
    leetcode933
    leetcode929
    leetcode31
    leetcode29
    leetcode166
    2019-9-2-win10-uwp-保存用户选择文件夹
    2019-9-2-win10-uwp-保存用户选择文件夹
    2018-8-10-如何移动-nuget-缓存文件夹
    2018-8-10-如何移动-nuget-缓存文件夹
    2019-9-2-C#判断文件是否被混淆
  • 原文地址:https://www.cnblogs.com/wujianming-110117/p/14059442.html
Copyright © 2020-2023  润新知