欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Python實(shí)現(xiàn)一個(gè)AI物體識(shí)別

 更新時(shí)間:2024年11月04日 08:32:08   作者:志字輩小螞蟻  
計(jì)算機(jī)視覺是其中的一大領(lǐng)域?,應(yīng)用場(chǎng)景也比較多,這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)一個(gè)AI物體識(shí)別功能,需要的小伙伴可以了解下

一. 前言

近期在研究 AI 方面的應(yīng)用 ,計(jì)算機(jī)視覺是其中的一大領(lǐng)域 ,應(yīng)用場(chǎng)景也比較多。

這一篇主要嘗試弄清楚 : 一個(gè) AI 視覺識(shí)別的 功能點(diǎn) ,涉及到哪些知識(shí) ?

二. 處理流程

2.1 前置知識(shí)點(diǎn)

在實(shí)現(xiàn)這個(gè)功能之前 ,先要明白幾個(gè)前置知識(shí)點(diǎn) :

Python 層面需要的工具 :

組件工具功能描述作用
opencv-python一個(gè)開源計(jì)算機(jī)視覺庫,提供圖像和視頻處理功能。用于加載、處理和顯示圖像,進(jìn)行圖像預(yù)處理,如縮放、裁剪和繪制。
tensorflow一個(gè)開源機(jī)器學(xué)習(xí)框架,支持深度學(xué)習(xí)模型的構(gòu)建和訓(xùn)練。用于構(gòu)建和訓(xùn)練物體識(shí)別模型,提供高層次的 API 和模型管理功能。
torch一個(gè)開源深度學(xué)習(xí)框架,以動(dòng)態(tài)計(jì)算圖著稱,適合研究和生產(chǎn)。提供強(qiáng)大的張量計(jì)算功能,支持深度學(xué)習(xí)模型的訓(xùn)練和推理。
torchvisionPyTorch 的視覺工具包,提供常用的數(shù)據(jù)集、模型和圖像變換。用于加載標(biāo)準(zhǔn)數(shù)據(jù)集(如 COCO),并提供預(yù)訓(xùn)練模型和圖像預(yù)處理工具。
  • OpenCV 在前幾篇就有介紹 ,它作為計(jì)算機(jī)視覺庫 ,提供了很多圖形處理的功能。
  • 下面3個(gè)主要是 AI 領(lǐng)域的組件 ,用于使用 AI 的各項(xiàng)能力

模型和模型的選擇

我們?cè)谧R(shí)別物體的過程中 ,圖片中的物體到底是什么,這是需要一個(gè) 知識(shí)庫 來幫助給出答案的。 而模型就是那個(gè)知識(shí)庫。

模型 是指一個(gè)數(shù)學(xué)表示或計(jì)算框架,旨在從輸入數(shù)據(jù)中學(xué)習(xí)模式和規(guī)律,并進(jìn)行預(yù)測(cè)或分類

一個(gè)模型的生成包括 : 數(shù)據(jù)收集 , 數(shù)據(jù)預(yù)處理 ,數(shù)據(jù)建模 ,模型訓(xùn)練 ,模型評(píng)估 ,模型測(cè)試 及 最終使用

關(guān)于模型的生成 ,不在本篇的討論中 ,展示也不會(huì)這一塊。 這一篇主要專注于使用。

常用的物體識(shí)別模型

模型作用說明適合的場(chǎng)景
YOLO實(shí)時(shí)物體檢測(cè)模型,通過全卷積網(wǎng)絡(luò)實(shí)現(xiàn)快速檢測(cè),適合大規(guī)模應(yīng)用。監(jiān)控、自動(dòng)駕駛、機(jī)器人視覺
SSD單次檢測(cè)器,結(jié)合不同尺度的特征圖進(jìn)行物體檢測(cè),速度快且準(zhǔn)確。移動(dòng)設(shè)備、實(shí)時(shí)視頻分析
Faster R-CNN采用區(qū)域提議網(wǎng)絡(luò)(RPN)和深度卷積網(wǎng)絡(luò),實(shí)現(xiàn)高精度的物體檢測(cè)。需要高精度的任務(wù),如醫(yī)學(xué)影像分析
Mask R-CNN在 Faster R-CNN 基礎(chǔ)上增加實(shí)例分割功能,能同時(shí)進(jìn)行物體檢測(cè)和分割。圖像編輯、自動(dòng)標(biāo)注
RetinaNet使用焦點(diǎn)損失(Focal Loss)處理類別不平衡問題,適合小物體檢測(cè)。復(fù)雜背景中的物體檢測(cè)
EfficientDet結(jié)合高效模型架構(gòu)與多尺度特征融合,資源有限的環(huán)境下表現(xiàn)出色。嵌入式系統(tǒng)、移動(dòng)設(shè)備
CenterNet基于中心點(diǎn)檢測(cè)的框架,簡(jiǎn)單高效,適合實(shí)時(shí)檢測(cè)。需要實(shí)時(shí)性的物體檢測(cè)應(yīng)用

而本片主要使用的是 YOLO。

模型的使用

模型的使用有兩種方式 :

  • 一種是基于模型 + torch 的使用方式 , 也是最常規(guī)的用法
  • 一種是基于封裝的工具 ,實(shí)現(xiàn)快速的調(diào)用

2.2 模型的使用方式一

S1 : 下載 YoLo 模型

官方地址 :yolov5

pip install ultralytics

S2 : 編寫使用模型邏輯

from ultralytics import YOLO
import cv2
import matplotlib.pyplot as plt

# 加載 YOLOv5 或 YOLOv8 模型
model = YOLO('yolov5s.pt')  # 或使用 'yolov8.pt'

# 讀取圖像
image_path = 'C:\\Users\\Desktop\\test666.JPG'
image = cv2.imread(image_path)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)  # 轉(zhuǎn)換為 RGB 格式

# 進(jìn)行物體識(shí)別
results = model.predict(source=image)

# 可視化結(jié)果
# 使用 cv2 繪制邊界框
for result in results:
    boxes = result.boxes.xyxy  # 獲取邊界框信息
    scores = result.boxes.conf  # 獲取置信度
    classes = result.boxes.cls  # 獲取類別索引

    for i in range(len(boxes)):
        box = boxes[i]
        score = scores[i]
        cls = classes[i]

        x1, y1, x2, y2 = box.numpy()  # 轉(zhuǎn)換為 numpy 數(shù)組
        label = f"{model.names[int(cls)]} {score:.2f}"

        # 繪制邊界框
        cv2.rectangle(image, (int(x1), int(y1)), (int(x2), int(y2)), (255, 0, 0), 2)
        cv2.putText(image, label, (int(x1), int(y1) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)

# 使用 matplotlib 顯示圖像
plt.imshow(image)
plt.axis('off')  # 不顯示坐標(biāo)軸
plt.show()

S3 : 測(cè)試

2.2 模型的使用方式二

第二種方式更簡(jiǎn)單 ,例如 Ultralytics 就提供了一整套組件可以開箱即用。

S1 : Python 安裝 ultralytics

pip install ultralytics

S2 : 對(duì)物體進(jìn)行識(shí)別

from ultralytics import YOLO
import cv2
import matplotlib.pyplot as plt

# 加載 YOLOv5 或 YOLOv8 模型
model = YOLO('yolov5s.pt')  # 或使用 'yolov8.pt'

# 讀取圖像
image_path = 'C:\\Users\\Desktop\\test666.JPG'
image = cv2.imread(image_path)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)  # 轉(zhuǎn)換為 RGB 格式

# 進(jìn)行物體識(shí)別
results = model.predict(source=image)

# 可視化結(jié)果
# 使用 cv2 繪制邊界框
for result in results:
    boxes = result.boxes.xyxy  # 獲取邊界框信息
    scores = result.boxes.conf  # 獲取置信度
    classes = result.boxes.cls  # 獲取類別索引

    for i in range(len(boxes)):
        box = boxes[i]
        score = scores[i]
        cls = classes[i]

        x1, y1, x2, y2 = box.numpy()  # 轉(zhuǎn)換為 numpy 數(shù)組
        label = f"{model.names[int(cls)]} {score:.2f}"

        # 繪制邊界框
        cv2.rectangle(image, (int(x1), int(y1)), (int(x2), int(y2)), (255, 0, 0), 2)
        cv2.putText(image, label, (int(x1), int(y1) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)

# 使用 matplotlib 顯示圖像
plt.imshow(image)
plt.axis('off')  # 不顯示坐標(biāo)軸
plt.show()


執(zhí)行 模型的時(shí)候 ,會(huì)自動(dòng)從遠(yuǎn)程下載模型

Downloading https://github.com/ultralytics/assets/releases/download/v8.3.0/yolov5su.pt to 'yolov5su.pt'...

三. 擴(kuò)展和發(fā)展

一般沒有特殊的要求 ,大部分情況下 ,我們會(huì)選擇框架直接使用。下面主要來介紹一下 ultralytics 的 API

加載模型 :

  • YOLO(model): 用于加載 YOLO 模型,可以是本地路徑或在線模型名稱。
  • predict(source): 對(duì)給定的圖像、視頻或文件夾進(jìn)行物體檢測(cè)。

結(jié)果處理 :

  • results.print(): 打印檢測(cè)結(jié)果,包括類別和置信度。
  • results.xyxy: 返回檢測(cè)到的邊界框,格式為 (x1, y1, x2, y2, confidence, class)。
  • results.show(): 顯示帶有檢測(cè)框的圖像。
  • results.save(save_dir): 將帶有檢測(cè)框的圖像保存到指定目錄。

其他的更復(fù)雜的 :

針對(duì)初始模型 ,還可以通過數(shù)據(jù)集和訓(xùn)練來適配更復(fù)雜的場(chǎng)景 :

  • train(): 訓(xùn)練模型,支持自定義數(shù)據(jù)集。
  • val(): 驗(yàn)證模型性能,通常在訓(xùn)練后進(jìn)行。
  • Dataset(): 用于處理數(shù)據(jù)集,支持常見的數(shù)據(jù)格式。
  • create_dataloader(): 創(chuàng)建數(shù)據(jù)加載器,方便批量處理數(shù)據(jù)。

總結(jié)一下

基本上使用起來賊簡(jiǎn)單 ,簡(jiǎn)單照著文檔操作一下就能實(shí)現(xiàn)。

但是 : 生成級(jí)使用不會(huì)這么簡(jiǎn)單 , 模型相當(dāng)于一個(gè)通用的數(shù)據(jù)集 ,它只能適配常見的需求。

以上就是基于Python實(shí)現(xiàn)一個(gè)AI物體識(shí)別的詳細(xì)內(nèi)容,更多關(guān)于Python AI物體識(shí)別的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python深拷貝與淺拷貝用法實(shí)例分析

    Python深拷貝與淺拷貝用法實(shí)例分析

    這篇文章主要介紹了Python深拷貝與淺拷貝用法,結(jié)合實(shí)例形式分析了Python對(duì)象的復(fù)制、深拷貝、淺拷貝等操作原理、用法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2019-05-05
  • Django與遺留的數(shù)據(jù)庫整合的方法指南

    Django與遺留的數(shù)據(jù)庫整合的方法指南

    這篇文章主要介紹了Django與遺留的數(shù)據(jù)庫整合的方法指南,Django是最具人氣的Python開發(fā)框架,需要的朋友可以參考下
    2015-07-07
  • Python利用request庫實(shí)現(xiàn)翻譯接口

    Python利用request庫實(shí)現(xiàn)翻譯接口

    這篇文章主要為大家詳細(xì)介紹了Python如何利用request庫打造自己的翻譯接口,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-04-04
  • 變長(zhǎng)雙向rnn的正確使用姿勢(shì)教學(xué)

    變長(zhǎng)雙向rnn的正確使用姿勢(shì)教學(xué)

    這篇文章主要介紹了變長(zhǎng)雙向rnn的正確使用姿勢(shì),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python 讀取txt,json和hdf5文件的實(shí)例

    python 讀取txt,json和hdf5文件的實(shí)例

    今天小編就為大家分享一篇python 讀取txt,json和hdf5文件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 聊聊pytorch中Optimizer與optimizer.step()的用法

    聊聊pytorch中Optimizer與optimizer.step()的用法

    這篇文章主要介紹了pytorch中Optimizer與optimizer.step()的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python 幾行代碼即可實(shí)現(xiàn)人臉識(shí)別

    Python 幾行代碼即可實(shí)現(xiàn)人臉識(shí)別

    Python中實(shí)現(xiàn)人臉識(shí)別功能有多種方法,依賴于python膠水語言的特性,我們通過調(diào)用包可以快速準(zhǔn)確的達(dá)成這一目的,本文給大家分享使用Python實(shí)現(xiàn)簡(jiǎn)單的人臉識(shí)別功能的操作步驟,感興趣的朋友一起看看吧
    2022-02-02
  • python實(shí)現(xiàn)多張圖片拼接成大圖

    python實(shí)現(xiàn)多張圖片拼接成大圖

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)多張圖片拼接成大圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Python繪制箭頭向量圖的示例代碼

    Python繪制箭頭向量圖的示例代碼

    箭頭向量圖十分常見,比如天氣預(yù)報(bào)在顯示風(fēng)場(chǎng)的時(shí)候,就會(huì)貼心地用箭頭指明風(fēng)的方向,下面就跟隨小編一起學(xué)習(xí)一下如何利用Python繪制箭頭向量圖吧
    2023-08-08
  • 深入理解Python中命名空間的查找規(guī)則LEGB

    深入理解Python中命名空間的查找規(guī)則LEGB

    這篇文章主要介紹了深入理解Python中命名空間的查找規(guī)則LEGB,作者根據(jù)Python3.x版本進(jìn)行講解,需要的朋友可以參考下
    2015-08-08

最新評(píng)論