主頁 >  其他 > 基于YOLOv5的目標檢測系統詳解(附MATLAB GUI版代碼)

基于YOLOv5的目標檢測系統詳解(附MATLAB GUI版代碼)

2023-05-05 09:05:47 其他

摘要:本文重點介紹了基于YOLOv5目標檢測系統的MATLAB實作,用于智能檢測物體種類并記錄和保存結果,對各種物體檢測結果可視化,提高目標識別的便捷性和準確性,本文詳細闡述了目標檢測系統的原理,并給出MATLAB的實作代碼、預訓練模型,以及GUI界面設計,基于YOLOv5目標檢測演算法,在界面中可以選擇各種圖片、檔案夾、視頻進行檢測識別,博文提供了完整的MATLAB代碼和使用教程,適合新入門的朋友參考,完整代碼資源檔案請轉至文末的下載鏈接,

目錄
  • 1. 引言
  • 2. 系統界面演示效果
  • 3. 檢測程序代碼
  • 4. 系統實作
  • 5. 結果分析和優化建議
  • 下載鏈接
  • 6. 總結與展望
  • 結束語
  • 參考文獻

?點擊跳轉至文末所有涉及的完整代碼檔案下載頁?

完整代碼下載:https://mbd.pub/o/bread/mbd-ZJiYmphw

參考視頻演示:https://www.bilibili.com/video/BV1ro4y1w75j/


1. 引言

        撰寫這篇博客的初衷是分享YOLOv5目標檢測演算法的實作與應用,為大家提供實踐指南,感謝粉絲們的支持,這里我非常鼓勵讀者深入理解背后原理,發揮創造力,進行探索與嘗試,而不是簡單地套用現成的解決方案,期待在未來的技術交流中,共同進步與成長,本博客內容為博主原創,相關參考和參考文獻我已在文中標注,考慮到可能會有相關研究人員蒞臨指導,博主的博客這里盡可能以學術期刊的格式撰寫,如需參考可參考本博客格式如下:

[1] 思緒無限. 基于YOLOv5的目標檢測系統詳解[J/OL]. CSDN, 2023.05. https://wuxian.blog.csdn.net/article/details/130472314.
[2] Wu, S. (2023, May). A Comprehensive Guide to Object Detection System Based on YOLOv5 [J/OL]. CSDN. https://wuxian.blog.csdn.net/article/details/130472314.

        目標檢測作為計算機視覺領域的一個重要研究方向,旨在從影像或視頻中檢測并識別特定物體(Ren et al., 2015)[1],近年來,隨著深度學習技術的發展,卷積神經網路(CNN)在目標檢測領域取得了顯著成果,R-CNN(Girshick et al., 2014)[2]是第一個將卷積神經網路應用于目標檢測的方法,該方法首先使用選擇性搜索生成物體候選框,然后使用CNN對候選框進行特征提取,最后通過支持向量機進行分類,R-CNN相較于傳統方法在目標檢測任務上取得了較好的性能,但計算速度較慢,無法實作實時檢測,

        為解決R-CNN速度問題,Girshick提出了Fast R-CNN(Girshick, 2015)[3],Fast R-CNN通過引入RoI池化層,將物體候選框的特征提取與分類進行聯合訓練,大幅提高了檢測速度,然而,Fast R-CNN仍依賴于選擇性搜索生成物體候選框,導致檢測速度仍有待提升,Faster R-CNN(Ren et al., 2015)[1]進一步改進了Fast R-CNN,通過引入區域提議網路(RPN),實作了物體候選框生成與特征提取的端到端學習,Faster R-CNN在保持較高精度的同時,取得了更快的檢測速度,SSD(Liu et al., 2016)[4]是另一個流行的目標檢測方法,通過在不同尺度的特征圖上進行檢測,實作了對不同尺度物體的高效檢測,SSD在速度與精度上達到了較好的平衡,但在小物體檢測上性能略遜于Faster R-CNN,

        YOLO(You Only Look Once,Redmon et al., 2016)[5]系列演算法憑借其實時性和準確性在目標檢測領域受到廣泛關注,YOLO將目標檢測任務視為回歸問題,通過單次前向傳播實作目標的位置與類別預測,YOLOv2(Redmon and Farhadi, 2017)[8]通過改進網路結構與訓練策略,在保持實時性的同時進一步提高了檢測精度,YOLOv3(Redmon 和 Farhadi, 2018)[9]采用了多尺度特征融合,引入了類別與物體性(objectness)分離的策略,提高了小物體檢測性能,YOLOv4(Bochkovskiy et al., 2020)[7]在YOLOv3的基礎上,融合了多種最新的目標檢測技術,如CSPNet、PANet和SPP,進一步提高了檢測精度與速度,YOLOv5(Bochkovskiy et al., 2020)[6]作為最新版本,在YOLOv4的基礎上進行了架構優化,實作了更高的精度與更快的速度,

        雖然目前已經有許多基于YOLOv5的目標檢測應用,但多數針對特定領域,缺乏統一、易用的界面,因此,本博客將介紹一種基于YOLOv5的目標檢測系統,使用MATLAB實作,并提供圖形化用戶界面(GUI)以便于用戶進行互動操作,本博客的貢獻點如下:

  1. 提供了一個基于YOLOv5的通用目標檢測系統,支持不同領域的目標檢測任務;
  2. 詳細介紹了MATLAB實作的原理,包括預處理、模型加載、預測、結果可視化等;
  3. 提供了一個易用的GUI界面,支持圖片檢測、批量檢測、視頻檢測以及呼叫攝像頭檢測;
  4. 允許用戶更換不同的網路模型,以滿足不同任務的需求;
  5. 結果可視化方面,通過界面直觀顯示檢測結果,便于用戶分析,

2. 系統界面演示效果

        本節將介紹基于YOLOv5的目標檢測系統的圖形化用戶界面(GUI)功能及演示效果,

(1)選擇圖片檢測:用戶可以通過檔案選擇對話框選擇一張圖片進行目標檢測,系統會自動將圖片調整為合適的尺寸,并將結果顯示在GUI界面上,結果包括物體的類別、置信度以及邊界框,

(2)選擇檔案夾批量檢測:用戶可以選擇一個檔案夾進行批量檢測,系統會自動處理檔案夾中的所有圖片,并將檢測結果記錄在下方的表格中,輸出結果包括帶有邊界框和類別標簽的圖片,

(3)選擇視頻檢測:用戶可以選擇一個視頻檔案進行目標檢測,系統會對視頻中的每一幀影像進行目標檢測,并將檢測結果實時顯示在GUI界面上,同時,用戶可以選擇將檢測結果保存為視頻檔案,

(4)呼叫攝像頭檢測:用戶可以使用系統內置的攝像頭進行實時目標檢測,系統會捕捉攝像頭的視頻流,并對每一幀影像進行目標檢測,檢測結果將實時顯示在GUI界面上,

(5)更換不同網路模型:系統支持用戶更換不同的YOLOv5網路模型,用戶可以根據自己的需求,選擇合適的模型進行檢測,不同的模型在精度和速度上可能存在差異,

(6)通過界面顯示結果和可視化:系統的GUI界面提供了直觀的結果展示和可視化功能,用戶可以清晰地查看檢測到的物體、邊界框、類別以及置信度,


3. 檢測程序代碼

        首先,創建一個名為Detector_YOLOv5的類,它封裝了執行目標檢測的所有方法,以下是類的主要組成部分:

        屬性(Properties):類的屬性定義了檢測器所需的資訊,例如類別名稱(COCO資料集中的80個類別)、權重檔案、置信度閾值、非極大值抑制(NMS)閾值和各類別的顏色;方法(Methods):類的方法定義了實作目標檢測的功能,建構式(Detector_YOLOv5)在初始化時加載預訓練的YOLOv5模型,detect方法對給定的影像執行目標檢測,代碼還包括一些常量屬性,

classdef Detector_YOLOv5 <handle
    properties
        cocoNames = {'person'; 'bicycle'; 'car'; 'motorbike'; 'aeroplane';'bus';...
            'train'; 'truck'; 'boat'; 'traffic light'; 'fire hydrant'; ...
            'stop sign'; 'parking meter'; 'bench'; 'bird'; 'cat'; 'dog';...
            'horse'; 'sheep'; 'cow'; 'elephant'; 'bear'; 'zebra'; ...
            'giraffe'; 'backpack'; 'umbrella'; 'handbag'; 'tie'; ...
            'suitcase'; 'frisbee'; 'skis'; 'snowboard'; 'sports ball'; ...
            'kite'; 'baseball bat'; 'baseball glove'; 'skateboard'; ...
            'surfboard'; 'tennis racket'; 'bottle'; 'wine glass'; ...
            'cup'; 'fork'; 'knife'; 'spoon'; 'bowl'; 'banana'; ...
            'apple'; 'sandwich'; 'orange'; 'broccoli'; 'carrot';...
            'hot dog'; 'pizza'; 'donut'; 'cake'; 'chair'; 'sofa'; ...
            'pottedplant'; 'bed'; 'diningtable'; 'toilet'; ...
            'tvmonitor'; 'laptop'; 'mouse'; 'remote'; ...
            'keyboard'; 'cell phone'; 'microwave'; 'oven'; ...
            'toaster'; 'sink'; 'refrigerator'; 'book'; 'clock';...
            'vase'; 'scissors'; 'teddy bear'; 'hair drier'; 'toothbrush'
            } ;
        cocoNames_Chinese = {'人';'自行車'; '汽車'; '摩托車'; '飛機'; '公共汽車'; '火車'; ...
            '卡車'; '船'; '交通燈'; '消防栓'; '停車標志'; '停車收費表'; ...
            '長凳'; '鳥'; '貓'; '狗'; '馬'; '羊'; '牛'; '大象'; '熊'; ...
            '斑馬'; '長頸鹿'; '背包'; '手提包'; '領帶'; '手提箱'; '飛盤'; ...
            '飛盤'; '雪橇'; '單板滑雪板'; '運動球'; '風箏'; '棒球棒'; ...
            '棒球手套'; '滑板'; '沖浪板'; '網球拍'; '瓶子'; '酒杯'; '杯子'; ...
            '叉'; '刀'; '勺子'; '碗'; '香蕉'; '蘋果'; '三明治'; '橙子'; ...
            '西蘭花'; '胡蘿卜'; '熱狗'; '披薩'; '甜甜圈'; '蛋糕'; '椅子'; ...
            '沙發'; '盆栽植物'; '床'; '餐桌'; '馬桶'; '電視'; '筆記本電腦'; ...
            '滑鼠'; '遙控器'; '鍵盤'; '手機'; '微波爐'; '烤箱'; '烤面包機'; ...
            '水槽'; '冰箱'; '書'; '時鐘'; '花瓶'; '剪刀'; '泰迪熊'; '吹風機'; ...
            '牙刷'}
        class_names = [];
        weights = [];

        throushHold = 0.3;     % 閾值
        nmsThroushHold = 0.5;  % nms閾值

        colors = [];  % 各類別顏色
    end

    properties(Constant)
        input_size = [640,640]; % 輸入尺寸
        website = {'CSDN: https://wuxian.blog.csdn.net/';
            'Bilibili: https://space.bilibili.com/456667721';
            'Zhihu: https://www.zhihu.com/people/sixuwuxian';
            'CnBlog: https://www.cnblogs.com/sixuwuxian/'};

        author = '思緒無限';
        wechat = '公眾號:AI技術研究與分享';
    end
end

        接下來,詳細介紹detect方法的實作:

  1. 影像預處理:輸入影像被調整為YOLOv5所需的尺寸(例如,640x640像素),然后將其歸一化并調整維度以適應模型輸入要求,
  2. 模型推理:將預處理后的影像傳遞給networks_yolov5sfcn函式,該函式使用預訓練的YOLOv5模型計算預測結果,
  3. 后處理:根據預設的置信度閾值篩選預測結果,使用非極大值抑制(NMS)來合并重疊的邊界框,
  4. 結果輸出:將預測結果(邊界框、分數和類別標簽)回傳給呼叫者,
methods  % 方法塊開始
        %建構式,特點也是和類同名
        function obj = Detector_YOLOv5(model, model_fcn)

            if nargin == 2
                % 匯入模型
                obj.colors = randi(255, length(obj.cocoNames),3);
                obj.weights = importONNXFunction(model, model_fcn);
                obj.class_names = categorical(obj.cocoNames_Chinese);  % 類別標簽
            end
        end

        % 成員方法,執行預測
        function [bboxes, scores, labels] = detect(obj, image)
            % 使用YOLOv5進行預測

            % 預處理影像
            [H,W,~] = size(image);
            image = imresize(image, obj.input_size);
            image = rescale(image, 0, 1);% 轉換到[0,1]
            image = permute(image,[3,1,2]);
            image = dlarray(reshape(image,[1,size(image)])); % n*c*h*w,[0,1],RGB順序
            if canUseGPU()
                image = gpuArray(image);
            end
			% 模型推理
            [labels, bboxes] = networks_yolov5sfcn(image, obj.weights,...
                'Training',false,...
                'InputDataPermutation','none',...
                'OutputDataPermutation','none');
            % 后處理: 閾值過濾+NMS
            if canUseGPU()
                labels = gather(extractdata(labels));
                bboxes = gather(extractdata(bboxes));
            end
            [maxvalue,idxs] = max(labels,[],2);
            validIdxs = maxvalue>obj.throushHold;
            % nms
            indexes = idxs(validIdxs);
            predictBoxes = bboxes(validIdxs,:);
            predictScores = maxvalue(validIdxs);
            predictNames = obj.class_names(indexes);
            predictBboxes = [predictBoxes(:,1)*W-predictBoxes(:,3)*W/2,...
                predictBoxes(:,2)*H- predictBoxes(:,4)*H/2,...
                predictBoxes(:,3)*W,...
                predictBoxes(:,4)*H];
			% 結果輸出
            [bboxes,scores,labels] = selectStrongestBboxMulticlass(predictBboxes,...
                predictScores,...
                predictNames,...
                'RatioType','Min',...
                'OverlapThreshold', obj.nmsThroushHold);
        end

    end	% 方法塊結束

        這里給出如何使用Detector_YOLOv5類對影像進行目標檢測,首先加載模型,然后創建檢測器實體,接著,讀取影像,執行檢測并可視化結果(在影像上繪制邊界框、類別標簽和置信度),最后,將標注后的影像保存到檔案,這里講解如何使用已經訓練好的YOLOv5 ONNX模型進行目標檢測,首先加載模型并創建檢測器實體:

model = './yolov5s_no.onnx'; % 模型位置
yolov5 = Detector_YOLOv5(model, 'networks_yolov5sfcn');

        首先,定義模型檔案的路徑,這里使用了預訓練好的YOLOv5 ONNX模型,接著,利用Detector_YOLOv5類創建一個檢測器實體,networks_yolov5sfcn是一個MATLAB匯入的ONNX模型的函式,用于實作YOLOv5模型的前向傳播,下面讀取待檢測的影像:

image_path = './test_/000328.jpg';
image = imread(image_path);

        指定待檢測影像的路徑,并使用imread函式讀取影像,使用檢測器進行目標檢測:

tic
[bboxes, scores, labels] = yolov5.detect(image)
fprintf('預測時間: %0.2f s',toc);

        呼叫detect方法對讀取的影像進行目標檢測,detect方法回傳三個輸出:邊界框(bboxes)、置信度得分(scores)和類別標簽(labels),同時,使用tic和toc函式計算檢測所需的時間,繪制檢測結果并保存標注后的影像:

annotations = string(labels) + ": " + string(round(scores*100)) + '%';
[~, ids] = ismember(labels, classesNames);
labelColors = colors(ids,:);
labeled_image = insertObjectAnnotation(image,'rectangle',bboxes,...
    cellstr(annotations),...
    'Font','華文楷體', ...
    'FontSize', 18, ...
    'color', labelColors,...
    'LineWidth',2);
imshow(labeled_image);
imwrite(labeled_image, 'labeled_image.png'); % 保存標記的圖片

        將檢測結果(類別標簽、置信度得分和邊界框)添加到影像上,首先,為每個檢測到的目標生成一個包含類別標簽和置信度的字串(annotations),然后,根據類別標簽確定對應的顏色,接著,使用insertObjectAnnotation函式將檢測結果繪制到影像上,并使用imshow函式顯示標注后的影像,最后,使用imwrite函式將標注后的影像保存到檔案,


4. 系統實作

        本節將詳細介紹基于YOLOv5的目標檢測系統的設計框架和實作方法,系統主要分為兩個部分:預測部分和圖形用戶界面(GUI)部分,預測部分主要包括圖片、檔案夾分類、模型更換等功能,GUI部分則包含各種操作按鈕和可視化結果展示,在設計GUI界面時,需要考慮如下幾個方面:

  1. 界面布局:設計一個清晰、易于使用的界面布局,便于用戶進行各種操作,
  2. 功能實作:實作用戶在界面上執行的各種操作,例如選擇圖片、檔案夾分類、模型更換等,
  3. 可視化結果展示:將檢測結果以圖形或文本的形式展示在界面上,便于用戶查看和分析,

基于以上要求,可以設計一個包含以下功能的GUI界面:

  1. 選擇圖片檢測:用戶可以通過點擊按鈕選擇一張圖片進行目標檢測,
  2. 選擇檔案夾批量檢測:用戶可以選擇一個檔案夾,對檔案夾中的所有圖片進行目標檢測,
  3. 選擇視頻檢測:用戶可以選擇一個視頻檔案,對視頻中的每一幀進行目標檢測, 呼叫攝像頭檢測:用戶可以使用攝像頭實時進行目標檢測,
  4. 更換不同網路模型:用戶可以在多個預訓練模型之間進行切換,以滿足不同場景的需求,
  5. 通過界面顯示結果和可視化:將檢測結果以圖形或文本的形式展示在界面上,

        為了實作上述功能,可以使用MATLAB的App Designer工具來創建GUI界面,App Designer是一個基于MATLAB語言的互動式開發環境,可以方便地設計和創建具有各種功能的圖形用戶界面,以下是使用App Designer創建的基于YOLOv5的目標檢測系統的GUI界面實作步驟:

        打開MATLAB,選擇App Designer工具創建一個新的專案,

  1. 在設計界面中添加各種組件,例如按鈕、文本框、影像框等,設定組件的屬性和樣式,以滿足界面設計要求,
  2. 撰寫各個組件的回呼函式,實作相應的功能,例如,點擊“選擇圖片檢測”按鈕時,彈出檔案選擇對話框,讓用戶選擇一張圖片進行檢測;點擊“呼叫攝像頭檢測”按鈕時,啟動攝像頭并實時顯示檢測結果,
  3. 在回呼函式中呼叫YOLOv5目標檢測演算法,獲取檢測結果,并將結果顯示在界面上,例如,將檢測到的目標用矩形框標記,并在影像框中顯示;將檢測到的目標類別和置信度以文本的形式顯示在文本框中,
  4. 根據需要,添加其他功能和組件,例如模型切換功能,在界面中添加一個下拉選單,列出可用的預訓練模型,當用戶在下拉選單中選擇一個模型時,更新回呼函式中的模型引數,以使用新的模型進行檢測,
  5. 完成界面設計和功能實作后,保存并運行專案,在運行界面中測驗各個功能,確保功能正常運行并滿足需求,

對于需要進一步優化的功能,可以在App Designer的代碼視圖中進行修改和調整,例如,優化檢測演算法的性能,提高實時檢測的幀率;調整界面布局,使其更美觀易用,

        通過以上步驟,可以實作一個基于YOLOv5的目標檢測系統的GUI界面,用戶可以通過界面方便地選擇圖片、檔案夾或視頻進行目標檢測,并在界面上查看和分析檢測結果,同時,用戶還可以根據不同場景的需求,切換不同的預訓練模型進行檢測,


5. 結果分析和優化建議

        在本節中,將對YOLOv5目標檢測演算法的檢測結果進行分析,并提出一些建議以優化其性能,

        結果分析:通過使用預訓練的YOLOv5模型進行目標檢測,可以觀察到以下特點

  1. 檢測速度:YOLOv5具有較快的檢測速度,這對于實時應用非常重要,尤其是在GPU加速的情況下,檢測速度可以達到實時水平,
  2. 準確性:YOLOv5的檢測準確性相對較高,可以在各種場景中準確檢測出目標物體,然而,在一些復雜場景中,例如目標遮擋、小目標和低解析度情況下,檢測性能可能會受到影響,
  3. 通用性:YOLOv5能夠檢測多達80個類別的目標,具有較高的通用性,然而,對于一些特定的應用場景,可能需要在特定的資料集上進行微調,以提高檢測性能,

        針對YOLOv5目標檢測演算法的特點,提出以下優化建議:

        模型微調:為了提高YOLOv5在特定應用場景的檢測性能,可以在相關資料集上對模型進行微調,通過在有限的訓練資料上進行微調,模型可以更好地適應新的場景,從而提高檢測準確性,

        資料增強:在訓練程序中,使用資料增強技術可以提高模型的泛化能力,例如,可以使用影像旋轉、縮放、翻轉、裁剪等方法擴充訓練集,資料增強有助于模型學習到更多的特征,提高檢測性能,

        模型融合:在一些復雜場景下,可以考慮將多個檢測模型進行融合,以提高檢測準確性,例如,可以將YOLOv5與其他目標檢測演算法(如Faster R-CNN、SSD等)進行融合,綜合利用各自的優勢,提高整體檢測性能,

        多尺度檢測:針對不同尺寸的目標,可以考慮使用多尺度檢測策略,通過將輸入影像調整到不同的尺寸,可以在不同的尺度上進行目標檢測,從而提高檢測準確性,

        根據實際應用場景的需求,可以對YOLOv5進行一定程度的調整以滿足特定場景的要求:

        自定義類別:根據實際應用需求,可以對YOLOv5進行修改,以檢測特定類別的目標,這需要重新訓練模型,使其能夠識別和檢測自定義類別的物體,

        減小模型規模:為了適應邊緣設備(如移動設備、嵌入式設備等)上的計算能力限制,可以考慮減小YOLOv5模型的規模,通過降低模型的層數、通道數等引數,可以降低模型的計算復雜度,提高在邊緣設備上的運行速度,需要注意的是,這可能會對檢測性能產生一定影響,

        模型壓縮和優化:為了進一步提高模型在邊緣設備上的運行速度和記憶體占用,可以采用模型壓縮和優化技術,如模型剪枝、模型量化等,這些方法可以降低模型的計算復雜度和記憶體占用,提高運行速度,但可能對檢測性能產生一定影響,

        實時檢測優化:在進行實時目標檢測時,可以考慮采用滑動視窗、跟蹤等技術,減少重復檢測區域,提高檢測速度,此外,還可以結合場景資訊,對感興趣區域進行優先檢測,從而提高檢測效率,


下載鏈接

    若您想獲得博文中涉及的實作完整全部程式檔案(包括測驗圖片、視頻,mlx, mlapp檔案等,如下圖),這里已打包上傳至博主的面包多平臺,見可參考博客與視頻,已將所有涉及的檔案同時打包到里面,點擊即可運行,完整檔案截圖如下:

    在檔案夾下的資源顯示如下圖所示:

注意:該代碼采用MATLAB R2022a開發,經過測驗能成功運行,運行界面的主程式為Detector_UI.mlapp,測驗視頻腳本可運行test_yolov5_video.py,測驗攝像頭腳本可運行test_yolov5_camera.mlx,為確保程式順利運行,請使用MATLAB2022a運行并在“附加功能管理器”(MATLAB的上方選單欄->主頁->附加功能->管理附加功能)中添加有以下工具,

完整資源中包含資料集及訓練代碼,環境配置與界面中文字、圖片、logo等的修改方法請見視頻,專案完整檔案下載請見參考博客文章里面,或參考視頻的簡介處給出:???

完整代碼下載:https://mbd.pub/o/bread/mbd-ZJiYmphw

參考視頻演示:https://www.bilibili.com/video/BV1ro4y1w75j/


6. 總結與展望

        本文詳細介紹了YOLOv5目標檢測演算法的原理、網路結構及其在實際應用中的優化方法,YOLOv5作為一個高效、實時的目標檢測演算法,在各種場景中都表現出較好的性能,首先介紹了YOLOv5的背景知識,包括YOLO系列演算法的發展歷程和YOLOv5相較于前代演算法的改進,接著,詳細闡述了YOLOv5的網路結構和損失函式設計,并通過實際代碼實作展示了如何使用YOLOv5進行目標檢測,最后,討論了針對實際應用場景的優化方法,以提高YOLOv5在各種場景中的目標檢測能力,總的來說,YOLOv5是一個值得學習和應用的目標檢測演算法,通過對其進行一定程度的調整和優化,可以使其更好地滿足實際應用場景的需求,提高目標檢測的效果和效率,


結束語

        由于博主能力有限,博文中提及的方法即使經過試驗,也難免會有疏漏之處,希望您能熱心指出其中的錯誤,以便下次修改時能以一個更完美更嚴謹的樣子,呈現在大家面前,同時如果有更好的實作方法也請您不吝賜教,


參考文獻

[1] Ren, S., He, K., Girshick, R., & Sun, J. (2015). Faster R-CNN: Towards real-time object detection with region proposal networks. Advances in Neural Information Processing Systems, 28, 91-99.

[2] Girshick, R., Donahue, J., Darrell, T., & Malik, J. (2014). Rich feature hierarchies for accurate object detection and semantic segmentation. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 580-587.

[3] Girshick, R. (2015). Fast R-CNN. Proceedings of the IEEE International Conference on Computer Vision, 1440-1448.

[4] Liu, W., Anguelov, D., Erhan, D., Szegedy, C., Reed, S., Fu, C. Y., & Berg, A. C. (2016). SSD: Single shot multibox detector. European Conference on Computer Vision, 9905, 21-37.

[5] Redmon, J., Divvala, S., Girshick, R., & Farhadi, A. (2016). You only look once: Unified, real-time object detection. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 779-788.

[6] Bochkovskiy, A., Wang, C. Y., & Liao, H. Y. M. (2020). YOLOv5: An improved real-time object detection model. arXiv preprint arXiv:2006.05983.

[7] Bochkovskiy, A., Wang, C. Y., & Liao, H. Y. M. (2020). YOLOv4: Optimal speed and accuracy of object detection. arXiv preprint arXiv:2004.10934.

[8] Redmon, J., & Farhadi, A. (2017). YOLO9000: Better, faster, stronger. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 7263-7271.

[9] Redmon, J., & Farhadi, A. (2018). YOLOv3: An incremental improvement. arXiv preprint arXiv:1804.02767.

人工智能博主,機器學習及機器視覺愛好者,公眾號主及B站UP主,專注專業知識整理與專案總結約稿、軟體專案開發、原理指導請聯系微信:sixuwuxian(備注來意),郵箱:[email protected],微信公眾號:“AI技術研究與分享”,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/551645.html

標籤:其他

上一篇:為什么說測驗崗位是巨坑?10年測驗人告訴你千萬別上當

下一篇:返回列表

標籤雲
其他(158438) Python(38117) JavaScript(25399) Java(18012) C(15221) 區塊鏈(8261) C#(7972) AI(7469) 爪哇(7425) MySQL(7157) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5334) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4565) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2432) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1964) Web開發(1951) HtmlCss(1931) python-3.x(1918) 弹簧靴(1913) C++(1912) xml(1889) PostgreSQL(1874) .NETCore(1857) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 基于YOLOv5的目標檢測系統詳解(附MATLAB GUI版代碼)

    本文重點介紹了基于YOLOv5目標檢測系統的MATLAB實作,用于智能檢測物體種類并記錄和保存結果,對各種物體檢測結果可視化,提高目標識別的便捷性和準確性。本文詳細闡述了目標檢測系統的原理,并給出MATLAB的實作代碼、預訓練模型,以及GUI界面設計。基于YOLOv5目標檢測演算法,在界面中可以選擇各... ......

    uj5u.com 2023-05-05 09:05:47 more
  • 為什么說測驗崗位是巨坑?10年測驗人告訴你千萬別上當

    每次都有人問我軟體測驗的前景是什么樣的,每年也會有人很多人紛紛涌入測驗的崗位上,希望自己能夠進入阿里、華為等大廠
    但是測驗崗位真的那么吃香嗎?今天我結合從零基礎小白到測驗開發的成長經歷,來說下這個行業的發展前景,以及要入行的同學應該從哪個地方入手學習 ......

    uj5u.com 2023-05-05 09:05:13 more
  • 基于YOLOv4的目標檢測系統(附MATLAB代碼+GUI實作)

    本文介紹了一種MATLAB實作的目標檢測系統代碼,采用 YOLOv4 檢測網路作為核心模型,用于訓練和檢測各種任務下的目標,并在GUI界面中對各種目標檢測結果可視化。文章詳細介紹了YOLOv4的實作程序,包括演算法原理、MATLAB 實作代碼、訓練資料集、訓練程序和圖形用戶界面。在GUI界面中,用戶可... ......

    uj5u.com 2023-05-05 09:04:34 more
  • cPanel XSS漏洞分析研究(CVE-2023-29489)

    cPanel 是一套在網頁寄存業中最享負盛名的商業軟體,是基于于 Linux 和 BSD 系統及以 PHP 開發且性質為閉源軟體;提供了足夠強大和相當完整的主機管理功能,諸如:Webmail 及多種電郵協議、網頁化 FTP 管理、SSH 連線、資料庫管理系統、DNS 管理等遠端網頁式主機管理軟體功能... ......

    uj5u.com 2023-05-05 09:04:11 more
  • 博客開通

    之前因為查資料注冊的博客園,今天第一次開通屬于自己的博客,小小的記錄一下未來。 #include<iostream> using namespace std; int main(){ print("Hello world!"); return 0; } 我現在大四馬上畢業,考研失敗,對春招的認識不夠 ......

    uj5u.com 2023-05-05 09:03:59 more
  • 京東物流常態化壓測實踐

    大促備戰壓測備戰時間緊、任務多,壓測備戰壓力較大,在大促備戰多專項并行資源緊張情況下,頻繁的系統調優給整個大促帶來不可控的風險因素。引入常態化壓測的手段,通過每周或每月的定期壓測行為,持續把控系統性能表現,保證服務穩定性;同時將需求上線引起的性能問題前置暴露,及時定位優化問題;減輕備戰壓力,提升壓測... ......

    uj5u.com 2023-05-05 09:03:54 more
  • 【OpenAI】私有框架代碼生成實踐

    OpenAI提供的ChatGPT/GPT-4模型和CodeX模型能夠很好的理解和生成業界大多數編程語言的邏輯和代碼,然而在實際應用中,我們經常會在編碼時使用到一些私有框架、包、協議和DSL等。由于相關模型沒有學習最新網路資料,且這些私有資料通常也沒有發布在公開網路上,OpenAI無法根據這些私有資訊... ......

    uj5u.com 2023-05-05 09:03:46 more
  • 【手記】翻新顯卡安裝驅動程式

    只嘗試過N卡,A卡不知道適不適用。 解包驅動程式到目錄。正常運行驅動程式,它會先解壓到c:\nvidia\xxx,然后報錯,此時不要把報錯叉掉,因為叉掉后剛剛解壓得到的c:\nvidia會被刪掉,而我們要的就是這個目錄,所以要趁這個時候,把c:\nvidia復制一份,然后再叉報錯,這樣就得到了一個解 ......

    uj5u.com 2023-05-05 09:03:36 more
  • 阿里測驗經驗7年,從功能測驗到自動化測驗,我整理的超全學習指南

    在阿里做測驗七年多,有不少人問過我下面問題:現在的手工測驗真的不行了嗎?測驗工程師,三年多快四年的經驗,入門自動化測驗需要多久?自學自動化測驗到底需要學哪些東西? ......

    uj5u.com 2023-05-05 09:03:13 more
  • vCenter報錯:Log Disk Exhaustion on 10

    vCenter報錯:Log Disk Exhaustion on 10 1、問題現象: 巡檢時發現 vCenter Server 中,錯誤顯示為:Log Disk Exhaustion on 10(字面意思是日志磁盤耗盡),VC版本 6.7 在瀏覽器輸入https://appliance-IP-ad ......

    uj5u.com 2023-05-05 09:02:46 more