法的實現可以訪問鏈接了解:
https://github.com/hyperparameters/tracking_via_colorization
簡單地說,它可以理解為在整個視頻序列中識別唯一的對象。要跟蹤的對象通常稱為目標對象,跟蹤可以通過邊界框或實例分割來完成,有兩種類型的公共對象跟蹤挑戰。
1. 單目標跟蹤:在整個視頻序列中跟蹤感興趣的目標,例如VOT挑戰
2. 多目標跟蹤:在整個視頻序列中跟蹤多個感興趣的目標。例如:MOT挑戰
一些著名的經典的用于解決目標跟蹤CV算法的是:
1. Mean shift
2. Optical flow
3. Kalman filters
其中最著名的一種多目標跟蹤算法是SORT,是以卡爾曼濾波器為核心,并且非常成功的一種算法。
隨著深度學習時代的到來,社會上出現了非常有創新性的研究并且深度學習方法成功地勝過了傳統的CV方法來應對公共跟蹤挑戰。盡管在公共挑戰方面取得了巨大成功但深度學習仍在努力為現實世界中的問題陳述提供通用的解決方案。
在訓練深度CNN模型時,我們面臨的主要挑戰之一是訓練數據。
訓練數據:深度學習方法需要大量的數據,這幾乎每次都會成為一個瓶頸。此外,像多目標跟蹤這樣的任務很難注釋,而且這個過程變得不切實際而且成本高昂。
深度模型數據永遠不嫌多
我們都知道有監督和非監督學習技術。這是一種被稱為自監督學習的新型學習方式。在這些類型的學習中,我們試著利用數據中已經存在的信息,而不是任何外部標簽,或者有時我們說模型是自己學習的。實際上,我們所做的就是訓練CNN模型去完成一些其他的任務,間接地幫助我們實現我們的目標,這個模型自我監督。這些任務被稱為“代理任務”或“借口任務”。
代理任務的示例如下:
CNN模型學習從灰度圖像預測顏色。(來源:https://arxiv.org/abs/1603.08511)
從圖像中提取補丁并將其打亂。模型學習如何解開拼圖并按照正確 的順序排列,如圖3所示。(來源:https://arxiv.org/abs/1603.09246)
該模型學習在視頻序列中對打亂的幀進行排序。[來源:https://arxiv.org/abs/1708.01246]
許多這樣的任務可以用作計算機視覺問題的代理任務。這種訓練的一個主要好處是訓練不需要手動注釋數據,并且適合解決生活中實際的用例。
我們已經看到了并了解了什么是自監督模型,您一定猜到了我們將使用著色作為我們的代理任務的名稱。
通過給視頻著色來實現跟蹤
我們使用大量未標記視頻學習模型的視覺跟蹤無需人工監督。
arxiv.org(https://arxiv.org/abs/1806.09594)
簡介
著色是代理任務或借口任務,目標跟蹤是主要任務或下游任務。采用大規模的無標記視頻對模型進行訓練,不需要人工進行任何單一像素的標注。該模型利用視頻的時間相干性對灰度視頻進行著色。這看起來可能有點混亂,但我會慢慢給大家講明白。
模型將如何學習跟蹤
我們將取兩個幀,一個目標幀(時刻t),一個參考幀(時刻t-1),并通過模型。該模型期望通過對參考幀顏色的先驗知識來預測目標幀的顏色。通過這種方式,模型內部學會了指向正確的區域,以便從參考框架復制顏色,如圖所示。這種指向機制可以用作推理期間的跟蹤機制,我們將很快看到如何做到這一點。
模型接收一個彩色幀和一個灰度視頻作為輸入,并預測下一幀的顏色。模型學會從參考系復制顏色,這使得跟蹤機制可以在沒有人類監督的情況下學習。[來源:https://ai.googleblog.com/2018/06/self-supervised-tracking-via-video.html]
我們不復制網絡中的顏色,而是訓練我們的CNN網絡學習目標幀的像素和參考幀的像素之間的相似度(相似度是灰度像素之間),然后線性組合時使用此相似度矩陣參考幀中的真實顏色會給出預測的顏色。從數學上講,設C?為參考幀中每個像素i的真實顏色,C?為目標幀中每個像素j的真實顏色。
[資源鏈接:https://arxiv.org/abs/1806.09594]
公式1:預測顏色與參考顏色的線性組合
無論是圖像、參考幀還是目標幀都經過模型學習后對每個像素進行了低層次的嵌入,這里f?是像素i在參考幀中的嵌入,類似地,f是像素j在目標幀中的嵌入。然后,計算相似度矩陣:
公式2:用softmax歸一化的內積相似度
相似矩陣中的每一行表示參考幀的所有像素i和目標幀的像素j之間的相似性,因此為了使總權重為1,我們對每一行應用softmax。
Lets look an example with dimension to make it clear,we try to find a similarity matrix of 1 pixel from target frame.An illustration of this example is shown below.Consider reference image and target image, size (5, 5)=> (25,1)for each pixel, cnn gives embedding of size (64, 1), embedding for reference frame, size (64, 25), embedding for target frame, size (64, 25), embedding for 3rd pixel in target frame, size (64, 1)Similarity Matrix, between reference frame and target pixel, j=2=softmax , size (25, 64) (64, 1)=> (25,1)=> (5, 5)we get a similarity between all the ref pixels and a target pixel at j=2.Colorization, To copy the color (here, colours are not RGB but quantized colour of with 1 channel) from reference frame,, Colors of reference frame size (5, 5)=> (25, 1), Similarity matrix, size (5, 5)=> (1, 25)Predicted color at j=2, , size (1, 25) (25, 1)=> (1, 1)From the similarity matrix in below figure, we can see reference color at i=1 is dominant(0.46), thus we have a color copied for target, j=2 from reference, i=1PS:1. ? denotes transpose2. matrix indices starts from 0
(a)為2幀大小(5,5),(b)為參考幀嵌入與目標像素在j=2處嵌入的內積,(c) softmax后的相似度矩陣,(d)相似度矩陣與參考幀真顏色的線性組合[來源:https://github.com/hyperparameters/tracking_via_colorization]
同樣,對于目標幀中的每個目標像素((5,5)=> 25個像素),我們將會有一個相似矩陣的大小(5,5),即大小為(5,5,25)的完整相似度矩陣A??=(25,25)。
在實現中,我們將使用(256 x 256)圖像擴展相同的概念。
圖像量化
第一行顯示原始幀,第二行顯示來自實驗室空間的ab顏色通道。第三行將顏色空間量化到離散的容器中,并打亂顏色,使效果更加明顯。[來源:https://arxiv.org/abs/1806.09594]
顏色是空間頻率偏低,所以我們可以處理低分辨率的幀。我們不需要C(255,3)顏色組合,所以我們創建了16個聚類并將顏色空間量化為這些聚類。現在我們只有16種獨特的顏色簇(見上圖第3欄)。聚類是用k-均值完成的。16個群集會有一些顏色信息的丟失,但足以識別物體。我們可以增加聚類的數目來提高著色的精度,但代價是增加計算量。
[來源:https://arxiv.org/abs/2002.07793]
為了將圖像量化成簇,我們將使用LAB顏色空間的AB通道而不是RGB顏色空間通道。上面的圖顯示了RGB和LAB通道間的相關性,從圖中我們可以得出結論
RGB往往比LAB更具相關性。
LAB將強制模型學習不變性,它將強制其學習更強大的表示形式,而不是依賴于本地顏色信息。
可以使用sklearn的KMeans軟件包進行聚類。
這個類將用于制作顏色的簇,我們將把它存儲為一個pickle。
注意:我使用pytorch來進行實現,它遵循(N, C, H, W)格式。在處理矩陣重塑時要記住這一點。如果你對形狀有任何疑問,請隨時與我們聯系。
該模型從參考幀中學習為視頻幀著色。[來源:https://ai.googleblog.com/2018/06/self-supervised-tracking-via-video.html]
輸入
該模型的輸入是四個灰度視頻幀,其下采樣為256×256。三個參考幀和一個目標幀。
首先,我們將所有的訓練視頻壓縮到6fps。然后預處理框架以創建兩個不同的集合。一個用于CNN模型,另一個用于著色任務。
- Video fps is reduced to 6 fpsSET 1 - for CNN Model- Down sampled to 256 x 256- Normalise to have intensities between [-1, 1]SET 2 - for Colourization- Convert to LAB colour space- Downsample to 32 x 32- Quantize in 16 clusters using k-means- Create one-hot vector corresponding to the nearest cluster centroid
所用的主干是ResNet-18,因此其結果與其他方法相當。ResNet-18的最后一層被更新為32 x 32 x 256的尺寸輸出。ResNet-18的輸出隨后被傳送到3D-Conv網絡,最終輸出為32 x 32 x 64。(下面的代碼塊顯示了從ResNet-18網絡獲取輸入的3D網絡)
訓練可分為以下3個步驟:
1. 網絡傳遞
我們將使用SET 1的預處理幀,即通過網絡傳遞大小為(256 x 256)的4個灰度幀,以獲得具有64個通道的(32 x 32)空間圖。對于(32 x 32)圖像的每個像素,這可以解釋為64維嵌入。因此,我們有四個這樣的像素級嵌入,三個用于參考圖像,一個用于目標圖像 。
2. 相似度矩陣
利用這五個嵌入,我們找到了參考幀和目標幀之間的相似矩陣。對于目標幀中的像素我們將獲得一個相似度值,其中所有三個參考幀中的所有像素均通過softmax歸一化為1。
3. Colourization著色處理
我們將使用SET 2的預處理幀,即將四個降采樣為(32 x 32)并量化的幀用于著色。將三個參考幀與相似度矩陣相結合,得到預測的量化幀。我們發現了具有預測顏色的交叉熵損失,(記住,我們量化幀到16個聚類,現在我們有16個類別。我們發現在這些顏色上有多類交叉熵損失。
跟蹤預測的例子[來源:https://ai.googleblog.com/2018/06/self-supervised-tracking-via-video.html]
在學習了著色的任務后,我們有了一個模型,可以計算一對目標框架和參考框架的相似矩陣a??。對于跟蹤的實際任務,我們利用了標簽空間中模型是非參數的這一特性。我們簡單地重復使用等式1來傳播,但不是傳播顏色,而是傳播類別的分布。對于第一幀,我們有真實框掩碼,我們將所有實例掩碼布置為一獨熱矢量c?(這類似于訓練期間使用的量化顏色的一獨熱矢量)。將c?與我們的相似性矩陣A相結合,以找到掩碼的新位置,但請記住,隨后幾幀中的c?預測將變得很柔和,表明模型的置信度。為了做出艱難的決定,我們可以簡單地選擇最自信的那一類。推理算法為:
失效模式
讓我們來討論一下,當模型在某些場景中趨于失敗時,這主要是著色失敗的情況,這意味著著色與跟蹤有很高的相關性。
在以下情況下會發現一些故障:
融界2023年12月30日消息,據國家知識產權局公告,上海嗶哩嗶哩科技有限公司申請一項名為“灰度處理方法、系統、計算設備及存儲介質“,公開號CN117312716A,申請日期為2023年10月。
專利摘要顯示,本申請實施例公開了一種灰度處理方法、系統、計算設備及存儲介質,其中,該方法包括:獲取Web頁面灰度發布請求對應的結構化數據;根據結構化數據,生成Web頁面對應的HTML文件;將Web頁面對應的HTML文件推送至靜態文件服務器,由靜態文件服務器將HTML文件提供給用戶端,以供用戶端根據HTML文件進行灰度計算,確定并渲染待展現的HTML內容。本申請在不變動現有靜態文件服務器架構的前提下,依據所生成的HTML文件,便捷地實現對靜態Web頁面的灰度發布能力,實現方式簡單,無需添加灰度處理模塊,有效地降低了灰度發布能力的開發和運維成本,而且有效減少了對靜態文件服務器的影響,優化了靜態文件服務器下的灰度處理方式。
本文源自金融界
每一個特定或者特殊的日子里,幾乎所有的網站都變成了灰色,那么這種效果是怎么實現的呢?
今天就來簡單的實現一下這樣的效果。
添加以下全局CSS樣式,可以實現此效果:
代碼一:
html {
-webkit-filter: grayscale(100%);filter:progid:DXImageTransform.Microsoft.BasicImage(graysale=1);
}
<!-- 可以是整個網站變成灰色的 -->
實現網頁顏色變灰這個效果,非常簡單:
filter: grayscale(100%);
這樣一段代碼即可實現,放在html和body的css屬性里即可實現。
意思是修改所有的顏色為黑白 (100% 灰度):
灰色網站會加入這段代碼,你可以按F12,把這段源碼刪除,即可變成彩色
代碼二:
html {
filter:progidXImageTransform.Microsoft.BasicImage(grayscale=1);
}
使用方法:這段代碼可以變網頁為黑白,將代碼加到CSS最頂端就可以實現素裝。建議全國站長動起來。為在地震中遇難的同胞哀悼。
如果網站沒有使用CSS,可以在網頁/模板的HTML代碼<head>和</head> 之間插入:
<style>
html{
filter:progidXImageTransform.Microsoft.BasicImage(grayscale=1);
}
</style>
有一些站長的網站可能使用這個css 不能生效,是因為網站沒有使用最新的網頁標準協議:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
請將網頁最頭部的<html>替換為以上代碼。
有一些網站FLASH動畫的顏色不能被CSS濾鏡控制,可以在FLASH代碼的<object …>和</object>之間插入:
<param value="false" name="menu"/>
<param value="opaque" name="wmode"/>
最簡單的把頁面變成灰色的代碼是在head 之間加
<style type="text/css">
html {
FILTER: gray
}
</style>
html{
filter: grayscale(100%);
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
filter: url("data:image/svg+xml;utf8,#grayscale");
filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
-webkit-filter: grayscale(1);
}
總結:
以上幾種代碼(方法),都是通過CSS的濾鏡來控制頁面的顯示而已,唯一不同的就CSS代碼及調用的方式。在css的修飾時還有權重問題,所以有時候css代碼不生效的時候可以考慮一下代碼的權重問題。
歡迎關注第一山,今后將有更多前端開發技術與大家共同交流學習。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。