Tensorflow框架:目標檢測Yolo思想

Yolo-You Only Look Once

YOLO算法采用一個單獨的CNN模型實現end-to-end的目標檢測:

  1. Resize成448448,圖片分割得到77網格(cell)
  2. CNN提取特征和預測:卷積部分負責提取特征。全鏈接部分負責預測:
  3. 過濾bbox(通過nms)
    在這里插入圖片描述
    ? YOLO算法整體來說就是把輸入的圖片劃分為SS格子,這里是33個格子。
    ? 當被檢測的目標的中心點落入這個格子時,這個格子負責檢測這個目標,如圖中的人。
    ? 我們把這個圖片輸入到網絡中,最后輸出的尺寸也是SSn(n是通道數),這個輸出的SS與原輸 入圖片SS相對應(都是33)。
    ? 假如我們網絡一共能檢測20個類別的目標,那么輸出的通道數n=2
    (4+1)+20=30。這里的2指 的是每個格子有兩個標定框(論文指出的),4代表標定框的坐標信息, 1代表標定框的置信度, 20是檢測目標的類別數。
    ? 所以網絡最后輸出結果的尺寸是SSn=3330。
    關于標定框:
    ? 網絡的輸出是S x S x (5*B+C) 的一個 tensor(S-尺寸,B- 標定框個數,C-檢測類別數,5-標定框的信息)。
    ? 5分為4+1:
    ? 4代表標定框的位置信息。框的中心點(x,y),框的高寬 h,w。
    ? 1表示每個標定框的置信度以及標定框的準確度信息。
    一般情況下,YOLO 不會預測邊界框中心的確切坐標。它預測:
    ?與預測目標的網格單元左上角相關的偏移;
    ?使用特征圖單元的維度進行歸一化的偏移。
    例如: 以上圖為例,如果中心的預測是 (0.4, 0.7),則中心在 13 x 13 特征圖上的坐標是 (6.4, 6.7)(紅色單 元的左上角坐標是 (6,6))。
    但是,如果預測到的 x,y 坐標大于 1,比如 (1.2, 0.7)。那么預測的中心坐標是 (7.2, 6.7)。注意該中心在紅色單元右側的單元中。這打破了 YOLO 背后的理論,因為如果我們假設紅色框負責預測目 標狗,那么狗的中心必須在紅色單元中,不應該在它旁邊的網格單元中。 因此,為了解決這個問題,我們對輸出執行 sigmoid 函數,將輸出壓縮到區間 0 到 1 之間,有效 確保中心處于執行預測的網格單元中。
    每個標定框的置信度以及標定框的準確度信息:
    左邊代表包含這個標定框的格子里是否有目標。有=1沒有=0。 右邊代表標定框的準確程度, 右邊的部分是把兩個標定框(一個是Ground truth一個是預測的標 定框)進行一個IOU操作,即兩個標定框的交集比并集,數值越大,即標定框重合越多,越準確。
    在這里插入圖片描述
    我們可以計算出各個標定框的類別置信度(class-specific confidence scores/ class scores): 表達的是該標定框中目標屬于各個類別的可能性大小以及標定框匹配目標的好壞。
    每個網格預測的class信息和bounding box預測的confidence信息相乘,就得到每個bounding box 的class-specific confidence score。
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    ? 其進行了二十多次卷積還有四次最大池化。其中3x3卷積用于提取特征,1x1卷積用于壓縮特征,最后將圖像 壓縮到7x7xfilter的大小,相當于將整個圖像劃分為7x7的網格,每個網格負責自己這一塊區域的目標檢測。
    ? 整個網絡最后利用全連接層使其結果的size為(7x7x30),其中7x7代表的是7x7的網格,30前20個代表的是預測 的種類,后10代表兩個預測框及其置信度(5x2)。
    在這里插入圖片描述

在這里插入圖片描述
對每一個網格的每一個bbox執行同樣操作: 7x7x2 = 98 bbox (每個bbox既有對應的class信息又有坐標信息)
在這里插入圖片描述
在這里插入圖片描述
得到每個bbox的class-specific confidence score以后,設置閾值,濾掉得分低的boxes,對保留的 boxes進行NMS處理,就得到最終的檢測結果。
在這里插入圖片描述
排序后,不同位置的框內,概率不同:
在這里插入圖片描述
以最大值作為bbox_max,并與比它小的非0值(bbox_cur)做比較:IOU
在這里插入圖片描述
遞歸,以下一個非0 bbox_cur(0.2)作為bbox_max繼續比較IOU:
在這里插入圖片描述
最終,剩下n個框。
得到每個bbox的class-specific confidence score以后,設置閾值,濾掉得分低的boxes,對保留的boxes進行NMS處理,就得到最終的檢測結果。
在這里插入圖片描述
對bb3(20×1)類別的分數,找分數對應最大類別的索引.---->class bb3(20×1)中最大的分---->score
在這里插入圖片描述
根據不同類劃分不同的框:
在這里插入圖片描述
Yolo的缺點:
?YOLO對相互靠的很近的物體(挨在一起且中點都落在同一個格子上的情況),還有很小的 群體檢測效果不好,這是因為一個網格中只預測了兩個框,并且只屬于一類。
?測試圖像中,當同一類物體出現不常見的長寬比和其他情況時泛化能力偏弱。

Yolo2

1.Yolo2使用了一個新的分類網絡作為特征提取部 分。
2. 網絡使用了較多的3 x 3卷積核,在每一次池化操 作后把通道數翻倍。
3. 把1 x 1的卷積核置于3 x 3的卷積核之間,用來壓 縮特征。
4. 使用batch normalization穩定模型訓練,加速收 斂。
5. 保留了一個shortcut用于存儲之前的特征。
6. 除去網絡結構的優化外,yolo2相比于yolo1加入 了先驗框部分,最后輸出的conv_dec的shape為 (13,13,425):
? 13x13是把整個圖分為13x13的網格用于預測。
? 425可以分解為(85x5)。在85中,由于yolo2常 用的是coco數據集,其中具有80個類;剩余 的5指的是x、y、w、h和其置信度。x5意味著 預測結果包含5個框,分別對應5個先驗框。
在這里插入圖片描述

Yolo3

YOLOv3相比于之前的yolo1和yolo2,改進較大,主要 改進方向有:
1、使用了殘差網絡Residual
2、提取多特征層進行目標檢測,一共提取三個特征 層,它的shape分別為(13,13,75),(26,26,75), (52,52,75)。最后一個維度為75是因為該圖是基于voc 數據集的,它的類為20種。yolo3針對每一個特征層 存在3個先驗框,所以最后維度為3x25。
3、其采用反卷積UpSampling2d設計,逆卷積相對于 卷積在神經網絡結構的正向和反向傳播中做相反的運 算,其可以更多更好的提取出特征。
在這里插入圖片描述

代碼實現:

在資源中
實現結果如下
在這里插入圖片描述

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

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

相關文章

線性回歸非線性回歸_了解線性回歸

線性回歸非線性回歸Let’s say you’re looking to buy a new PC from an online store (and you’re most interested in how much RAM it has) and you see on their first page some PCs with 4GB at $100, then some with 16 GB at $1000. Your budget is $500. So, you es…

樸素貝葉斯和貝葉斯估計_貝葉斯估計收入增長的方法

樸素貝葉斯和貝葉斯估計Note from Towards Data Science’s editors: While we allow independent authors to publish articles in accordance with our rules and guidelines, we do not endorse each author’s contribution. You should not rely on an author’s works wi…

numpy統計分布顯示

import numpy as np from sklearn.datasets import load_iris dataload_iris()petal_lengthnumpy.array(list(len[2]for len in data[data]))#取出花瓣長度數據 print(np.max(petal_length))#花瓣長度最大值 print(np.mean(petal_length))#花瓣長度平均值 print(np.std(petal_l…

python數據結構:進制轉化探索

*********************************第一部分******************************************************************************************************************************************************************************************# 輸入excel的行號,…

Keras框架:人臉檢測-mtcnn思想及代碼

人臉檢測-mtcnn 概念: MTCNN,英文全稱是Multi-task convolutional neural network,中文全稱是多任務卷積神經網絡, 該神經網絡將人臉區域檢測與人臉關鍵點檢測放在了一起。 從工程實踐上,MTCNN是一種檢測速度和準確率…

python中格式化字符串_Python中所有字符串格式化的指南

python中格式化字符串Strings are one of the most essential and used datatypes in programming. It allows the computer to interact and communicate with the world, such as printing instructions or reading input from the user. The ability to manipulate and form…

Javassist實現JDK動態代理

提到JDK動態代理,相信很多人并不陌生。然而,對于動態代理的實現原理,以及如何編碼實現動態代理功能,可能知道的人就比較少了。接下一來,我們就一起來看看JDK動態代理的基本原理,以及如何通過Javassist進行模…

數據圖表可視化_數據可視化如何選擇正確的圖表第1部分

數據圖表可視化According to the World Economic Forum, the world produces 2.5 quintillion bytes of data every day. With so much data, it’s become increasingly difficult to manage and make sense of it all. It would be impossible for any person to wade throug…

Keras框架:實例分割Mask R-CNN算法實現及實現

實例分割 實例分割(instance segmentation)的難點在于: 需要同時檢測出目標的位置并且對目標進行分割,所以這就需要融合目標檢測(框出目標的位置)以及語義分割(對像素進行分類,分割…

機器學習 缺陷檢測_球檢測-體育中的機器學習。

機器學習 缺陷檢測🚩 目標 (🚩Objective) We want to evaluate the quickest way to detect the ball in a sport event in order to develop an Sports AI without spending a million dollars on tech or developers. Quickly we find out that detec…

莫煩Pytorch神經網絡第二章代碼修改

import torch import numpy as np""" Numpy Torch對比課程 """ # #tensor與numpy格式數據相互轉換 # np_data np.arange(6).reshape((2,3)) # print(np_data) # # torch_data torch.from_numpy(np_data) # print(\n,torch_data) # # tensor2ar…

自定義字符類

當 VC不使用MFC,無法使用屬于MFC的CString,為此自定義一個,先暫時使用,后續完善。 頭文件: #pragma once#define MAX_LOADSTRING 100 // 最大字符數class CString {public:char *c_str, cSAr[MAX_LOADSTRING];WCHAR *w…

使用python和javascript進行數據可視化

Any data science or data analytics project can be generally described with the following steps:通常可以通過以下步驟來描述任何數據科學或數據分析項目: Acquiring a business understanding & defining the goal of a project 獲得業務理解并定義項目目…

Android 事件處理

事件就是用戶對圖形的操作,在android手機和平板電腦上,主要包含物理按鍵事件和觸摸屏事件兩類。物理按鍵事件包含:按下、抬起、長按等;觸摸屏事件主要包含按下、抬起、滾動、雙擊等。 在View中提供了onTouchEvent()方法&#xff0…

莫煩Pytorch神經網絡第三章代碼修改

3.1Regression回歸 import torch import torch.nn.functional as F from torch.autograd import Variable import matplotlib.pyplot as plt""" 創建數據 """x torch.unsqueeze(torch.linspace(-1,1,100),dim1) y x.pow(2) 0.2*torch.rand(x…

為什么餅圖有問題

介紹 (Introduction) It seems as if people are split on pie charts: either you passionately hate them, or you are indifferent. In this article, I am going to explain why pie charts are problematic and, if you fall into the latter category, what you can do w…

New Distinct Substrings(后綴數組)

New Distinct Substrings&#xff08;后綴數組&#xff09; 給定一個字符串&#xff0c;求不相同的子串的個數。\(n<50005\)。 顯然&#xff0c;任何一個子串一定是后綴上的前綴。先&#xff08;按套路&#xff09;把后綴排好序&#xff0c;對于當前的后綴\(S_i\)&#xff0…

Android dependency 'com.android.support:support-v4' has different version for the compile (26.1.0...

在項目中加入react-native-camera的時候 出現的錯誤. 解決方案: 修改 implementation project(:react-native-camera)為 implementation (project(:react-native-camera)) {exclude group: "com.android.support"}查看原文 Could not find play-services-basement.aa…

先知模型 facebook_使用Facebook先知進行犯罪率預測

先知模型 facebookTime series prediction is one of the must-know techniques for any data scientist. Questions like predicting the weather, product sales, customer visit in the shopping center, or amount of inventory to maintain, etc - all about time series …

莫煩Pytorch神經網絡第四章代碼修改

4.1CNN卷積神經網絡 import torch import torch.nn as nn from torch.autograd import Variable import torch.utils.data as Data import torchvision import matplotlib.pyplot as pltEPOCH 1 BATCH_SIZE 50 LR 0.001 DOWNLOAD_MNIST False #如果數據集已經下載到…