MAC Mini M4 上測試Detectron2 圖像識別庫

????????

? ? ?斷斷續續地做圖像識別的應用,使用過各種圖像識別算法,一開始使用openCV 做教室學生計數的程序。以后又使用YOLO 做醫學傷口檢測程序。最近,開始使用meta 公司的Detectron2.打算做OCR 文檔結構分析

? ? ?Detectron2 的開發者是 Meta 的 Facebook AI 研究 (FAIR) 團隊,他們表示“我們開發 Detectron2 的目標是支持當今各種尖端的物體檢測和分割模型,同時也服務于不斷變化的尖端研究領域。”

? ? ? ?Detectron2 是一個基于 Pytorch 框架構建的深度學習模型,據稱該框架是目前最有前途的模塊化目標檢測庫之一。

本文記錄在MAC Mini M4 上做的測試。

安裝

pip install 'git+https://github.com/facebookresearch/detectron2.git@v0.4#egg=detectron2'
pip install layoutparser  
pip install Pillow==9.5.0 

代碼

#https://towardsdatascience.com/understanding-detectron2-demo-bc648ea569e5/
import argparseimport cv2
import numpy as np
import refrom detectron2 import model_zoo
from detectron2.config import get_cfg, CfgNode
from detectron2.data import MetadataCatalog
from detectron2.engine import DefaultPredictor
from detectron2.structures import Instances
from detectron2.utils.visualizer import Visualizer, VisImagedef _get_parsed_args() -> argparse.Namespace:"""Create an argument parser and parse arguments.:return: parsed arguments as a Namespace object"""parser = argparse.ArgumentParser(description="Detectron2 demo")# default model is the one with the 2nd highest mask AP# (Average Precision) and very high speed from Detectron2 model zooparser.add_argument("--base_model",default="COCO-InstanceSegmentation/mask_rcnn_R_101_FPN_3x.yaml",help="Base model to be used for training. This is most often ""appropriate link to Detectron2 model zoo.")parser.add_argument("--images",nargs="+",help="A list of space separated image files that will be processed. ""Results will be saved next to the original images with ""'_processed_' appended to file name.")return parser.parse_args()if __name__ == "__main__":args: argparse.Namespace = _get_parsed_args()cfg: CfgNode = get_cfg()cfg.merge_from_file(model_zoo.get_config_file(args.base_model))cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.4cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url(args.base_model)cfg.MODEL.DEVICE = "mps"predictor: DefaultPredictor = DefaultPredictor(cfg)image_file: strfor image_file in args.images:img: np.ndarray = cv2.imread(image_file)output: Instances = predictor(img)["instances"]v = Visualizer(img[:, :, ::-1],MetadataCatalog.get(cfg.DATASETS.TRAIN[0]),scale=1.0)result: VisImage = v.draw_instance_predictions(output.to("cpu"))result_image: np.ndarray = result.get_image()[:, :, ::-1]# get file name without extension, -1 to remove "." at the endout_file_name: str = re.search(r"(.*)\.", image_file).group(0)[:-1]out_file_name += "_processed.png"cv2.imwrite(out_file_name, result_image)

注意:在這個過程中出現錯誤:

raise AssertionError("Torch not compiled with CUDA enabled")AssertionError: Torch not compiled with CUDA enabled

Mac Mini 的GPU 稱為mps。我添加了 cfg.MODEL.DEVICE = "mps"。你可以測試一下:

import torch
print(torch.mps.is_available())
True

運行?

python detectron2_demo4.py --images david-clarke-KTF-gr3uWvs-unsplash.jpg

輸入的圖片?

輸出

輸出的速度比較慢,大約121秒。

另一個圖片識別

姑娘與狗

耗費時間99秒。

先這樣吧,日后慢慢地學習。?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77005.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77005.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77005.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一天時間,我用AI(deepseek)做了一個配色網站

前言 最近在開發顏色搭配主題的相關H5和小程序,想到需要補充一個web網站,因此有了這篇文章。 一、確定需求 向AI要答案之前,一定要清楚自己想要做什么。如果你沒有100%了解自己的需求,可以先讓AI幫你理清邏輯和思路,…

機器視覺用消色差雙合透鏡

光學系統案例:機器視覺用消色差雙合透鏡 一、設計規格 1. 應用場景:專為工業相機成像而設計,工作于可見光波段,旨在滿足該領域對高精度成像的需求。 2. 核心參數: ? 焦距:精確要求達到 50 mm 1%&#…

批量歸一化(Batch Normalization)原理與PyTorch實現

批量歸一化(Batch Normalization)是加速深度神經網絡訓練的常用技術。本文通過Fashion-MNIST數據集,演示如何從零實現批量歸一化,并對比PyTorch內置API的簡潔實現方式。 1. 從零實現批量歸一化 1.1 批量歸一化函數實現 import t…

feedback

這個文件 lib/pages/feedback/index.dart 是一個反饋/留言表單頁面的實現,主要功能是: 表單收集功能: 真實姓名(必填)聯系電話(必填,需要驗證手機號格式)電子郵箱(選填&a…

數據倉庫標準庫模型架構相關概念淺講

數據倉庫與模型體系及相關概念 數據倉庫與數據庫的區別可參考:數據庫與數據倉庫的區別及關系_數據倉庫和數據庫-CSDN博客 總之,數據庫是為捕獲數據而設計,數據倉庫是為分析數據而設計 數據倉庫集成工具 在一些大廠中,其會有自…

適用于 HAL 的 AIDL

目錄 設計初衷 注意 編寫AIDLHAL接口 查找AIDLHAL接口 擴展接口 將現有HAL從HIDL轉換為AIDL AIDL與HIDL之間的主要差異 針對HAL的供應商測試套件(VTS)測試 Android 11 中引入了在 Android 中使用 AIDL 實現 HAL 的功能, 從而可以在不使用 HIDL 的情況下實現 Android 的部分…

leetcode0547. 省份數量-medium

1 題目:省份數量 官方標定難度:中 有 n 個城市,其中一些彼此相連,另一些沒有相連。如果城市 a 與城市 b 直接相連,且城市 b 與城市 c 直接相連,那么城市 a 與城市 c 間接相連。 省份 是一組直接或間接相…

【專題刷題】雙指針(一)

📝前言說明: 本專欄主要記錄本人的基礎算法學習以及LeetCode刷題記錄,按專題劃分每題主要記錄:1,本人解法 本人屎山代碼;2,優質解法 優質代碼;3,精益求精,…

WebSocket 技術詳解

引言 在現代Web應用中,實時通信已經成為不可或缺的一部分。想象一下聊天應用、在線游戲、股票交易平臺或協作工具,這些應用都需要服務器能夠即時將更新推送給客戶端,而不僅僅是等待客戶端請求。WebSocket技術應運而生,它提供了一…

【redis】初識redis

初識redis Redis 是一種基于鍵值對(key-value) 的 NoSQL 的數據庫,它與很多鍵值數據庫不同, Redis 中的值可以是 string(字符串) 、hash(哈希)、list(鏈表)、…

UE5 制作方塊邊緣漸變邊框效果

該效果基于之前做的(https://blog.csdn.net/grayrail/article/details/144546427)進行修改得到,思路也很簡單: 1.打開實時預覽 1.為了制作時每個細節調整方便,勾選Live Update中的三個選項,開啟實時預覽。…

基于springboot的“嗨玩旅游網站”的設計與實現(源碼+數據庫+文檔+PPT)

基于springboot的“嗨玩旅游網站”的設計與實現(源碼數據庫文檔PPT) 開發語言:Java 數據庫:MySQL 技術:springboot 工具:IDEA/Ecilpse、Navicat、Maven 系統展示 系統功能結構圖 局部E-R圖 系統首頁界面 系統注冊…

grafana/loki 部署搜集 k8s 集群日志

grafana/loki 和 grafana/loki-stack 的區別 ?Grafana 提供了多個 Helm Chart 用于在 Kubernetes 集群中部署 Loki 及相關組件,其中主要包括 grafana/loki 和 grafana/loki-stack。?它們的主要區別如下:? 1.grafana/loki Helm Chart: 專注于 Loki 部署: 該 Chart 專門…

Nacos-Controller 2.0:使用 Nacos 高效管理你的 K8s 配置

作者:濯光、翼嚴 Kubernetes 配置管理的局限 目前,在 Kubernetes 集群中,配置管理主要通過 ConfigMap 和 Secret 來實現。這兩種資源允許用戶將配置信息通過環境變量或者文件等方式,注入到 Pod 中。盡管 Kubernetes 提供了這些強…

python自動化瀏覽器標簽頁的切換

#獲取全部標簽頁的句柄返回句柄的列表 handleswebdriver.window_handles#獲取全部標簽頁的句柄返回句柄的列表 print(len(handles)) 切換標簽頁 handleswebdriver.window_handles webdriver.switch_to.window(handles[index])#切換到第幾個標簽頁就寫幾 關閉標簽頁 關閉標…

微信小程序組件傳參

微信小程序組件傳參感覺和vue還是挺像的 父組件向子組件傳參 在小程序中父組件子組件傳參,主要使用properties屬性。演示下: 創建組件文件夾component,創建組件demoComponent,記得創建的時候選擇組件,不是page頁面 …

【嵌入式硬件】LAN9253說明書(中文版)

目錄 1.介紹 1.1總體介紹 1.2模式介紹 1.2.1微控制器模式: 1.2.2 擴展模式 1.2.3 數字IO模式 1.2.4 各模式圖 2.引腳說明 2.1 引腳總覽 2.2 引腳描述 2.2.1 LAN端口A引腳 2.2.2 LAN端口B引腳 2.2.3 LAN端口A和、B電源和公共引腳 2.2.4 SPI/SQI PINS 2.2.5 分布式時…

【C語言基礎】雙指針在qsort函數中的應用

在C語言中使用 qsort 對字符串數組(如 char* 數組)排序時,必須轉換為雙指針(char**),這是由字符串數組的內存結構和 qsort 的工作原理決定的。以下是詳細解釋: 一、底層原理分析 1. 字符串數組…

批處理(Batch Processing)的詳解、流程及框架/工具的詳細對比

以下是批處理(Batch Processing)的詳解、流程及框架/工具的詳細對比: 一、批處理核心概念 定義: 批處理是離線處理大量數據或任務的自動化流程,特點是無人值守、高吞吐量、資源密集型,常用于數據清洗、報表…

基于FreeRTOS和LVGL的多功能低功耗智能手表(APP篇)

目錄 一、簡介 二、軟件框架 2.1 MDK工程架構 2.2 CubeMX框架 2.3 板載驅動BSP 1、LCD驅動 2、各個I2C傳感器驅動 3、硬件看門狗驅動 4、按鍵驅動 5、KT6328藍牙驅動 2.4 管理函數 2.4.1 StrCalculate.c 計算器管理函數 2.4.2 硬件訪問機制-HWDataAccess 2.4.3 …