HMDB51數據集劃分

生成訓練集、驗證集和測試集

每個split文件應該包含:

  • 訓練集(id=1): 70個視頻
  • 測試集(id=2): 30個視頻
  • 未使用(id=0): 剩余視頻
    這是一個70/30的訓練/測試分割比例。標記為0的視頻被排除在當前實驗之外。
  • 實際上訓練集(id=1),驗證集(id=2),測試集(id=0),測試集和驗證集可以互換
import os
import glob
from pathlib import Path# 設置數據處理的路徑
SPLIT_DIR = r"C:/Users/yanho/Desktop/testTrainMulti_7030_splits"  # split文件所在目錄
OUTPUT_DIR = r"C:/Users/yanho/Desktop/hmdb51_annotations"  # 輸出目錄def process_split_file(split_file, action_class):"""處理單個split文件并生成訓練、驗證和測試列表"""train_videos = []val_videos = []test_videos = []with open(split_file, 'r') as f:for line in f:video_name, label = line.strip().split()# 為每個視頻添加類別標簽(action_class)video_info = f'{video_name} {action_class}\n'if label == '1':train_videos.append(video_info)elif label == '2':val_videos.append(video_info)elif label == '0':test_videos.append(video_info)return train_videos, val_videos, test_videosdef main():# 創建輸出目錄output_dir = Path(OUTPUT_DIR)output_dir.mkdir(parents=True, exist_ok=True)# 用于收集所有訓練、驗證和測試樣本all_train_videos = []all_val_videos = []all_test_videos = []# 處理所有split1文件split_files = glob.glob(os.path.join(SPLIT_DIR, '*_test_split1.txt'))for split_file in split_files:# 從文件名中提取動作類別action_class = Path(split_file).stem.split('_test_split1')[0]# 獲取當前類別的動作類別索引class_idx = split_files.index(split_file)print(f'處理類別: {action_class} (索引: {class_idx})')# 處理當前split文件train_videos, val_videos, test_videos = process_split_file(split_file, class_idx)all_train_videos.extend(train_videos)all_val_videos.extend(val_videos)all_test_videos.extend(test_videos)# 寫入訓練集文件train_file = output_dir / 'train_split1.txt'with open(train_file, 'w') as f:f.writelines(all_train_videos)# 寫入驗證集文件val_file = output_dir / 'val_split1.txt'with open(val_file, 'w') as f:f.writelines(all_val_videos)# 寫入測試集文件test_file = output_dir / 'test_split1.txt'with open(test_file, 'w') as f:f.writelines(all_test_videos)print(f'\n處理完成!')print(f'訓練集樣本數: {len(all_train_videos)}')print(f'驗證集樣本數: {len(all_val_videos)}')print(f'測試集樣本數: {len(all_test_videos)}')print(f'文件保存在: {output_dir}')if __name__ == '__main__':main()

合并視頻到統一目錄

import os
import shutil
from pathlib import Pathdef merge_videos(src_dir, dst_dir):"""合并所有視頻到統一目錄Args:src_dir: 源視頻目錄dst_dir: 目標目錄"""# 創建目標目錄Path(dst_dir).mkdir(parents=True, exist_ok=True)# 遍歷源目錄for root, dirs, files in os.walk(src_dir):for file in files:if file.endswith('.avi'):  # 只處理視頻文件# 獲取類別名稱category = os.path.basename(os.path.dirname(root))# 創建類別子目錄category_dir = os.path.join(dst_dir, category)Path(category_dir).mkdir(exist_ok=True)# 源文件和目標文件路徑src_path = os.path.join(root, file)dst_path = os.path.join(category_dir, file)# 復制文件shutil.copy2(src_path, dst_path)print(f"Copied {src_path} -> {dst_path}")if __name__ == "__main__":src_dir = "videos_src"  # 源視頻目錄dst_dir = "data/hmdb51/videos"  # 目標目錄merge_videos(src_dir, dst_dir)  # 合并視頻到統一目錄,一共6766個視頻

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

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

相關文章

Spring Boot 項目的計算機專業論文參考文獻

技術范圍:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論文…

【Linux】Linux安裝并配置MongoDB

目錄 1.添加倉庫 2.安裝 MongoDB 包 3.啟動 MongoDB 服務 4. 驗證安裝 5.配置 5.1.進入無認證模式 5.2.1創建用戶 5.2.2.開啟認證 5.2.3重啟 5.2.4.登錄 6.端口變更 7.卸載 7.1.停止 MongoDB 服務 7.2.禁用 MongoDB 開機自啟動 7.3.卸載 MongoDB 包 7.4.刪除數…

2025/517學習

對離群值怎么操作。這個就是擬合操作的。用更彎曲的曲線去擬合,如常見函數log 多元回歸和單元回歸 如題,如果我有多個自變量,來對一個因變量進行OLS回歸,有沒有operator可以做到?(ts_regression似乎只支持一個…

RKNN開發環境搭建(ubuntu22.04)

以下情況在RV1106G3的平臺上驗證正常。 1、conda安裝 1)conda --version//確認是否安裝 2)創建一個安裝目錄,進行下一步 3)wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.6.14-Linux-x…

Flutter到HarmonyOS Next 的跨越:memory_info庫的鴻蒙適配之旅

Flutter到鴻蒙的跨越:memory_info庫的鴻蒙適配之旅 本項目作者:kirk/堅果 您可以使用這個Flutter插件來更改應用程序圖標上的角標 作者倉庫:https://github.com/MrOlolo/memory_info/tree/master/memory_info 在數字化浪潮的推動下&#…

VLAN擴展技術

端口隔離 🌐 一、原理總結: 端口隔離功能:實現同一VLAN內端口之間的二層隔離。 用戶只需將端口加入同一個隔離組(Port-isolate group),即可實現這些端口之間不能互通。 實現效果:更安全、更加…

設計模式 - 單例模式 - Tips

為什么雙重檢查會帶來空指針異常問題? if (instance null) { synchronized (Singleton.class) { if (instance null) { instance new Singleton(); } } …

【Ragflow】22.RagflowPlus(v0.3.0):用戶會話管理/文件類型拓展/諸多優化更新

概述 在歷經三周的階段性開發后,RagflowPlus順利完成既定計劃,正式發布v0.3.0版本。 開源地址:https://github.com/zstar1003/ragflow-plus 新功能 1. 用戶會話管理 在后臺管理系統中,新增用戶會話管理菜單。在此菜單中&…

c++重要知識點匯總(不定期更新)

前言 真心希望各位dalao點贊收藏~ 樹狀數組 作用:高效求出區間前綴和,允許進行修改操作。 舉個栗子: 剛開始有8項,分別為1-8。 首先構建二叉樹: 1-8/ |/ |/ |/ |/ |1-4 5-8/ | / |/ | / |1-…

Predict Podcast Listening Time-(回歸+特征工程+xgb)

Predict Podcast Listening Time 題意: 給你沒個播客的信息,讓你預測觀眾的聆聽時間。 數據處理: 1.構造新特征收聽效率進行分組 2.對數據異常處理 3.對時間情緒等進行數值編碼 4.求某特征值求多項式特征 5.生成特征組合 6.交叉驗證并enc…

Class類的詳細說明

Class類的詳細說明 Class 類是Java反射機制的核心,每個Java類或接口在JVM中都有一個對應的 Class 對象,用于表示該類的元數據(如類名、方法、字段、構造器等)。以下是其核心知識點: 1. 獲取Class對象的三種方式 方式…

[逆向工程]C++實現DLL注入:原理、實現與防御全解析(二十五)

[逆向工程]C實現DLL注入:原理、實現與防御全解析(二十五) 引言 DLL注入(DLL Injection)是Windows系統下實現進程間通信、功能擴展、監控調試的核心技術之一。本文將從原理分析、代碼實現、實戰調試到防御方案&#x…

【ROS2實戰】在中國地區 Ubuntu 22.04 上安裝 ROS 2 Humble 教程

本文介紹如何在中國大陸環境下順利安裝 ROS 2 Humble,包括使用清華鏡像源、解決 locale 和 GPG 密鑰問題、安裝 ROS 軟件包以及配置自動環境加載。 🌟 ROS 2 版本簡介 ROS 2 是機器人操作系統的第二代版本,目前主要有兩個長期支持&#xff0…

嵌入式學習筆記 - STM32 ADC 模塊工作模式總結

ADC 模式總結: 一 單ADC模式(是指ADC1,ADC2,ADC3中只有一個ADC被使用) ①單通道: 非連續模式:非連續的意思就是單次,一次轉換完成后就停止轉換,除非再次被軟件或者被外部觸發啟動&#xff1b…

Python訓練打卡Day26

函數專題1:函數定義與參數 知識點回顧: 函數的定義變量作用域:局部變量和全局變量函數的參數類型:位置參數、默認參數、不定參數傳遞參數的手段:關鍵詞參數傳遞參數的順序:同時出現三種參數類型時 到目前為…

使用Docker部署Nacos

sudo systemctl start docker sudo systemctl enable docker docker --version 步驟 2: 拉取 Nacos Docker 鏡像 拉取 Nacos 鏡像: 你可以從 Docker Hub 上拉取官方的 Nacos 鏡像,使用以下命令: docker pull nacos/nacos-server 這會從 …

Ubuntu 添加系統調用

實驗內容 通過內核編譯法添加一個不用傳遞參數的系統調用,其功能可自定義。 (1)添加系統調用號,系統會根據這個號找到syscall_table中的相應表項。具體做法是在syscall_64.tbl文件中添加系統調用號和調用函數的對應關系。 &#…

Javascript:WebAPI

獲取網頁元素 queryselector queryselector是 JavaScript 中用于選擇 DOM 元素的重要方法,它允許使用 CSS 選擇器語法來查找頁面中的元素。 一般queryselector獲取的元素都是html中第一個選擇器的元素 支持選擇器類型:類選擇器(.class) &#xff0c…

十二、Hive 函數

作者:IvanCodes 日期:2025年5月1日 專欄:Hive教程 在數據處理的廣闊天地中,我們常常需要對數據進行轉換、計算、清洗或提取特定信息。Hive 提供了強大的內置運算符和豐富的內置函數庫,它們就像魔法師手中的魔法棒&…

Linux之Nginx安裝及配置原理篇(一)

Nginx安裝及配置 前情回顧 首先針對Nginx進程模型,我們回顧一下它的原理機制,我們知道它是通過Master通過fork分發任務節點給予work節點,然后work節點觸發了event事件,之后通過一個access_muttex互斥鎖,來單線程調用我…