色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一個破紀錄的人群計數算法!——使用深度學習構建一個人群計數模型

新機器視覺 ? 來源:PULKIT SHARMA,FEBRUARY 18, 201 ? 作者:PULKIT SHARMA,FEBRUAR ? 2021-04-01 14:42 ? 次閱讀

一個破紀錄的人群計數算法!

——使用深度學習構建一個人群計數模型

人工智能機器學習將成為我們未來十年最大的幫手!

今天,我將分享一個例子——如何計算人群中的人數深度學習與計算機視覺

但是,在我們開始之前,請先幫我一個忙……

人臉識別或人臉簽到往往是1:1,或1:N的圖像識別技術,但如何數人數,少量只要能識別人臉當然就可以數人數了。

但當我們面臨大規模擁擠的人群,我們可能不需要識別人臉,只是人群計數,是否可以實現呢?

能幫我數數圖片中這個活動有多少人參加嗎?

太多了?那這個怎么樣?

還是不行?沒關系!

今天我們將教你創建一個基于深度學習的人群計數模型。

本文是基于卷積神經網絡(CNN)的工作方式建立的,在進一步研究之前,您可以參考下面這篇文章來了解這個主題:

https://www.analyticsvidhya.com/blog/2018/12/guide-convolutional-neural-network-cnn/?utm_source=blog&utm_medium=crowd-counting

現在,我們正式開始介紹~

目錄

1.什么是人群計數?

2.為什么要數人群?

3.了解不同計算機視覺技術在人群計數中的應用

4.CSRNet的體系結構與訓練方法

5.用Python構建自己的人群計數模型

什么是人群計數?

人群計數是一種計算或估計圖像中的人數的技術。

還是這張圖——

你能告訴我這個圖片里大概有多少人嗎?最直接的方法是手工算,但這有實際意義嗎?當人群這么多的時候,一個一個數幾乎是不可能的!

人群科學家們可以通過對圖片區域劃分,計算圖像某些部分的人數,然后外推得出估計值。這種方法是現在較為普遍的方式,但是也存在誤差。幾十年來,我們不得不依靠粗略的指標來估計這個數字。

肯定有更好、更準確的方法吧?

沒錯,有!

雖然我們還沒有算法可以給出確切的數字,但大多數計算機視覺技術可以產生幾乎完美的精確估計。讓我們先了解為什么人群計數是重要的,然后再深入研究其背后的算法。

人群計數有什么用?

讓我們用一個例子來理解人群計數的有用性。想象一下,中國傳媒大學剛剛舉辦了一個大型的數據科學會議。活動期間舉行了許多不同的會議。


你被要求分析和估計每一次參加會議的人數。這將幫助我們了解什么樣的會議吸引了最多的人數(以及哪些會議在這方面失敗了)。并由此可以針對性塑造明年的會議,所以這是一項重要的任務!

參加會議的人數太多了,如果人工數可能將需要很久!這就是學習人群計數技能的作用所在。只要獲得每一次會議中人群的照片,就可以建立了一個計算機視覺模型來完成其余的工作!

還有很多其他情況下,人群計數算法正在改變行業的運作方式:

統計參加體育賽事的人數

估計有多少人參加了就職典禮或游行(可能是政治集會)

對交通繁忙地區的監察

協助人員配置和資源分配

不同計算機視覺技術在人群計數中的應用

概括地說,目前我們可以用四種方法來計算人群中的人數:

1.基于檢測的方法

我們可以使用一個移動窗口式檢測器來識別圖像中的人,并計算出有多少人。用于檢測的方法需要訓練有素的分類器來提取低層次特征。雖然這些方法在人臉檢測方面效果很好,但在擁擠的圖像上效果不佳,因為大多數目標對象都不是清晰可見的。

2.回歸方法

對于低級別的特征,上述方法使用并不有效,可以使用基于回歸的方法。我們首先從圖像中裁剪補丁,然后,針對每個補丁,提取低級別的特征。

3.基于密度估計的方法

我們首先為要檢測的圖片創建一個密度圖。然后,該算法學習了提取的特征與目標密度映射之間的線性映射。我們也可以利用隨機森林回歸來學習非線性映射。

4.基于CNN的方法

我們不用看圖像的補丁,而是使用可靠的卷積神經網絡(CNN)構建一個端到端的回歸方法。這將整個圖像作為輸入,并直接生成人群計數。CNN在回歸或分類任務中非常有效,并且在生成密度圖方面也證明了它們的價值。

CSRNet是我們在本文中將實現的一種技術,它部署了一個更深層次的CNN,用于捕獲高級別的特性和生成高質量的密度圖,而不需要擴展網絡復雜性。在講到編碼部分之前,讓我們先了解一下CSRNet是什么。

了解CSRNet的體系結構和培訓方法

CSRNet以VGG-16為前端,具有很強的遷移學習能力.VGG的輸出大小是原始輸入大小的?。CSRNet還在后端使用膨脹的卷積層。

那么,什么是膨脹的卷積?請參考以下圖像:

c6c2e3b6-92a7-11eb-8b86-12bb97331649.png

使用膨脹卷積的基本概念是在不增加參數的情況下擴大核。所以,如果膨脹率是1,我們取核并將它轉到整個圖像上。然而,如果我們將擴展率提高到2,內核就會像上面的圖像所示的那樣擴展(按照每個圖像下面的標簽)。它可以替代匯集圖層。

c6f3bd7e-92a7-11eb-8b86-12bb97331649.jpg

基礎數學(推薦,選擇性了解)

我要花點時間解釋一下數學是如何工作的。(請注意,在Python中實現算法并不是必須的,但我強烈建議學習基本思想。)當我們需要調整或修改模型時,這將派上用場。

假設我們有一個輸入x(m,n),一個濾波器w(i,j),以及膨脹率r。輸出y(m,n)為:

c71cc87c-92a7-11eb-8b86-12bb97331649.png

我們可以用(k*k)核推廣這個方程,其擴張率為r。內核擴展到:

([K+(k-1)*(r-1)]*[k+(k-1)*(r-1)])

因此,每一幅圖像都產生了地面真相。在給定的圖像中,每個人的頭部都是用高斯核模糊的。所有圖像都被裁剪成9個補丁,每個補丁的大小是圖像原始大小的1/4。

前4個補丁分為4個四分之一,其他5個補丁隨機裁剪。最后,每個補丁的鏡像被取為訓練集的兩倍。

簡而言之,這就是CSRNet背后的體系結構細節。接下來,我們將查看它的培訓細節,包括所使用的評估指標。

隨機梯度下降用于訓練CSRNet作為端到端結構。在訓練期間,固定學習率設置為1e-6。損失函數被認為是歐幾里德距離,以便測量地面之間的差異 真相和估計的密度圖。這表示為:

c73a9438-92a7-11eb-8b86-12bb97331649.png

其中N是訓練批次的大小。CSRNet中使用的評估標準是mae和mse。,即平均絕對誤差和均方誤差。這些建議是由以下方面提供的:

c755a868-92a7-11eb-8b86-12bb97331649.png

在這里,Ci是估計數:

c770b50e-92a7-11eb-8b86-12bb97331649.png

L和W是預測密度圖的寬度。

我們的模型將首先預測給定圖像的密度圖。如果沒有人在場,像素值將為0。如果某個像素對應于某個人,則將指定某個預定義的值。因此,計算一個人的總像素值會給出圖像中人的數量。

那么現在,是時候建立我們自己的人群計數模型了!

建立自己的人群計數模型

我們將在上海科技數據集上實現CSRNet。這包括1198個加注釋的圖片,總共有330,165人。您可以從這里下載

https://www.dropbox.com//s/fipgjqxl7uj8hd5/ShanghaiTech.zip?dl=0

使用下面的代碼塊克隆CSRNet-py火炬存儲庫。這保存了用于創建數據集、培訓模型和驗證結果的全部代碼:

git clone https://github.com/leeyeehoo/CSRNet-pytorch.git

請先安裝CUDA和PyTorch。這些是我們將在下面使用的代碼背后的主干。

現在,將數據集移動到您在上面克隆的存儲庫并解壓它。然后我們需要創建基本事實值.make_dataset.ipynbfile是我們的救星。我們只需要在該筆記本中做一些小改動:

#setting the root to the Shanghai dataset you have downloaded # change the root path as per your location of datasetroot = '/home/pulkit/CSRNet-pytorch/'

現在,讓我們為part_A和part_B中的圖像生成基本真值:

生成每幅圖像的密度圖是一個時間步驟。所以,在代碼運行時,去泡一杯咖啡吧。

到目前為止,我們已經在第A部分中為圖像生成了地面真值,我們將對Part_B圖像進行同樣的處理。但在此之前,讓我們看看一個示例圖像,并繪制它的地面真實熱圖:

生成每張圖像的密度圖是一個很長的時間。所以在代碼運行時去沖泡一杯咖啡吧,耐心等待一下。

到目前為止,我們已經為part_A中的圖像生成了基本真值。我們將對part_B圖像執行相同的操作。但在此之前,讓我們看一個示例圖像并繪制其地面真實熱圖:

plt.imshow(Image.open(img_paths[0]))

c789e506-92a7-11eb-8b86-12bb97331649.jpg

gt_file = h5py.File(img_paths[0].replace('.jpg','.h5').replace('images','ground-truth'),'r') groundtruth = np.asarray(gt_file['density']) plt.imshow(groundtruth,cmap=CM.jet)

c7a2b216-92a7-11eb-8b86-12bb97331649.png

讓我們數一下這張圖片中有多少人在場:

np.sum(groundtruth)

270.32568

同樣,我們將為part_B生成值:

我們將使用克隆目錄中可用的.json文件。我們只需要更改JSON文件中圖像的位置。為此,打開.json文件并將當前位置替換為圖像所在的位置。

請注意,所有這些代碼都是用Python 2編寫的。如果您使用的是其他任何Python版本,請進行以下更改:

1.在model.py中,將第18行中的xrange更改為range

2.在model.py中更改第19行:list(self.frontend.state_dict()。items())[i] [1] .data [:] = list(mod.state_dict()。items())[i][1]。數據[:]

3.在image.py中,將ground_truth替換為ground-true

現在,打開一個新的終端窗口并鍵入以下命令:

cd CSRNet-pytorch python train.py part_A_train.json part_A_val.json 0 0

這個步驟需要一些時間,耐心等一下。你也可以減少train.py文件中的紀元數量,以加快這個過程。你也可以從這里下載預先訓練的重量,如果你不想等待的話。

最后,讓我們檢查一下我們的模型在看不見的數據上的性能。我們將使用val.ipynb文件來驗證結果。記住要更改到預先訓練過的權重和圖像的路徑。

#defining the image path img_paths = [] for path in path_sets: for img_path in glob.glob(os.path.join(path, '*.jpg')): img_paths.append(img_path)model = CSRNet()#defining the model model = model.cuda()#loading the trained weights checkpoint = torch.load('part_A/0model_best.pth.tar') model.load_state_dict(checkpoint['state_dict'])

檢查測試圖像上的MAE(平均絕對誤差),以評估我們的模型:

我們得到的MAE值為75.69,相當不錯。現在讓我們檢查一下單個圖像上的預測:

c7da403c-92a7-11eb-8b86-12bb97331649.jpg

哇,最初的數字是382,我們的模型估計圖像中有384人。這幾乎是一個完美的演繹!

恭喜你建立了自己的人群計數模型!

原始論文的評測圖和結果

c80fdbac-92a7-11eb-8b86-12bb97331649.jpg

c84b7d88-92a7-11eb-8b86-12bb97331649.jpg

c87aba30-92a7-11eb-8b86-12bb97331649.jpg

c8b71aa2-92a7-11eb-8b86-12bb97331649.jpg

最后

您可以在https://colab.research.google.com上測試跑人群計數。

需要安裝:Pytorch和Cuda

c8c4733c-92a7-11eb-8b86-12bb97331649.jpg

來源:PULKIT SHARMA,

FEBRUARY 18, 2019

責任編輯:lq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 圖像識別
    +關注

    關注

    9

    文章

    520

    瀏覽量

    38284
  • 計數算法
    +關注

    關注

    0

    文章

    2

    瀏覽量

    5460
  • 深度學習
    +關注

    關注

    73

    文章

    5504

    瀏覽量

    121246

原文標題:圖像識別 | 大規模擁擠人群:一個破紀錄的人群計數算法!

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【「大話芯片制造」閱讀體驗】+內容概述,適讀人群

    )?如何將電路刻到晶圓上?光刻機的基本原理等半導體專業知識。 展示的內容更偏向于科普,對于半導體從業者的人來說,更像是大綱,羅列了所有的主要內容。對于半導體愛好者來說,弄懂這三四頁的內容,就可以
    發表于 12-21 16:32

    如何使用Python構建LSTM神經網絡模型

    : NumPy:用于數學運算。 TensorFlow:開源機器學習庫,Keras是其高級API。 Keras:用于構建和訓練深度
    的頭像 發表于 11-13 10:10 ?415次閱讀

    為THS3001構建簡單的SPICE模型

    電子發燒友網站提供《為THS3001構建簡單的SPICE模型.pdf》資料免費下載
    發表于 10-29 10:11 ?0次下載
    為THS3001<b class='flag-5'>構建</b><b class='flag-5'>一</b><b class='flag-5'>個</b>簡單的SPICE<b class='flag-5'>模型</b>

    FPGA加速深度學習模型的案例

    FPGA(現場可編程門陣列)加速深度學習模型是當前硬件加速領域的熱門研究方向。以下是些FP
    的頭像 發表于 10-25 09:22 ?246次閱讀

    AI大模型深度學習的關系

    AI大模型深度學習之間存在著密不可分的關系,它們互為促進,相輔相成。以下是對兩者關系的介紹: 深度
    的頭像 發表于 10-23 15:25 ?868次閱讀

    插片式遠程IO模塊:雙通道PNP和NPN高速計數模塊案例說明

    插片式遠程 IO模塊:XD5002為雙通道PNP高速計數模塊,XD5003為雙通道NPN高速計數模塊,用于對工業現場的設備(如手輪、編碼器等)進行計數。注意:區別在于XD5002為高電平,XD5003為低電平。
    的頭像 發表于 07-18 09:21 ?471次閱讀
    插片式遠程IO模塊:雙通道PNP和NPN高速<b class='flag-5'>計數模</b>塊案例說明

    深度學習算法在嵌入式平臺上的部署

    隨著人工智能技術的飛速發展,深度學習算法在各個領域的應用日益廣泛。然而,將深度學習算法部署到資源
    的頭像 發表于 07-15 10:03 ?1469次閱讀

    利用Matlab函數實現深度學習算法

    在Matlab中實現深度學習算法復雜但強大的過程,可以應用于各種領域,如圖像識別、自然語言處理、時間序列預測等。這里,我將概述
    的頭像 發表于 07-14 14:21 ?2275次閱讀

    深度學習中的模型權重

    深度學習充滿無限可能性的領域中,模型權重(Weights)作為其核心組成部分,扮演著至關重要的角色。它們不僅是模型
    的頭像 發表于 07-04 11:49 ?1425次閱讀

    深度學習的典型模型和訓練過程

    深度學習作為人工智能領域的重要分支,近年來在圖像識別、語音識別、自然語言處理等多個領域取得了顯著進展。其核心在于通過構建復雜的神經網絡
    的頭像 發表于 07-03 16:06 ?1530次閱讀

    深度學習模型訓練過程詳解

    深度學習模型訓練是復雜且關鍵的過程,它涉及大量的數據、計算資源和精心設計的算法。訓練
    的頭像 發表于 07-01 16:13 ?1317次閱讀

    種利用光電容積描記(PPG)信號和深度學習模型對高血壓分類的新方法

    死于高血壓。一個人有必要擁有有益于心臟健康的生活方式,以防止被診斷出患有心血管疾病(CVD)和動脈疾病等致命疾病的風險。如果一個人疏于定期監測血壓,他們可能會突然被診斷出患有血壓。有時很難預測
    發表于 05-11 20:01

    TC275 GTM內部有單獨的計數模塊嗎?

    TC275GTM模塊可以打時間戳測量頻率占空比,但是我輸入高頻信號號,這種方式計數就不準確,他內部有單獨的計數模塊嗎
    發表于 02-20 07:33

    利用巍泰技術人員感知雷達實現精準人員定位,提升人群熱力圖分析

    WTR-812人員感知雷達在客流統計與人群熱力圖中的應用主要利用雷達人員計數與人員定位功能實現對人員流動的監測和可視化呈現上。
    的頭像 發表于 01-26 14:49 ?534次閱讀
    利用巍泰技術人員感知雷達實現精準人員定位,提升<b class='flag-5'>人群</b>熱力圖分析

    如何從零開始構建深度學習項目?(如何啟動深度學習項目)

    性能重大提升的背后往往是模型設計的改變。不過有些時候對模型進行微調也可以提升機器學習的性能。最終的判斷可能會取決于你對相應任務的基準測試結果。
    發表于 01-11 10:49 ?309次閱讀
    如何從零開始<b class='flag-5'>構建</b><b class='flag-5'>深度</b><b class='flag-5'>學習</b>項目?(如何啟動<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>深度</b><b class='flag-5'>學習</b>項目)
    主站蜘蛛池模板: 成人亚洲乱码在线| 午夜伦理网| 成人午夜精品无码区久久漫画日本| 亚洲国产高清在线| 中文字幕成人在线观看| 久久艹影院| 动漫美女的阴| 91热久久免费频精品99欧美| 性女传奇快播| 日本久久不射| 乱h好大噗嗤噗嗤烂了| 国产日韩欧美高清免费视频| porono日本xxx| 99re精品视频在线播放视频| 夜色爽爽爽久久精品日韩| 无码137片内射在线影院| 欧洲-级毛片内射八十老太婆| 久久精品小视频| 黑人开嫩苞| 国产亚洲欧美ai在线看片| 国产ZZJJZZJJ视频全免费| 被cao的奶水直喷高H| 67194con免费福和视频| 亚洲综合色婷婷在线影院| 亚洲国产精品一区二区三区在线观看| 色列少女漫画| 全彩无翼污之邪恶女教师| 奶大B紧17p| 免费看黄的片多多APP下载| 久久婷婷色一区二区三区| 精品久久久爽爽久久久AV| 国产永久免费视频| 国产剧情在线精品视频不卡| 国产成年网站v片在线观看| 成人欧美一区二区三区白人| JIZZ幻女大全| RUN AWAY无删减全集动漫| 99久久国产极品蜜臀AV酒店| 40分钟超爽大片黄| 51成人精品午夜福利AV免费七| 欲香欲色天天综合和网|