目標檢測20年(一)

今天看的文獻是《Object Detection in 20 Years: A Survey》,非常經典的一篇目標檢測文獻,希望通過這篇文章學習到目標檢測的基礎方法并提供一些創新思想。

論文鏈接:1905.05055


目錄

一、摘要

1.1 原文

1.2 翻譯

二、介紹

三、目標檢測二十年發展

3.1 目標檢測發展路線圖

3.1.1 里程碑1

3.1.1.1 Viola Jones Detectors

3.1.1.2 HOG Detector

3.1.1.3 DPM

3.1.2 里程碑2

3.1.2.1 RCNN

3.1.2.2 SPPNet

3.1.2.2 Fast RCNN

3.1.2.3 Faster RCNN

3.1.2.4 FPN

3.1.3 里程碑3

3.1.3.1 YOLO

3.1.3.2 SSD

3.1.3.3 RetinaNet?

3.1.3.4 CornerNet

3.1.3.5 CenterNet

3.1.3.6 DETR


一、摘要

1.1 原文

Object detection, as of one the most fundamental and challenging problems in computer vision, has received great attention in recent years. Over the past two decades, we have seen a rapid technological evolution of object detection and its profound impact on the entire computer vision field. If we consider today’s object detection technique as a revolution driven by deep learning, then back in the 1990s, we would see the ingenious thinking and long-term perspective design of early computer vision. This paper extensively reviews this fast-moving research field in the light of technical evolution, spanning over a quarter-century’s time (from the 1990s to 2022). A number of topics have been covered in this paper, including the milestone detectors in history, detection datasets, metrics, fundamental building blocks of the detection system, speed-up techniques, and the recent state-of-the-art detection methods.

1.2 翻譯

目標檢測作為計算機視覺中最基本、最具挑戰性的問題之一,近年來受到了廣泛的關注。在過去的二十年里,我們看到了物體檢測技術的快速發展及其對整個計算機視覺領域的深遠影響。如果我們認為今天的物體檢測技術是一場由深度學習推動的革命,那么回到20世紀90年代,我們會看到早期計算機視覺的巧妙思維和長期視角設計。本文從技術發展的角度廣泛回顧了這一快速發展的研究領域,跨越了四分之一個世紀的時間(從20世紀90年代到2022年)。本文涵蓋了許多主題,包括歷史上的里程碑檢測器,檢測數據集,度量,檢測系統的基本構建塊,加速技術以及最新的最先進的檢測方法。

二、介紹

目標檢測的目標是開發計算模型和技術,解決這樣兩個問題:目標是什么?目標在哪里?(其實就是分類和定位)

目標檢測是實例分割、圖像字幕、目標跟蹤等視覺任務的基礎。深度學習的發展也讓目標檢測取得了巨大的進步,現在目標檢測已經廣泛應用于許多現實場景如自動駕駛、機器人視覺和視頻監控等。下圖展示了過去二十年里與“目標檢測”相關刊物的出版:

我們可以看到從1998年起刊物出版量逐步提升,2018年后增長幅度明顯增加,且直到2021年都在持續增長。

不同檢測任務的目標和條件不同導致任務難度有所不同,除了常見挑戰如不同視角、光照和不同類物體變化之外,還有包括但不限于物體旋轉、尺度變化、精確定位、密集和遮擋目標檢測和檢測速度的提升等。

本文的目的就是向讀者展示相關技術的演變,令讀者能夠掌握基本概念并找到潛在未來方向,而忽略技術細節。

三、目標檢測二十年發展

這個部分主要回顧目標檢測歷史發展,包括里程碑、數據集、指標和關鍵技術演變。

3.1 目標檢測發展路線圖

在前兩個世紀,人們普遍認為目標檢測經過了兩個歷史時期:傳統目標檢測時期(2014年以前)和基于深度學習的檢測(2014年以后),如下圖展示:

我們可以看到,2014年之前我們采用的是傳統目標檢測方法如VJ Det、HOG Det和DPM這些,在2014年出現了RCNN、YOLO、SSD這些以深度學習框架為主流的算法。并且深度學習的算法主要分為兩類:單階段檢測和雙階段檢測。

下面我們將以出現時間和性能為主要指引,重點突出背后的技術所在,如下圖所示:

3.1.1 里程碑1

此時主要是傳統的檢測器。其實我們回顧早期20世紀90年代的檢測技術,也是會覺得是視覺的巧妙設計和長期的視角。大多數早期檢測算法都是基于手工特征的,由于缺乏有效圖像表示,人們不得不設計復雜的特征表示和各種加速的方法。

3.1.1.1 Viola Jones Detectors

2001年,Viola和Jones首次實現不受任何限制的人臉實時檢測。同等檢測精度下,速度比其他算法快數十倍甚至數百倍。VJ檢測器通過滑動窗口:即通過圖像中可能的位置和比例,檢測某窗口是否包含人臉。主要采用三種技術實現:“積分圖像”、“特征選擇”和“級聯檢測”。

3.1.1.2 HOG Detector

2005年,Dala和Triggs提出定向梯度直方圖特征(Histogram of Oriented Gradients,HOG)描述符。這是一種對尺度不變特征變換和形狀上下文的重要改進。HOG主要用來進行行人檢測,通常是保持檢測窗口大小不變的情況下,對輸入圖像進行多次縮放實現。其一直是許多計算機視覺應用的基礎。

3.1.1.3 DPM

可變性零件模型(Deformable Part-based Model,DPM)是傳統目標檢測方法的縮影,最初由Felzenszwalb在2008年提出,屬于HOG的一種延伸。其采用的是“分而治之”的思想,訓練可以認為是一種合適的分解目標的方法,而推理則是對不同目標部分的檢測合集。例如,檢測汽車可以分解為檢測車窗、車身和車輪。這又被成為“明星模型”,也是F等人提出的。之后,Girshick將該模型擴展到“混合模型”,以處理變化更大的物體。現在許多檢測器都受到該模型的影響,如混合模型、硬負挖掘、邊界框回歸、上下文啟動等。

3.1.2 里程碑2

基于卷積神經網絡(CNN)的兩階段檢測器。隨著手工特征性能飽和,目標檢測在2010年達到聘平緩期,直到2012年卷積神經網絡的誕生。Girshick等人率先提出了帶有CNN特征的區域(RCNN),那時之后目標檢測發展迅速。基于深度學習的檢測算法分為單階段和雙階段,前者將框架為“一步完成”,后者將其作為“粗-精”的過程。

3.1.2.1 RCNN

RCNN(Region with CNN )首先通過選擇性搜索提取一組對象建議(即候選框),然后將每個建議重新縮放成固定大小的圖像,并輸入在ImageNet上預訓練的CNN模型加以提取特征。最后使用線性支持向量機(SVM)分類器預測區域內物體并識別類別。盡管RCNN取得了顯著性能提升,但也有明顯缺點:大量重疊區域上進行冗余特征計算導致速度較慢。SPPNet解決了該問題。

3.1.2.2 SPPNet

2014年He等人提出空間金字塔池化網絡(Spatial Pyramid Pooling Network,SPPNet),引入了空間金字塔池化層,使CNN生成固定長度表示。輸入圖像只需要計算一次特征映射,然后生成任意區域的固定長度表示用于訓練檢測器,避免重復計算卷積特征。SPPNet比RCNN快20倍以上。但仍存在一定缺點:訓練多階段,只對全連接層進行微調,忽略之前的層。Fast RCNN解決了這些問題。

3.1.2.2 Fast RCNN

2015年Girshick提出Fast RCNN。該檢測器能夠在相同網絡配置下同時訓練檢測器和邊界框回歸器。盡管其速度比RCNN快200倍以上,但仍存在缺陷:速度受到建議區域的限制。

3.1.2.3 Faster RCNN

2015年Ren等人提出了Faster RCNN。Faster RCNN引入了區域建議網絡(Region Proposal Network,RPN),使得幾乎沒有成本的區域建議成為可能。從R-CNN到Faster RCNN,目標檢測系統的大多數獨立的模塊都已經集成到一個統一的端到端學習框架中。盡管如此,后續檢測階段仍存計算冗余。

3.1.2.4 FPN

2017年,Lin等人提出FPN(Feature Pyramid Networks)。FPN開發出一種具有橫向連接的自頂向下架構,用在所有尺度上構建高級語義。目前FPN已成為大多數最新檢測器基本組成部分。

3.1.3 里程碑3

此部分主要是基于CNN的單階段檢測器。大多數兩階段檢測器遵循從粗到精的處理范式,粗的使努力提高召回能力,精的是在粗的檢測基礎上細化定位,強調區分能力。工程中很少使用兩階段檢測器,相反單階段可以一步推理中檢索所有對象,適用于移動設備,在密集和小物體方面性能收到影響。

3.1.3.1 YOLO

Joseph等人在2015年提出YOLO(You Only Look Once)yolo將單個神經網絡應用與整個圖像,將圖像劃分為多個區域,同時預測每個預取邊界框和概率,檢測速度大大提升,但精度有下降。YOLOv7引入動態標簽分配和模型結構重新參數化等優化結構,速度和精度更優。

3.1.3.2 SSD

Liu等人于2015年提出SSD(Single Shot MultiBox Detector)。主要引入多參考點和多分辨率檢測技術,顯著提高對小目標的檢測精度。SSD可以檢測網絡不同層的不同規模目標,其余檢測器只能在頂層預測。

3.1.3.3 RetinaNet?

單階段探測器檢測精度一直落后于兩階段,2017年Lin等人提出了RetinaNet,密集檢測訓練過程中遇到的極端前景-背景類不平衡是主要問題。于是,他們引入新的損失函數:焦點損失(Focal Loss)重塑標準交叉熵損失,使檢測器在訓練過程中更多的關注難分類、錯誤分類的例子。

3.1.3.4 CornerNet

Law等人為解決錨框需要提供分類、回歸參考等而建立大量參考框路徑的問題拋棄了以前的范式,提出CornerNet,該算法將任務視為關鍵點的預測,獲取關鍵點后,利用額外的嵌入信息對角落點進行解耦和重新分組,形成邊界框。

3.1.3.5 CenterNet

Zhou等人于2019年提出CenterNet。它還是遵循基于關鍵點的檢測范例,但消除了代價高昂的后處理,例如基于組的關鍵點分配和NMS,從而形成完全端到端的檢測網絡。

3.1.3.6 DETR

Transformers影響了整個深度學習領域,它拋棄了傳統卷積算子,轉而采用注意力單獨計算,以客服CNN的局限性,獲得全局尺度感受野,2020年Carion提出DETR,將目標檢測視為一個集合預測的問題,并提出一個端到端的變壓器檢測網絡。

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

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

相關文章

分割 / 合并大文件的簡單 python 代碼

使用方法 分割: python fs.py -n <分割后的文件個數> <要分割的文件> 合并: python fs.py -m <分割文件1> <分割文件2> ... 示例 PS C:\Users\Administrator\Desktop> python fs.py 使用方法: 分割: python fs.py -n <分割后的文件個數> &…

IDEA 快捷鍵ctrl+shift+f 無法全局搜索內容的問題及解決辦法

本篇文章主要講解IDEA、phpStrom、webStrom、pyCharm等jetbrains系列編輯器無法進行全局搜索內容問題的主要原因及解決辦法。 日期&#xff1a;2025年3月22日 作者&#xff1a;任聰聰 現象描述&#xff1a; 1.按下ctrlshiftf 輸入法轉為了繁體。 2.快捷鍵ctrlshiftr 可以全局檢…

樹狀數組【數據結構】

樹狀數組 簡介 1.應用 1.單點修改區間查詢 2.區間修改單點查詢(差分) 3.區間修改區間查詢(差分公式) 總而言之,就是動態維護前綴和。 2.樹狀結構圖 3.lowbit函數 我們知道&#xff0c;任何一個正整數都可以被表示成一個二進制數。如&#xff1a; ( 2 ) 10 ( 10 ) 2 (2)_{10…

pytorch+maskRcnn框架訓練自己的模型以及模型導出ONXX格式供C++部署推理

背景 maskrcnn用作實例分割時&#xff0c;可以較為精準的定位目標物體&#xff0c;相較于yolo只能定位物體的矩形框而言&#xff0c;優勢更大。雖然yolo的計算速度更快。 直接開始從0到1使用maskrCNN訓練自己的模型并并導出給C部署&#xff08;親測可用&#xff09; 數據標注…

PCL配置

1、下載 打開GitHub網站&#xff0c;搜索pcl&#xff0c;選擇第一個結果打開&#xff0c;按照下圖步驟操作 下載PCL預編譯安裝程序PCL-1.13.1-AllInOne-msvc2022-win64.exe 和要安裝的PCL組件&#xff08;例如pcl-1.13.1-pdb-msvc2022-win64.zip&#xff09; 2、安裝 雙擊 P…

大模型tokenizer重構流程

大模型tokenizer層再訓練&#xff08;選取Qwen7B試驗&#xff0c;重構token層&#xff09; 最近公司可能想訓練一個蛋白質大模型&#xff0c;需要了解一下大模型tokenizer重構&#xff0c;之后可能要訓練&#xff0c;這里做了一定的總結。 文章目錄 1. 首先查看Qwen2.5 7B基本…

Android設計模式之單例模式

一、定義&#xff1a;確保一個類只有一個實例&#xff0c;并且自動實例化&#xff0c;并向整個系統提供這個實例。 二、使用場景&#xff1a;避免重復創建對象&#xff0c;過多消耗系統資源。 三、使用方式 3.1餓漢式&#xff1a;類加載時立即初始化&#xff0c;線程安全&…

docker ssh遠程連接

目錄 操作命令&#xff1a; 確保 SSH 配置允許 root 登錄&#xff1a; docker提交&#xff1a; 操作命令&#xff1a; # 進入容器 docker exec -ti lbg04 /bin/bash# 更新包管理并安裝 SSH 服務&#xff08;Ubuntu/Debian 示例&#xff09; apt-get update apt-get install…

關于matlab和python誰快的問題

關于matlab和python誰快的問題&#xff0c;python比matlab在乘法上快10倍&#xff0c;指數計算快4倍&#xff0c;加減運算持平&#xff0c;略慢于matlab。或許matlab只適合求解特征值。 import torch import timen 50000 # 矩陣規模 M torch.rand(n, 31)start_time time.t…

準確--配置服務器文件數

某些系統可能在 /etc/security/limits.d/ 目錄下有額外配置覆蓋全局設置。檢查是否存在沖突文件&#xff1a; ls /etc/security/limits.d/如果有文件&#xff08;如 90-nproc.conf 或 90-nofile.conf&#xff09;&#xff0c;需編輯或刪除這些文件中的沖突配置。 確保系統啟用…

VectorBT:使用PyTorch+LSTM訓練和回測股票模型 進階一

VectorBT&#xff1a;使用PyTorchLSTM訓練和回測股票模型 進階一 本文介紹了如何使用PyTorch和LSTM模型進行股票數據的訓練和回測。涵蓋了數據預處理、特征選擇、LSTM模型構建、模型訓練與驗證、動態閾值策略生成交易信號以及使用VectorBT進行回測和績效分析。 文中內容僅限技術…

mysql中的聚簇索引,什么是聚簇索引和非聚簇索引

文章目錄 1. 什么是聚簇索引2. 非聚簇索引3. 聚簇索引的優缺點4. 聚簇索引的使用場景5. 聚簇索引和主鍵索引的異同前言: 在繼續講解專欄內容之前,先學習幾個概念,以便更好了解: 什么是聚簇索引什么是回表這篇文章詳細分析 聚簇索引。回表的理解可以進入這篇文章:什么是回表…

MantisBT在Windows10上安裝部署詳細步驟

MantisBT 是一款基于 Web 的開源缺陷跟蹤系統&#xff0c;以下是在 Windows 10 上安裝部署 MantisBT 的詳細步驟&#xff1a; 1. 安裝必要的環境 MantisBT 是一個基于 PHP 的 Web 應用程序&#xff0c;因此需要安裝 Web 服務器&#xff08;如 Apache&#xff09;、PHP 和數據…

深入理解K8s與Docker的關系:容器化技術的雙雄

友情提示&#xff1a;本文內容由銀河易創&#xff08;https://ai.eaigx.com&#xff09;AI創作平臺gpt-4-turbo模型生成&#xff0c;僅供參考。 在現代云計算及微服務架構的發展中&#xff0c;Docker與Kubernetes&#xff08;K8s&#xff09;作為兩大核心技術&#xff0c;被廣泛…

藍橋與力扣刷題(藍橋 藍橋騎士)

題目&#xff1a;小明是藍橋王國的騎士&#xff0c;他喜歡不斷突破自我。 這天藍橋國王給他安排了 N 個對手&#xff0c;他們的戰力值分別為 a1,a2,...,an&#xff0c;且按順序阻擋在小明的前方。對于這些對手小明可以選擇挑戰&#xff0c;也可以選擇避戰。 身為高傲的騎士&a…

如何查看window電腦的GPU信息

GPU&#xff08;圖形處理器&#xff0c;Graphics Processing Unit&#xff09;和顯卡是兩個密切相關但不同的概念 概念 1. ?基本概念? ?GPU?&#xff1a;是專門用于處理圖像和視頻信息的微處理器&#xff0c;擁有強大的并行計算能力&#xff0c;主要負責圖形渲染、數值分…

26考研——查找_樹形查找_二叉排序樹(BST)(7)

408答疑 文章目錄 三、樹形查找二叉排序樹&#xff08;BST&#xff09;二叉排序樹中結點值之間的關系二叉樹形查找二叉排序樹的查找過程示例 向二叉排序樹中插入結點插入過程示例 構造二叉排序樹的過程構造示例 二叉排序樹中刪除結點的操作情況一&#xff1a;被刪除結點是葉結點…

【數據庫事務、消息隊列事務、Redis 事務、Spring 事務 詳細分析】

數據庫事務、消息隊列事務、Redis 事務、Spring 事務** 的詳細分析 在分布式系統和應用開發中&#xff0c;事務管理是確保數據一致性和可靠性的關鍵機制。以下是針對 數據庫事務、消息隊列事務、Redis 事務、Spring 事務 的詳細分析&#xff0c;包括原理、特點、適用場景和對比…

kubectl 命令參數詳解與示例

kubectl 命令參數詳解與示例 kubectl 是 Kubernetes 的命令行工具&#xff0c;用于與 Kubernetes 集群交互。下面我將詳細介紹 kubectl 的主要命令參數&#xff0c;并提供相應的使用示例。 一、基礎命令 1. kubectl get - 獲取資源信息 常用參數&#xff1a; -n, --namesp…

#vue中解決異步請求的競態

// composables/useFetchWithoutRace.js import { ref } from vue; import axios from axios;// 定義一個可復用的 Composition 函數&#xff0c;處理帶有競態控制的異步請求 export function useFetchWithoutRace() {// 定義響應式變量 latestRequestId&#xff0c;用于追蹤最…