視頻分類——C3D使用

整體比較分散,可能很多源碼都需要修改,需要有耐心。

一、數據準備

PS

調研后,上手容易代碼比較簡潔的是:https://github.com/Niki173/C3D/tree/main

因為源碼很多參數都寫死到了源碼中,沒有解耦,并且默認只支持ucf101和hmdb51兩個數據集,所以建議最快的方式是將自己的數據集命名為ucf101然后修改對應的參數。以下均以此為前提進行說明。

1、數據組織結構

一般建議是準備原始視頻文件,然后源碼會自動拆幀為圖片,這里以ucf101為例

抽幀前的視頻組織形式,不區分train/val/test, 不同類別的視頻數據放到不同的文件夾中。

Ucf101

—class_name_1

——video_1

——…

—...

PS:這里要注意視頻長度不要過長,因為源碼是一次性將一個視頻所有幀讀到內存然后進行crop指定幀數(16幀)和大小(112),所以也要看你的特征不被crop掉(源碼是先縮放到128*171然后隨機crop 112*112)

源碼處理完后的路徑如下,要注意默認源碼會按照4幀間隔,6:2:2(近似)分割train/val/test集合。

Ucf101

—train

——class_name_1

———video_frames_dir_1

———…

——...

—val

——class_name_1

———video_frames_dir_1

———…

——…

—test

——class_name_1

———video_frames_dir_1

———…

——...

2、修改數據源和類別數(必選)

https://github.com/Niki173/C3D/blob/main/train.py#L28

建議復用ucf101,只修改對應的num_classes變量的值。

3、修改label信息(必選)

https://github.com/Niki173/C3D/blob/main/dataloaders/dataset.py#L58

源碼僅僅實現了ucf101、hmdb51,這里有兩種方式,最簡單的就是復用ucf101的名字,只不過是自己的數據,然后刪除掉源碼的“dataloaders/ucf_labels.txt ”文件,讓源碼自己根據數據重新生成,也可以自己修改這個文件,文件的格式如下:

4、修改視頻文件路徑(必須)

這里源碼的處理邏輯是自動一級一級檢查圖片幀目錄,是否存在,并且會檢查第一個類別的第一個視頻的圖片幀的分辨率是否符合要求。

https://github.com/Niki173/C3D/blob/main/mypath.py

5、修改視頻幀尺寸(可選)

邏輯是抽幀的時候resize成這個尺寸,然后訓練的時候中心crop成112。源碼需要修改兩個地方。

1)https://github.com/Niki173/C3D/blob/main/dataloaders/dataset.py#L31

2)https://github.com/Niki173/C3D/blob/main/dataloaders/dataset.py#L105

? ? 6、修改歸一化特征值(可選)

?? ?https://github.com/Niki173/C3D/blob/main/dataloaders/dataset.py#L208

?? ??

7、修改是否需要test(可選)

一般現實工程數據較少時或者上線有其他測試集,建議關閉test分割,方式就是注銷相關代碼,下面標紅框。

https://github.com/Niki173/C3D/blob/main/dataloaders/dataset.py#L115

?

https://github.com/Niki173/C3D/blob/main/train.py#L23

https://github.com/Niki173/C3D/blob/main/train.py#L100

注銷紅框

8、修改抽幀間隔(可選)

默認是4秒。

https://github.com/Niki173/C3D/blob/main/dataloaders/dataset.py#L170

?二、訓練超參數

https://github.com/Niki173/C3D/blob/main/train.py#L21

三、網絡結構

? ? 1、C3D結構

? ? 2、R(2+1)D結構

? ? 3、區別

? ??1)R2D模塊就是傳統的2d卷積,將輸入c×l×h×w看作是cl×h×w(把多張當作一整張),只是將2d卷積作用于multi-frames上。

?? ?2)f-R2D,采取R2D相反的方式,分別對每幀做操作,在最后全局池化層在做所有幀的信息融合。

?? ?3)C3D:就是將時間維度單獨成一維。網絡結構如上面的圖。

?? ?4)R3D模塊就是前面講的C3D模塊,只不過是放到ResNet網絡中。

?? ?5)R(2+1)D:作者設計了2d卷積和1d卷積filter個數的匹配公式。相比于R3D,雖然參數沒變,但由于R(2+1)D添加更多Relu激活層,模型的表達能力應該更強,同時也更容易訓練優化。

?? ?6)P3D:R(2+1)D更接近P3D-A,把R(2+1)D都設計為相同的block,但P3D的第一層使用的是2d卷積。

?? ?

開源實現

https://github.com/HHTseng/video-classification

https://github.com/kenshohara/3D-ResNets-PyTorch

幾個不同網絡區別:[論文筆記] C3D | P3D | R2D - 知乎

C3D代碼總結(Pytorch)-CSDN博客

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

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

相關文章

CCF-CSP認證 2024年3月 4.化學方程式配平

題解&#xff1a;首先完成數據的讀入&#xff0c;然后高斯消元求秩按題意解即可 #pragma GCC optimize(2, 3, "Ofast", "inline") #include <bits/stdc.h> using namespace std; const int maxn 100;using matrix double[maxn][maxn]; using vect…

5.20Git

版本控制工具Git&#xff0c;其他的工具還有SVN 共享代碼&#xff0c;追溯記錄&#xff0c;存儲.c文件 Git實現的功能&#xff1a;回溯&#xff08;以前某個時間節點的數據情況&#xff09;共享&#xff08;大家共享修改&#xff09; Git&#xff1a;80% SVN&#xff…

QT tableWidget詳細分析

一.定義 QTableWidget是一個用于顯示表格數據的Qt控件&#xff0c;它是一個基于Qt Model/View框架的視圖組件。QTableWidget提供了一種簡單的方式來展示和編輯表格數據&#xff0c;用戶可以通過添加行、列和單元格來構建一個完整的數據表格。 下面是一些QTableWidget的主要特點…

The Missing Semester of Your CS Education(計算機教育中缺失的一課)

Shell 工具和腳本(Shell Tools and Scripting) 一、shell腳本 1.1、變量賦值 在bash中為變量賦值的語法是foobar&#xff0c;訪問變量中存儲的數值&#xff0c;其語法為 $foo。 需要注意的是&#xff0c;foo bar &#xff08;使用空格隔開&#xff09;是不能正確工作的&…

網工內推 | 香港移動,10年以上數通經驗,CCIE,5W-6W

01 香港移動招聘 &#x1f537;招聘崗位&#xff1a;網絡工程師 &#x1f537;崗位要求&#xff1a; 需要有10年及以上數通經驗&#xff0c;有CCIE 證書&#xff0c;懂技術管理&#xff0c;溝通暢通 &#x1f537;語言要求&#xff1a; 粵語英語 &#x1f537;薪資&#xff1…

基于灰狼優化算法優化RBF(GWO-RBF)的數據回歸預測(多輸入多輸出)

代碼原理及流程 基于灰狼優化算法優化多輸入多輸出&#xff08;MIMO&#xff09;的RBF神經網絡的數據回歸預測&#xff0c;可以采取以下步驟&#xff1a; 1. 數據準備&#xff1a;準備包含多個輸入特征和多個輸出目標的數據集&#xff0c;確保數據已經經過預處理和歸一化。 …

TCP - 半連接隊列和全連接隊列

目錄 一、半連接隊列和全連接隊列的概念 二、全連接隊列溢出 三、半連接隊列溢出 一、半連接隊列和全連接隊列的概念 1. 半連接隊列&#xff1a;服務端收到客戶端發送的 SYN 包時&#xff0c;內核會將該連接加入半連接 SYN 隊列&#xff0c;并向客戶端返回響應 2. 全連接隊…

CSS基礎(第二天)

Emmet語法 快速生成HTML結構語法 1. 生成標簽 直接輸入標簽名 按tab鍵即可 比如 div 然后tab 鍵&#xff0c; 就可以生成 <div></div> 2. 如果想要生成多個相同標簽 加上 * 就可以了 比如 div*3 就可以快速生成3個div 3. 如果有父子級關系的標簽&#xff0c;可以…

算法刷題筆記 數的范圍(C++實現)(二分法重要例題)

文章目錄 題目描述題目思路題目代碼&#xff08;C&#xff09;題目感想 題目描述 給定一個按照升序排列的長度為n的整數數組&#xff0c;以及q個查詢。對于每個查詢&#xff0c;返回一個元素k的起始位置和終止位置&#xff08;位置從0開始計數&#xff09;。如果數組中不存在該…

Docker【2】iptables 錯誤解決

iptables 錯誤解決 問題說明問題分析解決步驟1. 確保 iptables 模塊已加載2. 檢查和重啟 docker 服務3. 檢查 firewalld 狀態4. 重置 iptables 規則5. 查看和更新 Docker 配置 總結 問題說明 執行的 docker 命令如下&#xff0c;啟動 nginx 并設置宿主機端口 (8080) 與容器端口…

學習Uni-app開發小程序Day25

這一章學習了觸底加載更多阻止無效的網絡請求、分類列表存入Storage在預覽頁面讀取緩存展示、通過swiper的事件實現真正的壁紙預覽及切換 觸底加載更多阻止無效的網絡請求、load-more樣式的展現 前面已經學習了當列表觸底后&#xff0c;會繼續加載&#xff0c;當到最后一層后…

自動化測試--利用pytest實現整條業務鏈路測試

? 概述 前面一章講解了單個接口的測試&#xff0c;但是實際項目中&#xff0c;因為權限和登錄狀態的限制&#xff0c;大部分接口沒辦法直接訪問到&#xff0c;這時候我們想訪問到一個系統的接口&#xff0c;就需要模擬用戶登錄拿到用戶的token和所擁有的權限之后再將這些信息…

vivado2020.2創建hls仿真工程實現led閃爍

下載vivado2020.2后會有這個出現在桌面 點擊進入創建工程&#xff0c;這里注意不要有前面的\我再復制的時候復制錯了導致創建失敗 按f光標就會跳轉到下一個f開頭的函數處&#xff0c;要查找其他函數也同理 生成了一個synthesis summary文件 找到目錄下生成的.v文件 an 點…

Pod進階——資源限制以及探針檢查

目錄 一、資源限制 1、資源限制定義&#xff1a; 2、資源限制request和limit資源約束 3、Pod和容器的資源請求和限制 4、官方文檔示例 5、CPU資源單位 6、內存資源單位 7、資源限制實例 ①編寫yaml資源配置清單 ②釋放內存&#xff08;node節點&#xff0c;以node01為…

【知識蒸餾】多任務模型 logit-based 知識蒸餾實戰

一、什么是邏輯&#xff08;logit&#xff09;知識蒸餾 Feature-based蒸餾原理是知識蒸餾中的一種重要方法&#xff0c;其關鍵在于利用教師模型的隱藏層特征來指導學生模型的學習過程。這種蒸餾方式旨在使學生模型能夠學習到教師模型在特征提取和表示方面的能力&#xff0c;從…

有些錯誤,常犯常新、常新常犯:記錄一個使用element-plus的tooltip組件的錯誤

使用element-plus的tooltip組件&#xff0c;最開始的寫法是這樣的&#xff1a; <el-tooltipclass"box-item"effect"dark"content"tooltip content" ><el-button v-if"isDisabled" :underline"false" type"pr…

持續總結中!2024年面試必問 20 道 Redis面試題(五)

上一篇地址&#xff1a;持續總結中&#xff01;2024年面試必問 20 道 Redis面試題&#xff08;四&#xff09;-CSDN博客 九、Redis的同步機制了解么&#xff1f; Redis 的同步機制是其復制策略的核心部分&#xff0c;確保數據在主節點&#xff08;master&#xff09;和從節點…

【C語言】程序員自我修養之文件操作

【C語言】程序員自我修養之文件操作 &#x1f525;個人主頁&#xff1a;大白的編程日記 &#x1f525;專欄&#xff1a;C語言學習之路 文章目錄 【C語言】程序員自我修養之文件操作前言一.文件介紹1.1為什么使用文件1.2文件分類1.3二進制文件和文本文件 二.文件的打開和關閉2.…

桌面藏線大法

1有線改無線&#xff1a; 藍牙鼠標 藍牙鍵盤 藍牙耳機 2將排插貼到桌子底下 購物軟件上搜 3斷舍離 不要的電子產品統統扔掉 4 洞洞板和掛鉤 這個不用介紹了

爬蟲基本原理及requests庫用法

文章目錄 一、爬蟲基本原理1、什么是爬蟲2、爬蟲的分類3、網址的構成4、爬蟲的基本步驟5、動態【異步】頁面和靜態【同步】頁面6、請求頭 二、requests基本原理及使用1、chrome 抓包按鈕詳解1.1 Elements1.2 元素定位器1.3 Network1.4 All1.5 XHR1.6 Preserve log1.7 手機模式1…