論文閱讀:Fast Branch Convolutional Neural Network for Traffic Sign Recognition

論文連結:Fast Branch Convolutional Neural Network for Traffic Sign Recognition 簡介 論文使用深度學習架構來辨識交通號誌,辨識交通號誌是高級駕駛輔助系統的重要部分,像是方向號誌、限速號誌、各種警示號誌等等 論文遇到的挑戰是影像成像受到室外環境的複雜變化,如失真、惡劣天氣、過度曝光、曝光不足、運動模糊、褪色、複雜背景,造成辨識方法更具挑戰性 使用傳統的電腦視覺辨識方法在這多變的影像是很難以用單一個演算法流程得到穩健的辨識模型,因此使用CNN架構的模型來辨識 CNN往往需要大量的參數處理來得到結果,因此要達到即時辨識模型會有一定的難度,但目前也有許多即時的CNN模型,例如:YOLO 受生物機制的啟發,論文提出一個新的架構Branch Convolution Neural Network (BCNN),在神經系統中,簡單、反射動作會在神經系統較低層次做快速反應,困難的動作會在高階的神經系統處裡後做反應,例如:在容易區分的交通號誌圖片,人眼只看一部份也可以很快的辨識出來,套用在CNN上,沒有必要通過所有CNN參數才得到結果 CNN模型對資料的處理 CNN模型在輸入交通標誌資料有以下特性 CNN模型傾向於將原始混淆圖像空間轉換為線性可分離空間,並將同一類標籤的樣本聚集再一起 越難辨識到的交通標誌是與相同類別標籤樣本距離越遠的,表示模型辨識不到特徵 模型對形狀的辨識能力比辨識限速能力好,模型前期將三角形和菱形分隔開來,CNN模型參考圖形內標示較後期才分離不同數字 Branch Convolution Neural Network CNN和BCNN的差別在於,BCNN會在層與層之間分支輸出結果,如圖所示,傳統的CNN模型會在最後Softmax層輸出結果,BCNN模型會在其中一個分支進行預測,因此可以提高模型的預測時間 所有的樣本都不需要經過整個CNN模型,參考前段介紹的生物學機制,簡單好辨識的影像在前期的layer預測,較難的影像在後期的layer輸出結果 BCNN model訓練流程: 訓練分支分類器 評估和偏移分類器 最佳化分支分類器 fine-tune model 分支分類器 Branch Classifier 分支分類器是用來快速、高精度的輸出結果,因此false negatives是允許的,但false positives是不行的 因此簡單來說分支分類器: 簡單且快速 robust與高精度 只輸出足夠置信度的樣本 由於分支分類器是使用線性分類器,使用k-folder來訓線性分類器,但分類器分的精度太高,也是沒有意義的,例如:分類結果為一個空間只有一個正樣本,他的precision是1,但recall可能非常低,因此設定precision與recall的threshold是必要的 再來就是要考慮到底要在哪幾層加入分類器,當遇到難以識別的樣本,並不會在分支分類器輸出結果,因此需要謹慎考慮分類器的插入位置與數量 迭帶搜索最佳組合流程 將分支分類器的組合編碼到[0,1]之間 設定$T_{save} $為目標函數 隨機產生不同種的分支分類器組合 計算$ T_{save} $ 迭代到指定次數或找到$ T_{save} $符合閾值的組合 其中$ T_{save} $表示的是節省的時間,因此要最大化目標函數 $ T_{save} $公式: 參數定義 $ l_i, i=0,1,2…n+1, 表示CNN第i層, l_{n+1}是輸出的layer, l_0是輸入的layer $ ...

October 9, 2021 · 1 min · yanz

cs131 lecture 14 Detecting Objects by Parts-Object detection task and evaluation

物件檢測是視覺中常見的任務之一,在影像中透過各種演算法來偵測到物件位置,常見的檢測如找到物件位置,並用矩形框標註,更精細一點的可以分割出物件的輪廓,其中會遇到的挑戰: 物件亮度不同 影像角度不同 物件的形狀變化 同類型不同型態的變化,例如顏色 因此為了測試演算法在不同類別上都能有強大的適應性,網路上有多種不同的大型影像資料庫,並附上物件的位置、類別資訊來進行驗證,以下介紹常見的影像資料庫PASCAL VOC、ImageNet、COCO Benchmarks PASCAL VOC Challenge 介紹 網頁上有每一年的資料更動,起初只有四個類別,1578張影像,比賽方式為檢測與分類 經過多年的資料量擴增,變為20個類別,含有11530張影像,並且有27450個ROI影像與6929個更精細的分割影像區域,並加入影像分割挑戰 競賽從2005年到2012年停止 相關連結 PASCAL Visual Object Classes Homepage paperswithcode PASCAL VOC Semantic Segmentation ImageNet Large Scale Visual Recognition Challenge (ILSVR) ILSVR介紹 ImageNet是一個提供所有研究人員進行大規模影像辨識模型的資料庫,資料庫內以手動標註了1400多萬張影像,並包含2萬多個類別,實際進行挑戰時會整理出1000類來進行比賽 其中ImageNet的標記類別是根據WordNet的結構,WordNet可以想成是一個辭典,這個辭典把相近意義的同義詞連結再一起,成為一個網路架構 引用YOLO9000的圖來說明,WordNet結構是一個樹狀結構,一個節點下有多個子節點,例如飛機節點,下面有雙翼飛機、噴射機、空中巴士、隱形戰鬥機,因此在ImageNet中看到這些標記類別,都可以視為飛機類別 ILSVR相關連結 ImageNet Home Download ImageNet Data on Kaggle paperswithcode ImageNet object detection 的數據可以看到歷年來ImageNet影像分類比賽準確率的模型 Common Objects in Context (COCO) COCO介紹 COCO dataset也是一個大型物件檢測、影像分割的一個資料集,他的特點參考官網介紹: 具有物件分割區塊 330K的影像數,有200K已經標記 包含1.5M個物件 物件類別有80類 場景分類有91類 每張圖片都有五個人工書寫的英文註釋 250000個person類別針對肢體做標記 COCO相關連結 cocodataset home paperswithcode coco object detection ...

August 10, 2021 · 1 min · yanz

Spatial Pyramid Matching

論文閱讀:Beyond Bags of Features: Spatial Pyramid Matching for Recognizing Natural Scene Categories 作者Svetlana Lazebnik, Cordelia Schmid, Jean Ponce Abstract 本論文提出一個方法來進行場景辨識 將影像劃分成越來越細的子區域 並計算每個子區域內的局部特徵直方圖 Feature extration 可以分成兩種特徵 weak features oriented edge points visual vocabulary較少 strong features SIFT visual vocabulary較多 Spatial Pyramid Matching Create Pyramid Histogram 右上圓圓像細胞的是輸入的影像 左邊三個level是本篇文章提出的一個分割方法 隨著level提高, 分割的數量逐漸增加, 概念就跟金字塔一樣 從level 0來看,將輸入的影像經過特徵萃取 每個點代表不同的Bag Of Visual Words 計算每個特徵個別總和並用直方圖表示,如level 0下的長條形 而在level 0最終可以得到一個1*3的向量來表達這張影像 到level 1部分,將影像切成4等份 因此下面的直方圖也會有四份 順序是對應著圖中的紅色數字進行量化 level 1就可以得到1*12的向量 level 2就可以得到1*48 再拿這些向量去對其他影像進行比對 Pyramid Matching 在原論文3.1節寫到如何匹配 ...

June 14, 2021 · 1 min · yanz

cs131 lecture 13 Visual bag of words

介紹 Visual bag of words視覺詞袋模型概念:將影像取出具有特徵的地方,存在待比對區域中,新影像進來時,逐一比對影像符合詞袋中哪個的特徵比較多,就跟詞袋中的影像越相似,常用來進行影像分類或影像檢索 新影像進來時,逐一比對影像符合詞袋中哪個的特徵比較多,就跟詞袋中的影像越相似,就可以將它分為詞袋中相近的那一類 上圖可以看到在影像中,先取出各自的特徵,將這些特徵統一對各自影像進行評分,可以看到從原影像取出的特徵分數是比較高的 實作流程 & 方法 取出特徵 學習出專屬於每張影像的"視覺詞彙",建立視覺字典 量化特徵 通過“視覺詞”的頻率表示圖像 特徵提取 特徵取得方式參考文本分析方法,文本分析中由單詞出現的頻率來去做分析,圖片則是由紋理特徵出現的頻率高低作分析 而課程中提到的方法的關鍵字: Regular grid Fei-Fei & Perona, 2005 Interest point detector Csurka et al. 2004 Ramdom sampling 隨機採樣 Vidal-Naquet& Ullman, 2002 Segmentation-based patches Barnard et al. 2003 學習視覺詞彙 假設資料集中有狗、貓、飛機、山丘 透過剛剛的特徵提取可能會找到狗尾巴、貓耳朵、飛機的機翼、山丘上的樹等特徵 這些特徵之間會因為他們影像所呈現的方式而有相似性 我們在透過一個歸納個方法來將一群相似的特徵聚集再一起 使用k-means分群法來將相似的特徵組成一群 再取出各群之間的群心代表該群的特徵向量 問題:如何選擇視覺詞彙的大小 太小,此特徵向量不能表示所有群內的特徵性 太大,量化失真,overfitting Vector quantization 向量量化 介紹codebook codebook概念:codebook是由一群codevector或codeword組合而成,最終目標是以這些編碼向量來代表空間中全部的資料向量(ex:k means各群心的結果) 簡單來說,一組大資料用codebook內的codeword組合而成,用來降維,降低資料量 通過視覺詞彙的頻率來代表影像 上圖可以看到當輸入的影像進來時,可以透過各個不同的特徵來評估他屬於哪一類,達到影像分類的效果 範例 可參考BagOfVisualWords 作者使用11個類別,每類影像數不同 輸入影像後,取SIFT descriptor 再透過k-means分群法將特徵分成1000群 訓練一個SVM mdoel,輸入資料為k-means的群心與對應的類別標籤 輸入測試資料進行分類評估model準確度 ...

June 11, 2021 · 1 min · yanz

cs131 lecture 12 visual recognition

常見視覺辨識任務 Objection Detection Objection localization VQA(Visual Question Answering) Challenges && Nearest Neighbor Classifier 參考cs231n Image Classification Simple object recognition pipeline 參考 paper:Analyzing Appearance and Contour Based Methods for Object Categorization 建造一個架構,用來辨識影像,輸入影像後會輸出對應類別結果 訓練架構 訓練階段重點: 訓練資料:輸入的訓練影像與標記類別 定義要擷取的影像特徵 訓練方法 訓練資料 dataset:ETH-80 dataset 共有八類,每類41張影像,共有3280張影像 解析度1024 * 768 但網路上找到的dataset並沒有到達這麼高的解析度(256 * 256) 影像特徵 提到了幾個特徵提取方法 Global RGB histogram 整體形狀分析:PCA-based methods 局部形狀特徵:shape context 紋理:Filter banks 訓練方法 可使用KNN classifier result

April 17, 2021 · 1 min · yanz

K-nearest-neighbor-algorithm

機器學習架構 分成training與Testing階段 Training:準備訓練資料與對應的類別${(x_1,y_1),(x_2,y_2),…,(x_N,y_N)}$,評估預測函數$f$並最小化在訓練資料上的誤差 Testing:輸入不在訓練資料內的未知資料,應用訓練好的fuction $f$來預測類別結果 K-nearest neighbor classifier KNN的概念是由nearest neighbor algorithm衍伸出來,NN是透過一群已經存在的訓練資料與標籤當作基底,來對測試資料進行比對,輸出與訓練資料相似度高的類別當作結果 而KNN與NN不同的則是取出前K個相近的資料做參考,來決定最終輸出的類別結果 KNN演算法流程 訓練階段:存取所有訓練資料$x_i$與其對應的類別結果$y_i$ 測試階段: 輸入$x$,計算與所有訓練資料點的距離 選擇前$k$個鄰近$x$的訓練資料 統計鄰近訓練資料最高的對應類別結果 距離量測方法:可使用歐式距離 KNN 細節整理 如何決定參數k 相似度比對 如何決定參數k 參數$k$的不同會影響輸出結果 k太小,對雜訊敏感,容易overfitting k太大,容易underfitting 選擇參數k的方法:cross validate cross validate 把資料分成多個子資料,測試參數在小樣本中的表現結果 測試流程: 輸入訓練資料,從訓練資料分割成多組不同的訓練/測試資料 選擇在平均效能中最好的參數$k$ 相似度比對 相似度比對: 歐式距離(Euclidean distance),最常用 曼哈頓距離(Manhattan distance) 切比雪夫距離(Chebyshev distance) 馬氏距離(Mahalanobis Distance) 相似度比對前都須對資料進行正規化,才能保證每個 維度的特徵具有相同的影響力,除了馬氏距離已將不同尺度的問題做處理 參考 沒有想像中簡單的簡單分類器 Knn Why do you need to scale data in KNN

April 17, 2021 · 1 min · yanz

cs131 lecture 11 Image Resizing-Seam Carving

如何保留重要的資訊又縮減尺寸,其中定義甚麼是重要,甚麼是不重要的影像資訊 Basie Idea 不重要的資訊代表影像梯度變化小的地方,定義一個energy function/ 使用梯度來作為energy function的原因: 邊界代表紋理資訊 人眼對edge比較敏感,平滑處就可以被視為不重要資訊 概念很簡單 左圖對整張影像濾除低能量pixel 中間對每行方向濾除最低能量pixel 右圖對每列方向濾除最低能量pixel,看起來結果較好一點,但仍看得出來階梯處有扭曲的感覺 Seam Carving 接縫裁剪(Seam Carving),是一個可以針對圖像內容做正確縮放的算法。概念上,算法會找出一系列的接縫(seam)(接縫是在圖像中最不重要的一連串像素),接著利用接縫對圖像做縮放。如果是要縮小圖像,則移除這些接縫,若是放大,則在這些接縫的位置上,插入一些像素。接縫裁剪可以人工定義一些不會被修改的像素區域,也可以從圖像中移除整個物體。by wiki 流程 輸入要變化的影像與尺寸 計算energy function 從energy function計算seam cost $M$ 選出裁切方向最小的seam carving 濾除足夠多的行列直到與輸入尺寸相同 計算Seam cost的部分,主要使用動態規劃的方法來實作,因為每次計算seam cost時必須計算與鄰居周圍的相關資訊 重新定義參數: $E$是前面提到的energy function,$E(i,j)是在影像上對應i,j的座標點能量值$ $M$是seam cost,用來評估將該點作為seam carving時依據,$M$的計算公式: $M(i,j) = E(i,j) + min(M(i-1, j-1), M(i-1,j), M(i-1, j+1))$ 可以從公式看到,seam cost所代表的意義就是由該點所對應的energy function,加上鄰近上方像素的最小點,就可以當作今天要把該點去除或展開時的一個成本,成本高低代表該點是重要資訊的指標 Dynamic Programming 由於seam cost公式是計算矩陣$M$,其中又參考到自身周圍計算過的數值,因此需要用到動態規劃(Dynamic Programming, DP) $M(i,j) = E(i,j) + min(M(i-1, j-1), M(i-1,j), M(i-1, j+1))$ Searching for Minimum 得到seam cost矩陣後,從最下方開始尋找最小向上路徑 ...

April 10, 2021 · 1 min · yanz

cs131 lecture 11 Image Resizing-Image Retargeting Overview

影像調整大小在生活上隨處可見,如在不同的螢幕解析度下就必須對輸入的影像進行變化 但改變的同時常常造成比較重要的影像位置失去原先的樣貌特性 該節就開始探討在Resize的同時又可以保持重要的影像訊息 Content-aware Retargeting 上圖可以看到紅區域處是重要的資訊,若直接改變影像尺寸會造成人物的變形 若僅延展在影像中間處的雪地與天空區塊,就可以保留重要資訊 問題定義 輸入影像尺寸$n \times m$與新的尺寸$n’ \times m'$ 輸出影像$n’ \times m’$並保有與原影像一樣好的影像細節 但所謂好的影像縮放結果沒辦法用量化的方式來定義 我們也不知道甚麼叫做重要的影像資訊,也許每個人對重要的影像區塊看法都不同 影像重要性(顯著性) 量測 定義一個function來找出影像"重要"的地方 重要指的可以是人眼經常會去特別關注的地方 相關論文與應用 Setlur, Vidya, et al. “Automatic image retargeting.” Proceedings of the 4th international conference on Mobile and ubiquitous multimedia. 2005. Gal, Ran, Olga Sorkine, and Daniel Cohen-Or. “Feature-Aware Texturing.” Rendering Techniques 2006.17th (2006): 2.

April 7, 2021 · 1 min · yanz

cs131 lecture 10 Clustering- mean-shift clustering

論文名稱:Mean Shift, Mode Seeking, and Clustering 流程: 隨機初始化起點與視窗$h$ 計算中心重心 移動搜索視窗到重心位置 重複步驟2~3直到收斂 重心計算公式: 其中$x是輸入的資料集,x={x_1,x_2…x_k},x_i是第i個資料$ $S_h是視窗半徑為h$的區域 mean shift 演算法範例: 圖(1)~(3)計算重心並移動,移動幅度(1)>(2)>(3),圖(4)收斂 特性 Unsupervised learning 跟k-means不同的是,不用先假設資料有幾群 調整一個視窗大小參數,並且具有物理意義,視窗大小代表中心的搜索範圍,但視窗範圍會影響到輸出結果 對outliers具有穩健性 資料維度越高,運算越巨大 參考 ML - Clustering Mean Shift Algorithm

April 5, 2021 · 1 min · yanz

cs131 lecture 10 Clustering-K-means clustering

k means clustering 流程 隨機初始化群心$c_1,…,c_K$與迭代次數$t$ 計算隸屬矩陣$\delta^t$,得到新的分群結果 由分群結果更新群心 增加迭代次數$t$,重複步驟2~4,直到到達設定停止條件(到達迭代次數上限或群心不在大幅變動) 參數定義: $t$:迭代次數 $K$:群數 $N$:輸入的資料數量 $x_j$:輸入的第$j$筆資料 $c^t_i$:第$t$次第$k$群的群心 $\delta^t$:第$t$次的隸屬矩陣,定義第$j$個資料對應第$c$個群心的距離,矩陣大小為K*N 流程: k means clustering特性 不同的初始化群心位置會有不同結果 對球形的數據有較好的fit結果 * 需要決定參數k 選擇參數k的方法 不同的群數使得結果不同,決定群數變成非常重要的問題 以分群的角度來看,分群的目的為,群內的變異性越小越好,群跟群之間的變異性越大越好 翻成白話來說就是:同一群內的資料越聚集越好,群跟群之間的資料離越遠越好 這裡介紹一個常用來自動選擇群數k的方法:Elbow method Elbow Method Elbow method的核心思想是,運用前面所說分群的特性來定義一個objective function來找到輸入資料對應最好的分群結果,通常使用群內樣本的距離和來量測 如下圖所示,選擇的k值隨著群數分越多,數值越小,但可以發現前期變化很大,到後面逐漸變小 而群數設定為2時的轉折最大,像是手肘彎曲的地方,這時elbow method就選擇該輸入的資料分為2群最適合 k-means 優缺點 Unsupervised learning 原理簡單好實現 可擴展至大型的數據集,適應不同的dataset 保證收斂 可以預先初始化群心中心 需先設定參數k(使用elbow method可以解決這問題) 輸入資料需標準化到同一尺度空間 初始化群中心影響分群結果 群心容易被異常資料(outliers)影響,造成群心偏移 容易陷入局部最佳解 參考 k-Means Advantages and Disadvantages

March 28, 2021 · 1 min · yanz