Python----目標檢測(MS COCO數據集)

一、MS COCO數據集

COCO 是一個大規模的對象檢測、分割和圖像描述數據集。COCO有幾個 特點:

????????Object segmentation:目標級的分割(實例分割)

????????Recognition in context:上下文中的識別(圖像情景識別)

????????Superpixel stuff segmentation:超像素分割

????????330K images (>200K labeled):330K 圖像(>200K 已經做好標記)

????????1.5 million object instances:150 萬個對象實例

????????80 object categories:80 個目標類別

????????91 stuff categories: 91 個場景物體類別 (stuff中包含沒有明確邊界 的材料和對象,比如天空)

????????5 captions per image:每張圖片 5 個情景描述(標題)

????????250,000 people with keypoints:250,000 人體的關鍵點標注

注意:80 object categories 是 91 stuff categories 的子集

????????80 object categories 是傳統意義上的“物體”,通常是可以單獨識別和分 割的具體對象。它們通常具有明確的邊界,可以用邊界框(bounding box)和分割掩碼(segmentation mask)進行標注。例如:人 (person)、自行車(bicycle) 這些物體類別在圖像中通常是離散的,可 以被獨立標注和識別。

????????91 Stuff Categories 是“場景物體”或“背景物體”,通常是一些沒有明確邊 界的區域,通常作為背景存在。它們不容易被單獨識別,因為它們的邊界 通常是連續的。這些類別在圖像中通常覆蓋大面積,且沒有清晰的邊界。 例如:草(grass)、天空(sky) 這些場景物體類別的標注通常用于場景 解析任務,例如場景分割(scene segmentation),而不是對象檢測。

官方:

????????COCO - Common Objects in Context

論文

????????[1405.0312] Microsoft COCO: Common Objects in Context?

二、與Pascal VOC對比

????????橙色是Pascal VOC包含的類別,藍色是COCO包含的類別。縱坐標是標注 的數量。 很

????????多模型的預訓練模型(模型文件)都是COCO數據集上訓練出來的,然后我們自己去做遷移學習進行訓練。

????????注意:COCO數據集訓練非常耗時,一般單塊GPU(如 NVIDIA V100): 通常需要數天到數周的訓練時間。

三、目標檢測需要的文件?

2017 Train images [118K/18GB]:訓練過程中使用到的所有圖像文件

2017 Val images [5K/1GB]:驗證過程中使用到的所有圖像文件

2017 Train/Val annotations[241MB]:對應訓練集和驗證集的標注json文 件

train2017:所有訓練圖像文件夾(118287張)

val2017:所有驗證圖像文件夾(5000張)

annotations:對應標注文件夾

????????|—instances train2017.json:對應目標檢測、分割任務的訓練集標注 文

????????|—instances_val2017.json:對應目標檢測、分割任務的驗證集標注文 件

????????|—captions train2017.json:對應圖像描述的訓練集標注文件

????????|—captions_va12017.json:對應圖像描述的驗證集標注文件

????????|—person keypoints train2017.json:對應人體關鍵點檢測的訓練集 標注文件

????????|—person_keypoints_val2017.json:對應人體關鍵點檢測的驗證集標 注文件夾

四、讀取COCO數據集的JSON

import jsonlabels =json.load(open("../annotations_trainval2017/annotations/instances_train2017.json","r"))
print(labels)

?直接打印的話,打印不全,同時格式很亂,所以使用debug。

?其中:labels中有5個字典:分別是info、licenses、Images、 annotations、categories。

4.1、info

這個字典包含了關于數據集的基本信息。

????????description : 數據集的描述,這里是 "COCO 2017 Dataset"。

????????url : 數據集的URL鏈接,即官網地址,這里是 "https://cocodataset.org/"。

????????version : 數據集的版本號,這里是 "1.0"。

????????year : 數據集創建的年份,這里是 2017。

????????contributor : 數據集的貢獻者,這里是 "COCO Consortium"。

????????date_created : 數據集創建的日期,這里是 "2017/09/01"。

4.2、licenses

這個字典列表包含了數據集所用到的不同許可證的信息。

每個字典表示一種許可證,包含以下鍵:

????????id : 許可證的唯一標識符。

????????name : 許可證的名稱。

????????url : 許可證的詳細信息鏈接。

例如: id: 1 , name: Attribution-NonCommercial-ShareAlike License 代表此許可證。

4.3、images

這個字典列表包含了數據集中所有圖像的信息。

每個字典表示一張圖像,包含以下鍵:

????????id : 圖像的唯一標識符。

????????coco_url : 圖像的COCO數據集URL。

????????其他可能包含的信息如文件名、高度、寬度等。

4.4、annotations

這個字典列表包含了數據集中所有標注的信息。

每個字典表示一個標注,包含以下鍵:

????????id : 標注的唯一標識符。

????????image_id : 該標注所屬圖像的唯一標識符。

????????category_id : 該標注所屬類別的唯一標識符(91 stuff categories的 索引)。

????????area : 標注區域的面積。

????????bbox : 標注的邊界框(bounding box),通常用一個四元組表示(x, y, width, height)。

????????segmentation : 分割標注的信息,通常是一個多邊形的點集。

????????其他標注信息如分數(score)、關鍵點(keypoints)等。

4.5、categories

這個字典列表包含了數據集中所有類別的信息(91 stuff categories,使用 80 object categories時需要映射)。

每個字典表示一個類別,包含以下鍵:

????????id : 類別的唯一標識符。

????????name : 類別的名稱(如 "person", "bicycle" 等)。

????????supercategory : 類別的上一級分類(超類)。

例如:

????????id: 1 , name: person , supercategory: person 代表 "person" 類 別。

五、使用pycocotools讀取COCO數據集

5.1、安裝pycocotools

python -m pip install pycocotools-windows==2.0.0.2  -i https://pypi.tuna.tsinghua.edu.cn/simple/

5.2、讀取COCO數據集并顯示目標檢測的第一張

import os
import json
from PIL import Image, ImageDraw
from pycocotools.coco import COCO# COCO數據集的路徑
annotation_path = "./instances_val2017.json"
img_path = "./val2017/val2017"# 加載COCO數據集,打斷點
coco = COCO(annotation_path)
# 查看5000張圖像# 獲取所有圖像的ID
img_ids = coco.getImgIds()
# 看到所有5000張圖像的索引# 處理前5張圖像
for img_id in img_ids[:1]:# 獲取圖像信息,可以看到397133這章圖片的信息img_info = coco.loadImgs(img_id)[0]img_file = os.path.join(img_path, img_info['file_name'])# 打開圖像img = Image.open(img_file)draw = ImageDraw.Draw(img)# 獲取該圖像的所有標注# getAnnIds 函數可以接受多個參數,例如 imgIds、catIds 和 areaRng,以便根據圖像ID、類別ID或面積范圍來篩選標注。# 這個函數會返回一個標注ID列表,這些標注ID對應于指定圖像ID的所有標注。ann_ids = coco.getAnnIds(imgIds=img_id)anns = coco.loadAnns(ann_ids)for ann in anns:# 獲取類別名稱category_id = ann['category_id']category_name = coco.loadCats(category_id)[0]['name']# 獲取邊界框bbox = ann['bbox']x, y, w, h = bbox# 繪制邊界框draw.rectangle([x, y, x + w, y + h], outline="red", width=2)# 繪制類別名稱draw.text((x, y - 10), category_name, fill="red")# 顯示圖像img.show()

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

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

相關文章

【Spring AI集成實戰】基于NVIDIA LLM API構建智能聊天應用:從配置到函數調用全解析

【Spring AI集成實戰】基于NVIDIA LLM API構建智能聊天應用:從配置到函數調用全解析 前言 在人工智能應用開發領域,大語言模型(LLM)的集成能力至關重要。NVIDIA作為全球領先的GPU廠商,其LLM API提供了對Meta Llama-3.…

通用的管理賬號設置設計(一)

背景 首先說明一下需求背景: 在整個角色分類中分為管理員和用戶,用戶可以分為很多級別,比如用戶處于哪個組(group),用戶處于哪個site(城市)。管理員可以: 2.1 鎖定整個…

第5章 軟件工程基礎知識

5.2 軟件過程模型 掌握常見軟件開發模型的基本概念。 瀑布模型:各階段的固定順序,如同瀑布流水。適用于需求明確,且很少發生較大變化的項目。 演化模型: 原型模型:適用于用戶需求不清,需求經常變化的情況…

深淺拷貝?

一、定義: 淺拷貝:只復制對象的第一層屬性,若第一層屬性是引用類型(如對象、數組),則復制其內存地址,修改拷貝后的嵌套對象會影響原對象。 深拷貝:遞歸復制對象的所有層級&#xf…

MMA: Multi-Modal Adapter for Vision-Language Models論文解讀

abstract 預訓練視覺語言模型(VLMs)已成為各種下游任務中遷移學習的優秀基礎模型。然而,針對少樣本泛化任務對VLMs進行微調時,面臨著“判別性—泛化性”困境,即需要保留通用知識,同時對任務特定知識進行微…

螞蟻集團 CTO 何征宇:AGI時代,海量數據帶來的質變|OceanBase 開發者大會實錄

5 月 17 日,“第三屆 OceanBase 開發者大會”在廣州舉辦,會中,螞蟻集團 CTO 何征宇,進行了題為《AGI時代,海量數據帶來的質變》的主題分享。他深度剖析了AI 時代下,數據應用范式的變革,以及生成…

python網絡爬蟲的基本使用

各位帥哥美女點點關注,有關注才有動力啊 網絡爬蟲 引言 我們平時都說Python爬蟲,其實這里可能有個誤解,爬蟲并不是Python獨有的,可以做爬蟲的語言有很多例如:PHP、JAVA、C#、C、Python。 為什么Python的爬蟲技術會…

網頁模板素材網站 web前端網頁制作模板

在當今數字化時代,Web 前端網頁制作對于企業和個人來說至關重要。無論是企業官網、個人博客還是電商網站,一個美觀、功能性強且易于維護的網頁設計能夠有效提升用戶體驗和品牌形象。然而,從零開始設計一個網頁往往需要耗費大量的時間和精力&a…

ROS系列(一):ROS入門指南 —— 核心解析與版本演進

引言 機器人操作系統(ROS)的誕生,不僅是一場技術革命,更是一張重新定義機器人開發范式的藍圖。從實驗室的原型驗證到工業場景的規模化落地,從單機智能到群體協作,ROS以開源、模塊化和生態驅動的特性&#…

將 Docker 鏡像推送到 GitLab Container Registry 的完整步驟

一、前提準備 GitLab 項目: 在 GitLab 上擁有一個項目,例如 your-group/your-project-name。重要: 確保項目路徑(尤其是項目名稱部分)全部使用小寫字母。例如,如果初始是 Your-Project,請在項目設置中將其路徑修改為 y…

Java-HashMap基礎與擴展學習總結

?面試官?: “HashMap 是 Java 中最常用的數據結構之一,你能說說它的底層實現嗎?比如哈希沖突是怎么解決的?” ?你?(結合源碼與優化場景): “好的,HashMap 底層是數組鏈表/紅黑…

嵌入式學習之系統編程(五)進程(2)

一、進程的退出 (一)僵尸進程與孤兒進程 (二)相關函數 1、exit函數 2、_exit函數 3、atexit函數 二、進程空間的回收(相關函數) 1、wait函數 2、waitpid函數 3、練習 4、exec族 5、system函數 一…

AI時代新詞-Transformer架構:開啟AI新時代的關鍵技術

一、什么是Transformer架構? Transformer架構 是一種基于自注意力機制(Self-Attention Mechanism)的深度學習模型架構,最初由Vaswani等人在2017年的論文《Attention Is All You Need》中提出。它主要用于處理序列數據&#xff08…

基于cornerstone3D的dicom影像瀏覽器 第二十三章 mpr預設窗值與vr preset

文章目錄 前言一、mpr窗口預設窗值二、vr preset三、調用流程 前言 實現mpr窗口預設窗值,vr窗口預設配色 效果如下: 一、mpr窗口預設窗值 可參考 第十五章 預設窗值 邏輯一樣的,把windowWidth, windowCenter值轉換為voiRange值,…

shell之通配符及正則表達式

通配符與正則表達式 通配符(Globbing) 通配符是由 Shell 處理的特殊字符,用于路徑或文件名匹配。當 Shell 在命令參數中遇到通配符時,會將其擴展為匹配的文件路徑;若沒有匹配項,則作為普通字符傳遞給命令…

繼電保護與安全自動裝置:電力系統安全的守護神

電力系統是現代社會賴以生存的基礎設施,而繼電保護和安全自動裝置則是保障電力系統安全穩定運行的守護神。 它們默默無聞地工作著,在電力系統出現異常時,能夠迅速準確地切除故障,防止事故擴大,保障電力供應。 那么&…

Flink流處理基礎概論

文章目錄 引言Flink基本概述傳統數據架構的不足Dataflow中的幾大基本概念Dataflow流式處理宏觀流程數據并行和任務并行的區別Flink中幾種數據傳播策略Flink中事件的延遲和吞吐事件延遲事件的吞吐如何更好的理解事件的延遲和吞吐flink數據流的幾種操作輸入輸出轉換操作滾動聚合窗…

Tomcat 使用與配置全解

一、 Tomcat簡介 Tomcat服務器是Apache的一個開源免費的Web容器。它實現了JavaEE平臺下部分技術規范,屬于輕量級應用服務器。 1. Tomcat版本 Tomcat版本 JDK版本 Servlet版本 JSP版本 10.0.X 8 and later 5.0 3.0 9.0.x 8 and later 4.0 2.3 8.0.x 7…

Unity3D仿星露谷物語開發52之菜單頁面

1、目標 創建菜單頁面,可通過Esc鍵開啟或關閉。 當把鼠標懸停在上面時它會高亮,然后當點擊按鈕時標簽頁會被選擇。 2、 創建PauseMenuCanvas (1)創建Canvas 在Hierarchy -> PersistentScene -> UI下創建新的Cavans命名為…

Spring Boot 調優的 12 個關鍵節點

數據庫連接池調優:精準匹配系統資源 癥狀: 默認配置下,連接池資源使用不當,高并發時連接耗盡或排隊。 常見誤區: spring:datasource:hikari:maximum-pool-size: 1000 # 設置過大connection-timeout: 30000 # 設置…