日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

YoLoV5学习(4)--detect.py程序(预测图片、视频、网络流)逐段讲解~

發布時間:2024/3/13 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 YoLoV5学习(4)--detect.py程序(预测图片、视频、网络流)逐段讲解~ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本章博客主要分析YoloV5代碼中的detect程序代碼,按照程序運行步驟順序主要分為3大部分。

1、包與庫的導入

1.1 導入安裝好的python庫、torch庫等等


其中:argparse模塊、os模塊、sys模塊都是Python內置模塊。
argparse模塊:它是一個用于命令項選項與參數解析的模塊,通過在程序中定義好我們需要的參數,argparse 將會從 sys.argv 中解析出這些參數,并自動生成幫助和使用信息;
os模塊:它提供了多種操作系統的接口。通過os模塊提供的操作系統接口,我們可以對操作系統里文件、終端、進程等進行操作;
sys模塊:它是與python解釋器交互的一個接口,該模塊提供對解釋器使用或維護的一些變量的訪問和獲取,它提供了許多函數和變量來處理 Python 運行時環境的不同部分。

from pathlib import Path

該段代碼意思是指從External Libraries->pathlib->path 導入Path庫,具體說明如下:
Path表示文件系統路徑,但與PurePath不同,它還提供方法對路徑對象進行系統調用。根據您的系統,實例化路徑將返回PosixPath或WindowsPath對象也可以直接實例化PosixPath或WindowsPath,但不能在POSIX系統上實例化WindowsPath,反之亦然。

import torch import torch.backends.cudnn as cudnn

添加torch庫,CUDNN 是英偉達專門為深度神經網絡所開發出來的 GPU 加速庫,針對卷積、池化等常見操作做了非常多的底層優化,比一般的 GPU 程序要快很多。在使用 GPU 的時候,PyTorch 會默認使用 CUDNN 加速。

1.2 導入相對路徑下的庫


導入、添加項目文件下相對應的文件夾中的庫文件。

1.3 定義一些文件路徑


_ _ file _ _表示當前detect.py的文件路徑,第一行代碼獲取其絕對路徑,第二行代碼獲取其根目錄,sys.path表示模塊的查詢路徑列表。

2、執行函數


if name == ‘main’:的作用,一個python文件通常有兩種使用方法,第一是作為腳本直接執行,第二是 import 到其他的 python 腳本中被調用(模塊重用)執行。因此 if name == ‘main’: 的作用就是控制這兩種情況執行代碼的過程,在 if name == ‘main’: 下的代碼只有在第一種情況下(即文件作為腳本直接執行)才會被執行,而 import 到其他腳本中是不會被執行的。
(1)解析命令行傳進的參數;opt = parse_opt()
該段代碼分為三部分,第一部分定義了一些可以傳導的參數類型,第二部分對于imgsize部分進行了額外的判斷(640*640),第三部分打印所有參數信息,opt變量存儲所有的參數信息,并返回。
(2)執行命令行參數; main(opt)
該段代碼分為兩部分,第一部分首先完成對于requirements.txt的檢查,檢測這些依賴包有沒有安裝;第二部分,將opt變量參數傳入,執行run函數。

3、Run函數


run函數的整體運行部分可以概括為6個部分。

3.1 對source傳入的東西進行額外判斷


此處的source對應run函數中的source,代表圖片路徑;第三行代碼判斷是否傳入為文件地址,IMG_FORMATS表示各種圖片類型,VID_FORMATS表示各種視頻類型;第四行代碼判斷是否為網絡流傳入;第五行代碼source.isnumeric判斷是否傳入為數字,–source 0,數字0表示打開電腦的第一個攝像頭;如果是一個網絡流且是一個文件,就會進行下載操作。

3.2 新建了一個保存結果的文件夾


代碼中的 project 指 run 函數中的 project,對應的是 runs/detect 的目錄,name 對應 run 函數中的“name=exp”,然后進行拼接操作;increment_path 表示增量路徑;判斷 save_txt 是否為 true,save_txt 在 run 函數以及 parse_opt() 函數中都有相應操作,如果傳入save_txt,新建 “labels” 文件夾存儲結果。

3.3 加載模型權重


首先根據代碼環境選擇加載設備,GPU/CPU。選擇多后端框架,判斷你的深度學習框架,本次是pytorch,加載模型,
讀取模型參數,判斷 imgsz,步長 stride 一般是32。

3.4 DataLoad模塊,加載待預測的圖片


首先是判斷 webcam 是否為 true,前面已經定義,不為True,因此執行 datasets.py下的LoadImages函數,完成輸入數據的加載過程。

3.5 模型的推理過程


執行模型推理過程,把圖片或者視頻輸入模型,產生一個預測結果,并用檢測框標記出來。
首先,讓模型進行一個預熱,然后定義 dt,seen 兩個變量,遍歷 dataset ,整理圖片信息;進行預測,根據 run 函數里面的置信度以及IOU參數,進行信息過濾;對檢測框進行后續處理,畫框選擇,坐標映射(640*640坐標映射為原圖坐標),是否保存繪畫結果。

3.6 打印出一些輸出信息

打印結果,記錄了一些總共的耗時,以及信息保存。

本次進行了一些簡短的分析,如果有幫助的話,點贊支持一下,后續有需要在進行其他文件程序。交流學習,互相進步~

總結

以上是生活随笔為你收集整理的YoLoV5学习(4)--detect.py程序(预测图片、视频、网络流)逐段讲解~的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。