国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[CV學習筆記]tensorrt加速篇之yolov5seg 實例分割

這篇具有很好參考價值的文章主要介紹了[CV學習筆記]tensorrt加速篇之yolov5seg 實例分割。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1. 前言

yolov5-7.0版本繼續(xù)更新了實例分割的代碼,其分割的精度與速度令人驚訝,本文將yolov5-seg進行tensorrt加速,并利用矩陣的方法對進行部分后處理.
[CV學習筆記]tensorrt加速篇之yolov5seg 實例分割

實例分割原理:yolact

yolov5seg-cpp實現(xiàn)代碼:Yolov5-instance-seg-tensorrt

cpp矩陣實現(xiàn):algorithm-cpp

本文測試代碼:https://github.com/Rex-LK/tensorrt_learning/tree/main/trt_cpp/src/trt/demo-infer/yolov5seg
歡迎正在學習或者想學的CV的同學進群一起討論與學習,v:Rex1586662742,q群:468713665

2. 實例分割結果

yolov5-seg的結果分為兩部分,一個是檢測的結果,維度為25200*177,前85列為每個檢測框結果,后32列為每個檢測框的mask系數(shù),另外一個是分割結果:原型mask,維度為32 * 160 * 160,實例分割的后處理就是將目標框里面的mask系數(shù)與原型mask進行加權求和,從而獲得實例分割的效果。

2.1 檢測結果后處理

通過置信度以及NMS可以挑選出最終的目標框,這個過程就不在過多的贅述了。

2.2 實例分割分割結果后處理

實例分割的后處理過程其實是一個矩陣相乘的過程,因此基于。。。實現(xiàn)cpp矩陣,在這里實現(xiàn)了后處理,原作者的代碼是用過利用opencv里面的Mat來表示一個矩陣,然后進行一些矩陣的操作,而本文實現(xiàn)在在自定義Matrix上進行矩陣操作。
[CV學習筆記]tensorrt加速篇之yolov5seg 實例分割

// 原型mask 32 * 160 * 160
float *seg_det = seg_out->cpu<float>();
vector<float> mask(seg_det, seg_det + segChannels * segWidth * segHeight);
// 矩陣表示
Matrix seg_proto(segChannels, segWidth * segHeight, mask);
for (int i = 0; i < box_result.size(); ++i) {
    // 可以將所有的mask系數(shù)放在一起,然后利用cuda進行加速計算

    // 每個目標框的mask系數(shù) 乘以原型mask 并取sigmod
    Matrix resSeg = (mygemm(box_result[i].mask_cofs,seg_proto).exp(-1) + 1.0).power(-1);
    
    Mat resMat(resSeg.data_);
    resMat = resMat.reshape(0,{segHeight,segWidth});
    // 如果圖片預處理為直接resize,那么計算出來的resMat可以直接縮放回原圖,
    // 如果是填充黑邊的resize,可以參考原代碼將原型mask恢復到原圖大小
    resize(resMat, resMat, Size(INPUT_H,INPUT_W), INTER_NEAREST);
    // 獲取原型mask里面目標框的區(qū)域
    Rect temp_rect = box_result[i].box;
    // 將目標框區(qū)域 大于0.5的值變?yōu)?55
    cv::Mat binaryMat;
    inRange(resMat(temp_rect), 0.5, 1, binaryMat);
    box_result[i].boxMask = binaryMat;
    // cv::imwrite(to_string(i) + "_.jpg", b);
    }

下面為利用cpp實現(xiàn)的矩陣,可以實現(xiàn)一些簡單的矩陣運算。

class Matrix{
public:
    Matrix();
    Matrix(int rows, int cols, const std::initializer_list<float>& pdata={});
    Matrix(int rows, int cols, const std::vector<float>&v);
    
    const float& operator()(int irow, int icol)const {return data_[irow * cols_ + icol];}
    float& operator()(int irow, int icol){return data_[irow * cols_ + icol];}
    Matrix element_wise(const std::function<float(float)> &func) const;
    Matrix operator*(const Matrix &value) const;
    Matrix operator*(float value) const;
    Matrix operator+(float value) const;
    Matrix operator-(float value) const;
    Matrix operator/(float value) const;
    int rows() const{return rows_;}
    int cols() const{return cols_;}
    Matrix view(int rows, int cols) const;
    Matrix power(float y) const;
    float reduce_sum() const;
    float* ptr() const{return (float*)data_.data();}
    Matrix exp(float value);
public:
    int rows_ = 0;
    int cols_ = 0;
    std::vector<float> data_;
};

3. 測試

下載本代碼
修改CMakeLists.txt 里面的cuda、tensorrt、protobuf路徑
修改main.cpp里面的路徑,修改yolov5seg.cu里面的模型路徑以及圖片路徑。
cd trt_cpp
mkdir build && cd biild
cmake … && make -j
./…/workspace/demo_infer
測試結果如下:
[CV學習筆記]tensorrt加速篇之yolov5seg 實例分割

4. 總結

本次學習了yolov5實例分割的原理以及代碼,通過對比原理以及代碼的步驟,弄清楚了yolov5是如何實現(xiàn)實例的分割任務的,如果本文對各位有用,麻煩到github點個小star。文章來源地址http://www.zghlxwxcb.cn/news/detail-431313.html

到了這里,關于[CV學習筆記]tensorrt加速篇之yolov5seg 實例分割的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【深度學習】YOLOv5實例分割 數(shù)據(jù)集制作、模型訓練以及TensorRT部署

    【深度學習】YOLOv5實例分割 數(shù)據(jù)集制作、模型訓練以及TensorRT部署

    yolov5-seg:官方地址:https://github.com/ultralytics/yolov5/tree/v6.2 TensorRT:8.x.x 語言:C++ 系統(tǒng):ubuntu18.04 前言:由于yolo倉中提供了標準coco的json文件轉(zhuǎn)txt代碼,因此需要將labelme的json文件轉(zhuǎn)為coco json. labelme JSON 轉(zhuǎn)COCO JSON 使用labelme的CreatePolygons按鈕開始繪制多邊形,然后保存為json格式。

    2024年02月06日
    瀏覽(28)
  • 【AI】yolov5:數(shù)據(jù)下載、圖像標注、訓練、預測等,超詳細筆記;pytorch轉(zhuǎn)onnx再轉(zhuǎn)TensorRT;訓練識別口罩

    https://gitcode.net/mirrors/ultralytics/yolov5/ 1)安裝pytorch 2)安裝cudnn 3)下載yolov5源碼: 4)安裝yolov5依賴

    2024年02月15日
    瀏覽(60)
  • 【TensorRT】TensorRT 部署Yolov5模型(C++)

    【TensorRT】TensorRT 部署Yolov5模型(C++)

    ? 該項目代碼在本人GitHub代碼倉庫開源,本人GitHub主頁為:GitHub ? 項目代碼: ? NVIDIA TensorRT? 是用于高性能深度學習推理的 SDK,可為深度學習推理應用提供低延遲和高吞吐量。詳細安裝方式參考以下博客: NVIDIA TensorRT 安裝 (Windows C++) ? 經(jīng)典的一個TensorRT部署模型步驟為

    2023年04月26日
    瀏覽(22)
  • 【YOLOv5】LabVIEW+TensorRT的yolov5部署實戰(zhàn)(含源碼)

    【YOLOv5】LabVIEW+TensorRT的yolov5部署實戰(zhàn)(含源碼)

    ????博客主頁: virobotics的CSDN博客:LabVIEW深度學習、人工智能博主 ??所屬專欄:『LabVIEW深度學習實戰(zhàn)』 ??上期文章: 手把手教你使用LabVIEW TensorRT實現(xiàn)圖像分類實戰(zhàn)(含源碼) ??如覺得博主文章寫的不錯或?qū)δ阌兴鶐椭脑?,還望大家多多支持呀! 歡迎大家?關注、

    2024年02月14日
    瀏覽(23)
  • YOLOv5 Tensorrt Python/C++部署

    YOLOv5 Tensorrt Python/C++部署

    https://www.bilibili.com/video/BV113411J7nk?p=1 https://github.com/Monday-Leo/Yolov5_Tensorrt_Win10 基于 Tensorrt 加速 Yolov5 6.0 支持 Windows10 支持 Python/C++ Tensorrt 8.2.1.8 Cuda 10.2 Cudnn 8.2.1( 特別注意需安裝兩個cuda10.2補丁 ) Opencv 3.4.6 Cmake 3.17.1 VS 2017 GTX1650 從yolov5 release v6.0下載.pt模型,這里以yolov5s.pt為例。

    2024年01月21日
    瀏覽(45)
  • 【TensorRT】基于C#調(diào)用TensorRT 部署Yolov5模型 - 上篇:構建TensorRTSharp

    【TensorRT】基于C#調(diào)用TensorRT 部署Yolov5模型 - 上篇:構建TensorRTSharp

    ? NVIDIA TensorRT? 是用于高性能深度學習推理的 SDK,可為深度學習推理應用提供低延遲和高吞吐量。詳細安裝方式參考以下博客: NVIDIA TensorRT 安裝 (Windows C++) ? 前文中已經(jīng)介紹了在C++中利用TensorRT 部署Yolov5模型,但在實際應用中,經(jīng)常會出現(xiàn)在C#中部署模型的需求,目前T

    2023年04月24日
    瀏覽(21)
  • YOLOv8在NX上的tensorrt的加速部署(60幀率)

    YOLOv8在NX上的tensorrt的加速部署(60幀率)

    所有過程均可以參考本人所寫的文章 (1)虛擬環(huán)境工具 MInforge3-Linux-aarch64 Jetson 平臺都是RAM架構,平常的conda都是基于X86架構平臺的。環(huán)境搭建參考文章 (2)YOLOv8_ros代碼,采用自己創(chuàng)建的yolov_ros代碼。yolov8_ros參考文章 (3)jetpack 環(huán)境(本篇文章是 jetpack5.1.2 )jetpack升級參考

    2024年01月18日
    瀏覽(23)
  • 改進的yolov5目標檢測-yolov5替換骨干網(wǎng)絡-yolo剪枝(TensorRT及NCNN部署)

    改進的yolov5目標檢測-yolov5替換骨干網(wǎng)絡-yolo剪枝(TensorRT及NCNN部署)

    2022.10.30 復現(xiàn)TPH-YOLOv5 2022.10.31 完成替換backbone為Ghostnet 2022.11.02 完成替換backbone為Shufflenetv2 2022.11.05 完成替換backbone為Mobilenetv3Small 2022.11.10 完成EagleEye對YOLOv5系列剪枝支持 2022.11.14 完成MQBench對YOLOv5系列量化支持 2022.11.16 完成替換backbone為EfficientNetLite-0 2022.11.26 完成替換backbone為

    2024年01月17日
    瀏覽(28)
  • 【YOLO】Windows 下 YOLOv8 使用 TensorRT 進行模型加速部署

    【YOLO】Windows 下 YOLOv8 使用 TensorRT 進行模型加速部署

    本文全文參考文章為 win10下 yolov8 tensorrt模型加速部署【實戰(zhàn)】 本文使用的代碼倉庫為 TensorRT-Alpha 注:其他 Yolov8 TensorRT 部署項目:YOLOv8 Tensorrt Python/C++部署教程 安裝Visual Studio 2019或者Visual Studio 2022、Nvidia驅(qū)動 安裝cuda,cudnn、opencv、tensorrt并進行相應的環(huán)境配置,這里不做配

    2024年02月11日
    瀏覽(25)
  • 利用python版tensorRT進行推理【以yolov5為例】

    利用python版tensorRT進行推理【以yolov5為例】

    上一篇文章中已經(jīng)詳細敘述了如何用tensorRT將onnx轉(zhuǎn)為engine【利用python版tensorRT導出engine【以yolov5為例】_愛吃肉的鵬的博客-CSDN博客】。 本篇文章將繼續(xù)講解trt的推理部分。 與之前一樣,在講解之前需要先介紹一些專業(yè)術語,讓大家看看這些內(nèi)置函數(shù)都有什么功能。 1.Binding含

    2024年02月12日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包