help@rskworld.in +91 93305 39277
RSK World
  • Home
  • Development
    • Web Development
    • Mobile Apps
    • Software
    • Games
    • Project
  • Technologies
    • Data Science
    • AI Development
    • Cloud Development
    • Blockchain
    • Cyber Security
    • Dev Tools
    • Testing Tools
  • Blog
  • About
  • Contact

Theme Settings

Color Scheme
Display Options
Font Size
100%
Back to Project
RSK World
action-recognition
RSK World
action-recognition
Action Recognition Dataset - Video Classification + Action AI + Video ML
action-recognition
  • annotations
  • sample_data
  • .gitignore1.2 KB
  • LICENSE.txt3.3 KB
  • README.md13.1 KB
  • RELEASE_NOTES.md4 KB
  • action-recognition.png150.5 KB
  • api_server.py16.1 KB
  • augmentation.py15.9 KB
  • benchmark.py20.6 KB
  • config.json2.8 KB
  • convert_videos.py3.5 KB
  • create_logo.py5.5 KB
  • demo.html28.3 KB
  • download_real_human_videos.py12.6 KB
  • download_real_videos.py21.1 KB
  • download_ucf101.py19.6 KB
  • download_youtube_videos.py10.1 KB
  • favicon.png786 B
  • generate_browser_videos.py10.7 KB
  • generate_samples.py19.4 KB
  • get_real_videos.py8.2 KB
  • index.html38.8 KB
  • loader.py8.9 KB
  • logo.png8.5 KB
  • process_downloaded.py4.6 KB
  • real_running_preview.png195.6 KB
  • real_video_preview.png330.6 KB
  • realtime_predictor.py14.3 KB
  • requirements.txt1.9 KB
  • script.js13.8 KB
  • styles.css39.4 KB
  • train_model.py20.5 KB
  • video_preview.png61.3 KB
  • visualize_dataset.py18 KB
PDF_DOWNLOAD_FIXES.mdQUICK_START.mdindex.htmlrealtime_predictor.py
index.html
Raw Download
Find: Go to:
<!--
==================================================================================
    Action Recognition Dataset - Video Action Recognition for AI/ML Training
==================================================================================
    Project: Action Recognition Dataset
    Category: Video Data / Data Science
    
    Description: Video action recognition dataset with labeled video sequences 
    for training action classification and video understanding models.
    
==================================================================================
    DEVELOPER INFORMATION
==================================================================================
    Website: RSK World (https://rskworld.in)
    Founded by: Molla Samser
    Designer & Tester: Rima Khatun
    
    Contact Information:
    - Email: help@rskworld.in
    - Email: support@rskworld.in
    - Phone: +91 93305 39277
    
    Social Media: Follow us on our social platforms for updates
    
==================================================================================
    COPYRIGHT & LICENSE
==================================================================================
    © 2026 RSK World. All Rights Reserved.
    This dataset is provided for educational and research purposes.
    
    For commercial use or content removal requests, please contact:
    support@rskworld.in
    
==================================================================================
    TECHNOLOGIES USED
==================================================================================
    - MP4 & AVI Video Formats
    - OpenCV for Video Processing
    - HTML5, CSS3, JavaScript
    - Font Awesome Icons
    - Google Fonts
    
==================================================================================
-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="Action Recognition Dataset - Video action recognition dataset with labeled video sequences for training 3D CNNs and video understanding models. By RSK World.">
    <meta name="keywords" content="action recognition, video dataset, machine learning, deep learning, 3D CNN, video classification, computer vision, RSK World">
    <meta name="author" content="Molla Samser - RSK World">
    <meta name="robots" content="index, follow">
    
    <!-- Open Graph Meta Tags -->
    <meta property="og:title" content="Action Recognition Dataset - RSK World">
    <meta property="og:description" content="Video action recognition dataset with labeled sequences for AI/ML training">
    <meta property="og:image" content="action-recognition.png">
    <meta property="og:url" content="https://rskworld.in/action-recognition/">
    <meta property="og:type" content="website">
    
    <title>Action Recognition Dataset | RSK World - rskworld.in</title>
    
    <!-- Favicon -->
    <link rel="icon" type="image/png" href="favicon.png">
    
    <!-- Google Fonts - Distinctive Typography -->
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
    
    <!-- Font Awesome -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
    
    <!-- Main Stylesheet -->
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <!-- Animated Background -->
    <div class="bg-animation">
        <div class="bg-gradient"></div>
        <div class="bg-grid"></div>
        <div class="floating-shapes">
            <div class="shape shape-1"></div>
            <div class="shape shape-2"></div>
            <div class="shape shape-3"></div>
            <div class="shape shape-4"></div>
            <div class="shape shape-5"></div>
        </div>
    </div>

    <!-- Navigation -->
    <nav class="navbar" id="navbar">
        <div class="nav-container">
            <a href="https://rskworld.in" class="nav-logo">
                <i class="fas fa-video"></i>
                <span>RSK<span class="highlight">World</span></span>
            </a>
            <div class="nav-links">
                <a href="#overview" class="nav-link">Overview</a>
                <a href="#features" class="nav-link">Features</a>
                <a href="#structure" class="nav-link">Structure</a>
                <a href="#usage" class="nav-link">Usage</a>
                <a href="https://rskworld.in/contact.php" class="nav-link contact-btn">
                    <i class="fas fa-envelope"></i> Contact
                </a>
            </div>
            <button class="mobile-menu-btn" id="mobileMenuBtn">
                <span></span>
                <span></span>
                <span></span>
            </button>
        </div>
    </nav>

    <!-- Mobile Menu -->
    <div class="mobile-menu" id="mobileMenu">
        <a href="#overview" class="mobile-link">Overview</a>
        <a href="#features" class="mobile-link">Features</a>
        <a href="#structure" class="mobile-link">Structure</a>
        <a href="#usage" class="mobile-link">Usage</a>
        <a href="https://rskworld.in/contact.php" class="mobile-link">Contact</a>
    </div>

    <!-- Hero Section -->
    <header class="hero" id="hero">
        <div class="hero-content">
            <div class="hero-badge">
                <i class="fas fa-fire"></i>
                <span>Advanced Dataset</span>
            </div>
            <h1 class="hero-title">
                <span class="title-line">Action Recognition</span>
                <span class="title-line gradient-text">Video Dataset</span>
            </h1>
            <p class="hero-description">
                Comprehensive video action recognition dataset with labeled sequences for training 
                3D CNNs, video classification models, and video understanding applications.
            </p>
            <div class="hero-stats">
                <div class="stat">
                    <i class="fas fa-video"></i>
                    <div class="stat-info">
                        <span class="stat-number" data-count="1500">0</span>
                        <span class="stat-label">Video Clips</span>
                    </div>
                </div>
                <div class="stat">
                    <i class="fas fa-tags"></i>
                    <div class="stat-info">
                        <span class="stat-number" data-count="15">0</span>
                        <span class="stat-label">Action Classes</span>
                    </div>
                </div>
                <div class="stat">
                    <i class="fas fa-clock"></i>
                    <div class="stat-info">
                        <span class="stat-number" data-count="50">0</span>
                        <span class="stat-label">Hours of Video</span>
                    </div>
                </div>
            </div>
            <div class="hero-actions">
                <a href="action-recognition.zip" class="btn btn-primary" download>
                    <i class="fas fa-download"></i>
                    Download Dataset
                </a>
                <a href="#structure" class="btn btn-secondary">
                    <i class="fas fa-folder-open"></i>
                    Explore Structure
                </a>
            </div>
            <div class="hero-tech">
                <span class="tech-label">Technologies:</span>
                <div class="tech-tags">
                    <span class="tech-tag"><i class="fas fa-film"></i> MP4</span>
                    <span class="tech-tag"><i class="fas fa-video"></i> AVI</span>
                    <span class="tech-tag"><i class="fas fa-eye"></i> OpenCV</span>
                    <span class="tech-tag"><i class="fas fa-cog"></i> Video Processing</span>
                </div>
            </div>
        </div>
        <div class="hero-visual">
            <div class="video-showcase">
                <div class="video-frame">
                    <div class="frame-header">
                        <div class="frame-dots">
                            <span class="dot red"></span>
                            <span class="dot yellow"></span>
                            <span class="dot green"></span>
                        </div>
                        <span class="frame-title" id="videoTitle">dancing_001.mp4</span>
                    </div>
                    <div class="frame-content">
                        <div class="video-preview">
                            <video id="heroVideo" autoplay loop muted playsinline class="hero-real-video">
                                <source src="sample_data/train/dancing/dancing_001.mp4" type="video/mp4">
                            </video>
                            <div class="action-label">
                                <span class="label-text" id="actionLabel">Dancing</span>
                                <span class="confidence">Confidence: <span id="confidenceValue">98.5%</span></span>
                            </div>
                        </div>
                        <div class="video-controls">
                            <button class="video-nav-btn" id="prevVideo" title="Previous Video">
                                <i class="fas fa-chevron-left"></i>
                            </button>
                            <div class="video-indicator">
                                <span id="currentVideoIndex">1</span> / <span id="totalVideos">8</span>
                            </div>
                            <button class="video-nav-btn" id="nextVideo" title="Next Video">
                                <i class="fas fa-chevron-right"></i>
                            </button>
                        </div>
                        <div class="video-timeline">
                            <div class="timeline-progress" id="timelineProgress"></div>
                        </div>
                    </div>
                </div>
                <!-- Video Thumbnails -->
                <div class="video-thumbnails">
                    <div class="thumbnail active" data-video="sample_data/train/dancing/dancing_001.mp4" data-label="Dancing">
                        <i class="fas fa-music"></i>
                        <span>Dancing</span>
                    </div>
                    <div class="thumbnail" data-video="sample_data/train/running/running_001.mp4" data-label="Running">
                        <i class="fas fa-running"></i>
                        <span>Running</span>
                    </div>
                    <div class="thumbnail" data-video="sample_data/train/walking/walking_001.mp4" data-label="Walking">
                        <i class="fas fa-walking"></i>
                        <span>Walking</span>
                    </div>
                    <div class="thumbnail" data-video="sample_data/train/jumping/jumping_001.mp4" data-label="Jumping">
                        <i class="fas fa-arrow-up"></i>
                        <span>Jumping</span>
                    </div>
                    <div class="thumbnail" data-video="sample_data/train/yoga/yoga_001.mp4" data-label="Yoga">
                        <i class="fas fa-spa"></i>
                        <span>Yoga</span>
                    </div>
                    <div class="thumbnail" data-video="sample_data/train/stretching/stretching_001.mp4" data-label="Stretching">
                        <i class="fas fa-child"></i>
                        <span>Stretching</span>
                    </div>
                    <div class="thumbnail" data-video="sample_data/train/exercising/exercising_001.mp4" data-label="Exercising">
                        <i class="fas fa-dumbbell"></i>
                        <span>Exercise</span>
                    </div>
                </div>
            </div>
        </div>
    </header>

    <!-- Overview Section -->
    <section class="section overview" id="overview">
        <div class="container">
            <div class="section-header">
                <span class="section-badge">About Dataset</span>
                <h2 class="section-title">What's Inside?</h2>
                <p class="section-description">
                    A comprehensive collection of video sequences with action labels, 
                    perfect for training state-of-the-art video understanding models.
                </p>
            </div>
            <div class="overview-grid">
                <div class="overview-card main-card">
                    <div class="card-icon">
                        <i class="fas fa-database"></i>
                    </div>
                    <h3>Dataset Overview</h3>
                    <p>
                        This dataset contains carefully curated video sequences with precise action labels 
                        for action recognition tasks. Perfect for training 3D CNNs, video classification 
                        models, and video understanding applications.
                    </p>
                    <ul class="feature-list">
                        <li><i class="fas fa-check"></i> High-quality video sequences</li>
                        <li><i class="fas fa-check"></i> Precise frame-level annotations</li>
                        <li><i class="fas fa-check"></i> Multiple action categories</li>
                        <li><i class="fas fa-check"></i> Ready for deep learning models</li>
                    </ul>
                </div>
                <div class="overview-card">
                    <div class="card-icon purple">
                        <i class="fas fa-brain"></i>
                    </div>
                    <h3>Use Cases</h3>
                    <ul class="use-case-list">
                        <li>Video Classification</li>
                        <li>Action Detection</li>
                        <li>Sports Analytics</li>
                        <li>Surveillance Systems</li>
                        <li>Human-Computer Interaction</li>
                    </ul>
                </div>
                <div class="overview-card">
                    <div class="card-icon cyan">
                        <i class="fas fa-code"></i>
                    </div>
                    <h3>Compatible Models</h3>
                    <ul class="use-case-list">
                        <li>3D CNN (C3D, I3D)</li>
                        <li>Two-Stream Networks</li>
                        <li>SlowFast Networks</li>
                        <li>Video Transformers</li>
                        <li>LSTM + CNN Hybrids</li>
                    </ul>
                </div>
            </div>
        </div>
    </section>

    <!-- Features Section -->
    <section class="section features" id="features">
        <div class="container">
            <div class="section-header">
                <span class="section-badge">Key Features</span>
                <h2 class="section-title">Dataset Features</h2>
                <p class="section-description">
                    Everything you need for building robust action recognition systems
                </p>
            </div>
            <div class="features-grid">
                <div class="feature-card" data-aos="fade-up">
                    <div class="feature-icon">
                        <i class="fas fa-film"></i>
                    </div>
                    <h3>Labeled Video Sequences</h3>
                    <p>High-quality video clips with accurate action labels for supervised learning</p>
                </div>
                <div class="feature-card" data-aos="fade-up" data-aos-delay="100">
                    <div class="feature-icon">
                        <i class="fas fa-layer-group"></i>
                    </div>
                    <h3>Multiple Action Classes</h3>
                    <p>Diverse action categories including walking, running, jumping, and more</p>
                </div>
                <div class="feature-card" data-aos="fade-up" data-aos-delay="200">
                    <div class="feature-icon">
                        <i class="fas fa-random"></i>
                    </div>
                    <h3>Training & Validation Sets</h3>
                    <p>Pre-split datasets for proper model training and evaluation</p>
                </div>
                <div class="feature-card" data-aos="fade-up" data-aos-delay="300">
                    <div class="feature-icon">
                        <i class="fas fa-crosshairs"></i>
                    </div>
                    <h3>Frame-Level Annotations</h3>
                    <p>Precise temporal annotations for accurate action localization</p>
                </div>
                <div class="feature-card" data-aos="fade-up" data-aos-delay="400">
                    <div class="feature-icon">
                        <i class="fas fa-cube"></i>
                    </div>
                    <h3>Ready for 3D CNN Models</h3>
                    <p>Optimized format for spatiotemporal deep learning architectures</p>
                </div>
                <div class="feature-card" data-aos="fade-up" data-aos-delay="500">
                    <div class="feature-icon">
                        <i class="fas fa-file-code"></i>
                    </div>
                    <h3>Metadata & Documentation</h3>
                    <p>Complete documentation with usage examples and best practices</p>
                </div>
            </div>
        </div>
    </section>

    <!-- Dataset Structure Section -->
    <section class="section structure" id="structure">
        <div class="container">
            <div class="section-header">
                <span class="section-badge">Organization</span>
                <h2 class="section-title">Dataset Structure</h2>
                <p class="section-description">
                    Well-organized directory structure for easy navigation and integration
                </p>
            </div>
            <div class="structure-container">
                <div class="file-tree">
                    <div class="tree-header">
                        <i class="fas fa-folder-open"></i>
                        <span>action-recognition/</span>
                    </div>
                    <ul class="tree-list">
                        <li class="tree-item">
                            <div class="item-header folder" onclick="toggleFolder(this)">
                                <i class="fas fa-folder"></i>
                                <span>train/</span>
                                <span class="item-count">12 classes</span>
                            </div>
                            <ul class="sub-tree">
                                <li class="tree-item">
                                    <div class="item-header folder" onclick="toggleFolder(this)">
                                        <i class="fas fa-folder"></i>
                                        <span>walking/</span>
                                        <span class="item-count">150 videos</span>
                                    </div>
                                </li>
                                <li class="tree-item">
                                    <div class="item-header folder" onclick="toggleFolder(this)">
                                        <i class="fas fa-folder"></i>
                                        <span>running/</span>
                                        <span class="item-count">120 videos</span>
                                    </div>
                                </li>
                                <li class="tree-item">
                                    <div class="item-header folder" onclick="toggleFolder(this)">
                                        <i class="fas fa-folder"></i>
                                        <span>jumping/</span>
                                        <span class="item-count">100 videos</span>
                                    </div>
                                </li>
                                <li class="tree-item">
                                    <div class="item-header folder" onclick="toggleFolder(this)">
                                        <i class="fas fa-folder"></i>
                                        <span>sitting/</span>
                                        <span class="item-count">90 videos</span>
                                    </div>
                                </li>
                                <li class="tree-item more-items">
                                    <span>... 8 more classes</span>
                                </li>
                            </ul>
                        </li>
                        <li class="tree-item">
                            <div class="item-header folder" onclick="toggleFolder(this)">
                                <i class="fas fa-folder"></i>
                                <span>val/</span>
                                <span class="item-count">12 classes</span>
                            </div>
                            <ul class="sub-tree">
                                <li class="tree-item more-items">
                                    <span>Same structure as train/</span>
                                </li>
                            </ul>
                        </li>
                        <li class="tree-item">
                            <div class="item-header folder" onclick="toggleFolder(this)">
                                <i class="fas fa-folder"></i>
                                <span>test/</span>
                                <span class="item-count">12 classes</span>
                            </div>
                            <ul class="sub-tree">
                                <li class="tree-item more-items">
                                    <span>Same structure as train/</span>
                                </li>
                            </ul>
                        </li>
                        <li class="tree-item">
                            <div class="item-header folder" onclick="toggleFolder(this)">
                                <i class="fas fa-folder"></i>
                                <span>annotations/</span>
                                <span class="item-count">4 files</span>
                            </div>
                            <ul class="sub-tree">
                                <li class="tree-item">
                                    <div class="item-header file">
                                        <i class="fas fa-file-alt json"></i>
                                        <span>train_annotations.json</span>
                                    </div>
                                </li>
                                <li class="tree-item">
                                    <div class="item-header file">
                                        <i class="fas fa-file-alt json"></i>
                                        <span>val_annotations.json</span>
                                    </div>
                                </li>
                                <li class="tree-item">
                                    <div class="item-header file">
                                        <i class="fas fa-file-alt json"></i>
                                        <span>test_annotations.json</span>
                                    </div>
                                </li>
                                <li class="tree-item">
                                    <div class="item-header file">
                                        <i class="fas fa-file-alt json"></i>
                                        <span>class_labels.json</span>
                                    </div>
                                </li>
                            </ul>
                        </li>
                        <li class="tree-item">
                            <div class="item-header file">
                                <i class="fas fa-file-alt md"></i>
                                <span>README.md</span>
                            </div>
                        </li>
                        <li class="tree-item">
                            <div class="item-header file">
                                <i class="fas fa-file-alt txt"></i>
                                <span>LICENSE.txt</span>
                            </div>
                        </li>
                    </ul>
                </div>
                <div class="structure-info">
                    <h3>Action Classes</h3>
                    <div class="class-grid">
                        <div class="class-tag"><i class="fas fa-walking"></i> Walking</div>
                        <div class="class-tag"><i class="fas fa-running"></i> Running</div>
                        <div class="class-tag"><i class="fas fa-arrow-up"></i> Jumping</div>
                        <div class="class-tag"><i class="fas fa-chair"></i> Sitting</div>
                        <div class="class-tag"><i class="fas fa-male"></i> Standing</div>
                        <div class="class-tag"><i class="fas fa-hand-paper"></i> Waving</div>
                        <div class="class-tag"><i class="fas fa-handshake"></i> Clapping</div>
                        <div class="class-tag"><i class="fas fa-fist-raised"></i> Punching</div>
                        <div class="class-tag"><i class="fas fa-shoe-prints"></i> Kicking</div>
                        <div class="class-tag"><i class="fas fa-sync-alt"></i> Turning</div>
                        <div class="class-tag"><i class="fas fa-arrows-alt-v"></i> Bending</div>
                        <div class="class-tag"><i class="fas fa-hand-point-right"></i> Pointing</div>
                    </div>
                    <div class="format-info">
                        <h4>Video Specifications</h4>
                        <ul>
                            <li><strong>Format:</strong> MP4 / AVI</li>
                            <li><strong>Resolution:</strong> 320x240 to 1920x1080</li>
                            <li><strong>Frame Rate:</strong> 24-30 FPS</li>
                            <li><strong>Duration:</strong> 2-10 seconds per clip</li>
                            <li><strong>Color:</strong> RGB</li>
                        </ul>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- Usage Section -->
    <section class="section usage" id="usage">
        <div class="container">
            <div class="section-header">
                <span class="section-badge">Getting Started</span>
                <h2 class="section-title">How to Use</h2>
                <p class="section-description">
                    Quick start guide for loading and using the dataset
                </p>
            </div>
            <div class="code-examples">
                <div class="code-tabs">
                    <button class="code-tab active" data-tab="python">
                        <i class="fab fa-python"></i> Python
                    </button>
                    <button class="code-tab" data-tab="pytorch">
                        <i class="fas fa-fire"></i> PyTorch
                    </button>
                    <button class="code-tab" data-tab="tensorflow">
                        <i class="fas fa-brain"></i> TensorFlow
                    </button>
                </div>
                <div class="code-content">
                    <div class="code-panel active" id="python">
                        <pre><code class="language-python"><span class="comment"># Action Recognition Dataset Loader</span>
<span class="comment"># Created by RSK World (rskworld.in)</span>
<span class="comment"># Developer: Molla Samser</span>

<span class="keyword">import</span> cv2
<span class="keyword">import</span> os
<span class="keyword">import</span> json
<span class="keyword">import</span> numpy <span class="keyword">as</span> np

<span class="keyword">def</span> <span class="function">load_video</span>(video_path, num_frames=<span class="number">16</span>):
    <span class="string">"""Load and preprocess video frames"""</span>
    cap = cv2.VideoCapture(video_path)
    frames = []
    
    <span class="keyword">while</span> <span class="keyword">True</span>:
        ret, frame = cap.read()
        <span class="keyword">if not</span> ret:
            <span class="keyword">break</span>
        frame = cv2.resize(frame, (<span class="number">224</span>, <span class="number">224</span>))
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        frames.append(frame)
    
    cap.release()
    
    <span class="comment"># Sample frames uniformly</span>
    indices = np.linspace(<span class="number">0</span>, len(frames)-<span class="number">1</span>, num_frames).astype(int)
    <span class="keyword">return</span> np.array([frames[i] <span class="keyword">for</span> i <span class="keyword">in</span> indices])

<span class="comment"># Load class labels</span>
<span class="keyword">with</span> <span class="function">open</span>(<span class="string">'annotations/class_labels.json'</span>) <span class="keyword">as</span> f:
    class_labels = json.load(f)

<span class="keyword">print</span>(<span class="string">f"Loaded {len(class_labels)} action classes"</span>)</code></pre>
                    </div>
                    <div class="code-panel" id="pytorch">
                        <pre><code class="language-python"><span class="comment"># PyTorch Dataset for Action Recognition</span>
<span class="comment"># Created by RSK World (rskworld.in)</span>
<span class="comment"># Developer: Molla Samser</span>

<span class="keyword">import</span> torch
<span class="keyword">from</span> torch.utils.data <span class="keyword">import</span> Dataset, DataLoader
<span class="keyword">import</span> cv2
<span class="keyword">import</span> os

<span class="keyword">class</span> <span class="class-name">ActionDataset</span>(Dataset):
    <span class="keyword">def</span> <span class="function">__init__</span>(self, root_dir, split=<span class="string">'train'</span>, transform=<span class="keyword">None</span>):
        self.root_dir = os.path.join(root_dir, split)
        self.transform = transform
        self.classes = sorted(os.listdir(self.root_dir))
        self.samples = []
        
        <span class="keyword">for</span> cls_idx, cls_name <span class="keyword">in</span> <span class="function">enumerate</span>(self.classes):
            cls_path = os.path.join(self.root_dir, cls_name)
            <span class="keyword">for</span> video <span class="keyword">in</span> os.listdir(cls_path):
                self.samples.append((
                    os.path.join(cls_path, video),
                    cls_idx
                ))
    
    <span class="keyword">def</span> <span class="function">__len__</span>(self):
        <span class="keyword">return</span> <span class="function">len</span>(self.samples)
    
    <span class="keyword">def</span> <span class="function">__getitem__</span>(self, idx):
        video_path, label = self.samples[idx]
        frames = self._load_video(video_path)
        <span class="keyword">if</span> self.transform:
            frames = self.transform(frames)
        <span class="keyword">return</span> torch.FloatTensor(frames), label

<span class="comment"># Create DataLoader</span>
dataset = ActionDataset(<span class="string">'./action-recognition'</span>, split=<span class="string">'train'</span>)
loader = DataLoader(dataset, batch_size=<span class="number">8</span>, shuffle=<span class="keyword">True</span>)</code></pre>
                    </div>
                    <div class="code-panel" id="tensorflow">
                        <pre><code class="language-python"><span class="comment"># TensorFlow Dataset for Action Recognition</span>
<span class="comment"># Created by RSK World (rskworld.in)</span>
<span class="comment"># Developer: Molla Samser</span>

<span class="keyword">import</span> tensorflow <span class="keyword">as</span> tf
<span class="keyword">import</span> pathlib

<span class="keyword">def</span> <span class="function">create_dataset</span>(data_dir, batch_size=<span class="number">8</span>):
    <span class="string">"""Create TensorFlow dataset from video directory"""</span>
    data_dir = pathlib.Path(data_dir)
    
    <span class="comment"># Get class names from directory structure</span>
    class_names = sorted([item.name <span class="keyword">for</span> item <span class="keyword">in</span> data_dir.iterdir() 
                         <span class="keyword">if</span> item.is_dir()])
    
    <span class="keyword">def</span> <span class="function">process_video</span>(video_path):
        <span class="comment"># Read and decode video frames</span>
        video = tf.io.read_file(video_path)
        <span class="comment"># Process frames...</span>
        <span class="keyword">return</span> frames
    
    <span class="comment"># Create dataset</span>
    list_ds = tf.data.Dataset.list_files(<span class="function">str</span>(data_dir/<span class="string">'*/*'</span>))
    dataset = list_ds.map(process_video, 
                         num_parallel_calls=tf.data.AUTOTUNE)
    dataset = dataset.batch(batch_size).prefetch(tf.data.AUTOTUNE)
    
    <span class="keyword">return</span> dataset, class_names

<span class="comment"># Load training data</span>
train_ds, classes = create_dataset(<span class="string">'./action-recognition/train'</span>)
<span class="keyword">print</span>(<span class="string">f"Classes: {classes}"</span>)</code></pre>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- Download Section -->
    <section class="section download" id="download">
        <div class="container">
            <div class="download-card">
                <div class="download-content">
                    <h2>Ready to Start?</h2>
                    <p>Download the complete Action Recognition Dataset and start building your video understanding models today.</p>
                    <div class="download-stats">
                        <div class="download-stat">
                            <i class="fas fa-hdd"></i>
                            <span>~2.5 GB</span>
                        </div>
                        <div class="download-stat">
                            <i class="fas fa-file-archive"></i>
                            <span>ZIP Format</span>
                        </div>
                        <div class="download-stat">
                            <i class="fas fa-shield-alt"></i>
                            <span>Virus Scanned</span>
                        </div>
                    </div>
                    <a href="action-recognition.zip" class="btn btn-download" download>
                        <i class="fas fa-cloud-download-alt"></i>
                        Download Dataset (ZIP)
                    </a>
                </div>
                <div class="download-visual">
                    <div class="file-icon-large">
                        <i class="fas fa-file-archive"></i>
                        <span class="file-name">action-recognition.zip</span>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- Footer -->
    <footer class="footer">
        <div class="container">
            <div class="footer-content">
                <div class="footer-brand">
                    <a href="https://rskworld.in" class="footer-logo">
                        <i class="fas fa-video"></i>
                        <span>RSK<span class="highlight">World</span></span>
                    </a>
                    <p>Your one-stop destination for free programming resources, source code, and development tools.</p>
                    <div class="footer-social">
                        <a href="#" class="social-link"><i class="fab fa-facebook-f"></i></a>
                        <a href="#" class="social-link"><i class="fab fa-twitter"></i></a>
                        <a href="#" class="social-link"><i class="fab fa-instagram"></i></a>
                        <a href="#" class="social-link"><i class="fab fa-youtube"></i></a>
                        <a href="#" class="social-link"><i class="fab fa-github"></i></a>
                    </div>
                </div>
                <div class="footer-links">
                    <div class="footer-column">
                        <h4>Quick Links</h4>
                        <ul>
                            <li><a href="https://rskworld.in">Home</a></li>
                            <li><a href="https://rskworld.in/about.php">About</a></li>
                            <li><a href="https://rskworld.in/contact.php">Contact</a></li>
                        </ul>
                    </div>
                    <div class="footer-column">
                        <h4>Resources</h4>
                        <ul>
                            <li><a href="https://rskworld.in/data-science.php">Data Science</a></li>
                            <li><a href="https://rskworld.in/ai-development.php">AI Development</a></li>
                            <li><a href="https://rskworld.in/projects.php">Projects</a></li>
                        </ul>
                    </div>
                    <div class="footer-column">
                        <h4>Contact</h4>
                        <ul>
                            <li><i class="fas fa-envelope"></i> help@rskworld.in</li>
                            <li><i class="fas fa-phone"></i> +91 93305 39277</li>
                            <li><i class="fas fa-globe"></i> rskworld.in</li>
                        </ul>
                    </div>
                </div>
            </div>
            <div class="footer-bottom">
                <div class="footer-info">
                    <p>Founded by <strong>Molla Samser</strong> | Designer & Tester: <strong>Rima Khatun</strong></p>
                </div>
                <p class="copyright">
                    © 2026 <a href="https://rskworld.in">RSK World</a>. All Rights Reserved. | 
                    <a href="https://rskworld.in/privacy-policy.php">Privacy Policy</a> | 
                    <a href="https://rskworld.in/terms.php">Terms & Conditions</a>
                </p>
            </div>
        </div>
    </footer>

    <!-- Back to Top Button -->
    <button class="back-to-top" id="backToTop">
        <i class="fas fa-arrow-up"></i>
    </button>

    <!-- Main JavaScript -->
    <script src="script.js"></script>
</body>
</html>

770 lines•38.8 KB
markup
realtime_predictor.py
Raw Download
Find: Go to:
"""
==================================================================================
    Action Recognition - Real-Time Webcam Predictor
==================================================================================
    Project: Action Recognition Dataset
    
    Real-time action recognition using webcam with:
    - Live video feed processing
    - Smooth action predictions
    - Confidence visualization
    - Recording capability
    - Multi-person detection (optional)
    
==================================================================================
    DEVELOPER INFORMATION
==================================================================================
    Website: RSK World (https://rskworld.in)
    Founded by: Molla Samser
    Designer & Tester: Rima Khatun
    Contact: help@rskworld.in | +91 93305 39277
    
    (c) 2026 RSK World. All Rights Reserved.
==================================================================================
"""

import sys
import os
from pathlib import Path
from collections import deque
import time
from datetime import datetime

try:
    import cv2
    import numpy as np
except ImportError:
    import subprocess
    subprocess.check_call([sys.executable, "-m", "pip", "install", "opencv-python", "numpy"])
    import cv2
    import numpy as np


# ==================================================================================
# Configuration
# ==================================================================================

class Config:
    """Real-time predictor configuration"""
    # Webcam
    CAMERA_ID = 0
    FRAME_WIDTH = 640
    FRAME_HEIGHT = 480
    FPS = 30
    
    # Model
    MODEL_PATH = "checkpoints/best_model.pth"
    NUM_FRAMES = 16
    FRAME_SIZE = (112, 112)
    
    # Prediction
    SMOOTHING_WINDOW = 10
    CONFIDENCE_THRESHOLD = 0.5
    
    # Display
    SHOW_FPS = True
    SHOW_CONFIDENCE = True
    SHOW_SKELETON = True
    
    # Recording
    OUTPUT_DIR = "recordings"
    
    # RSK World branding
    LOGO_COLOR = (255, 212, 0)  # Cyan (BGR)
    TEXT_COLOR = (255, 255, 255)


# ==================================================================================
# Action Classes (without model)
# ==================================================================================

ACTION_CLASSES = [
    "walking", "running", "jumping", "waving", "sitting",
    "standing", "dancing", "exercising", "punching", "kicking",
    "yoga", "stretching", "boxing"
]


# ==================================================================================
# Simple Motion-Based Predictor
# ==================================================================================

class MotionBasedPredictor:
    """
    Simple motion-based action predictor using optical flow
    Works without a trained model
    
    RSK World (https://rskworld.in)
    """
    
    def __init__(self, config):
        self.config = config
        self.prev_frame = None
        self.motion_history = deque(maxlen=30)
        self.position_history = deque(maxlen=30)
        
    def predict(self, frame):
        """Predict action based on motion analysis"""
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        gray = cv2.GaussianBlur(gray, (21, 21), 0)
        
        if self.prev_frame is None:
            self.prev_frame = gray
            return "standing", 0.5
        
        # Calculate frame difference
        frame_diff = cv2.absdiff(self.prev_frame, gray)
        thresh = cv2.threshold(frame_diff, 25, 255, cv2.THRESH_BINARY)[1]
        thresh = cv2.dilate(thresh, None, iterations=2)
        
        # Find contours (motion areas)
        contours, _ = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
        
        # Calculate motion metrics
        total_motion = sum(cv2.contourArea(c) for c in contours)
        motion_ratio = total_motion / (frame.shape[0] * frame.shape[1])
        
        self.motion_history.append(motion_ratio)
        
        # Calculate motion statistics
        avg_motion = np.mean(self.motion_history)
        motion_variance = np.var(self.motion_history)
        
        # Determine action based on motion patterns
        action, confidence = self._classify_motion(avg_motion, motion_variance)
        
        self.prev_frame = gray
        return action, confidence
    
    def _classify_motion(self, avg_motion, variance):
        """Classify action based on motion metrics"""
        if avg_motion < 0.001:
            return "standing", 0.9
        elif avg_motion < 0.005:
            return "sitting", 0.7
        elif avg_motion < 0.02:
            return "walking", 0.8
        elif avg_motion < 0.05:
            if variance > 0.0001:
                return "waving", 0.7
            else:
                return "walking", 0.75
        elif avg_motion < 0.1:
            if variance > 0.001:
                return "dancing", 0.7
            else:
                return "running", 0.8
        else:
            if variance > 0.005:
                return "jumping", 0.75
            else:
                return "exercising", 0.7


# ==================================================================================
# Real-Time Predictor
# ==================================================================================

class RealtimePredictor:
    """
    Real-time action recognition from webcam
    
    RSK World (https://rskworld.in)
    Founder: Molla Samser
    """
    
    def __init__(self, config=None):
        self.config = config or Config()
        self.predictor = MotionBasedPredictor(self.config)
        self.fps_history = deque(maxlen=30)
        self.prediction_history = deque(maxlen=self.config.SMOOTHING_WINDOW)
        self.is_recording = False
        self.video_writer = None
        
        # Create output directory
        Path(self.config.OUTPUT_DIR).mkdir(exist_ok=True)
        
    def _add_overlay(self, frame, action, confidence, fps):
        """Add RSK World branding and information overlay"""
        h, w = frame.shape[:2]
        
        # Create semi-transparent overlay
        overlay = frame.copy()
        
        # Top bar
        cv2.rectangle(overlay, (0, 0), (w, 70), (20, 20, 30), -1)
        
        # Bottom bar
        cv2.rectangle(overlay, (0, h - 80), (w, h), (20, 20, 30), -1)
        
        # Blend overlay
        cv2.addWeighted(overlay, 0.7, frame, 0.3, 0, frame)
        
        # Font
        font = cv2.FONT_HERSHEY_SIMPLEX
        
        # RSK World logo (top left)
        cv2.putText(frame, "RSK", (15, 35), font, 0.9, self.config.TEXT_COLOR, 2, cv2.LINE_AA)
        cv2.putText(frame, "World", (75, 35), font, 0.9, self.config.LOGO_COLOR, 2, cv2.LINE_AA)
        cv2.putText(frame, ".in", (165, 35), font, 0.6, (150, 150, 150), 1, cv2.LINE_AA)
        
        # Title (top center)
        title = "Action Recognition"
        title_size = cv2.getTextSize(title, font, 0.7, 2)[0]
        cv2.putText(frame, title, ((w - title_size[0]) // 2, 45), font, 0.7, 
                   self.config.TEXT_COLOR, 2, cv2.LINE_AA)
        
        # FPS (top right)
        if self.config.SHOW_FPS:
            fps_text = f"FPS: {fps:.1f}"
            cv2.putText(frame, fps_text, (w - 120, 35), font, 0.6, 
                       (100, 255, 100), 2, cv2.LINE_AA)
        
        # Recording indicator
        if self.is_recording:
            cv2.circle(frame, (w - 30, 25), 10, (0, 0, 255), -1)
            cv2.putText(frame, "REC", (w - 80, 32), font, 0.5, (0, 0, 255), 2, cv2.LINE_AA)
        
        # Action label (bottom center)
        action_text = action.upper()
        action_size = cv2.getTextSize(action_text, font, 1.2, 3)[0]
        cv2.putText(frame, action_text, ((w - action_size[0]) // 2, h - 45), 
                   font, 1.2, self.config.LOGO_COLOR, 3, cv2.LINE_AA)
        
        # Confidence bar (bottom)
        if self.config.SHOW_CONFIDENCE:
            bar_width = int(300 * confidence)
            bar_x = (w - 300) // 2
            
            # Background bar
            cv2.rectangle(frame, (bar_x, h - 25), (bar_x + 300, h - 15), (50, 50, 50), -1)
            
            # Confidence bar
            color = (0, 255, 0) if confidence > 0.7 else ((0, 255, 255) if confidence > 0.5 else (0, 0, 255))
            cv2.rectangle(frame, (bar_x, h - 25), (bar_x + bar_width, h - 15), color, -1)
            
            # Confidence text
            conf_text = f"{confidence * 100:.1f}%"
            cv2.putText(frame, conf_text, (bar_x + 310, h - 12), font, 0.5, 
                       self.config.TEXT_COLOR, 1, cv2.LINE_AA)
        
        # Instructions (bottom left)
        instructions = "Q: Quit | R: Record | S: Screenshot"
        cv2.putText(frame, instructions, (10, h - 12), font, 0.4, 
                   (150, 150, 150), 1, cv2.LINE_AA)
        
        return frame
    
    def _smooth_prediction(self, action, confidence):
        """Smooth predictions over time"""
        self.prediction_history.append((action, confidence))
        
        # Count action occurrences
        action_counts = {}
        confidence_sums = {}
        
        for a, c in self.prediction_history:
            action_counts[a] = action_counts.get(a, 0) + 1
            confidence_sums[a] = confidence_sums.get(a, 0) + c
        
        # Get most common action
        best_action = max(action_counts, key=action_counts.get)
        avg_confidence = confidence_sums[best_action] / action_counts[best_action]
        
        return best_action, avg_confidence
    
    def _toggle_recording(self, frame):
        """Toggle video recording"""
        if self.is_recording:
            self.is_recording = False
            if self.video_writer:
                self.video_writer.release()
                self.video_writer = None
                print("[RSK World] Recording stopped")
        else:
            timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
            output_path = Path(self.config.OUTPUT_DIR) / f"recording_{timestamp}.mp4"
            
            fourcc = cv2.VideoWriter_fourcc(*'mp4v')
            self.video_writer = cv2.VideoWriter(
                str(output_path), fourcc, self.config.FPS,
                (self.config.FRAME_WIDTH, self.config.FRAME_HEIGHT)
            )
            self.is_recording = True
            print(f"[RSK World] Recording started: {output_path}")
    
    def _save_screenshot(self, frame):
        """Save current frame as screenshot"""
        timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
        output_path = Path(self.config.OUTPUT_DIR) / f"screenshot_{timestamp}.png"
        cv2.imwrite(str(output_path), frame)
        print(f"[RSK World] Screenshot saved: {output_path}")
    
    def run(self):
        """Run real-time prediction"""
        print("=" * 60)
        print("Action Recognition - Real-Time Predictor")
        print("=" * 60)
        print("Website: https://rskworld.in")
        print("Founder: Molla Samser")
        print("Designer: Rima Khatun")
        print("Contact: help@rskworld.in | +91 93305 39277")
        print("=" * 60)
        print()
        print("Controls:")
        print("  Q - Quit")
        print("  R - Start/Stop Recording")
        print("  S - Save Screenshot")
        print()
        print("Starting webcam...")
        
        # Open webcam
        cap = cv2.VideoCapture(self.config.CAMERA_ID)
        cap.set(cv2.CAP_PROP_FRAME_WIDTH, self.config.FRAME_WIDTH)
        cap.set(cv2.CAP_PROP_FRAME_HEIGHT, self.config.FRAME_HEIGHT)
        cap.set(cv2.CAP_PROP_FPS, self.config.FPS)
        
        if not cap.isOpened():
            print("[ERROR] Cannot open webcam!")
            print("Make sure your webcam is connected and not in use by another application.")
            return
        
        print("[RSK World] Webcam opened successfully!")
        print("Press 'Q' to quit\n")
        
        prev_time = time.time()
        
        try:
            while True:
                ret, frame = cap.read()
                if not ret:
                    print("[ERROR] Cannot read frame from webcam")
                    break
                
                # Calculate FPS
                current_time = time.time()
                fps = 1.0 / (current_time - prev_time)
                prev_time = current_time
                self.fps_history.append(fps)
                avg_fps = np.mean(self.fps_history)
                
                # Predict action
                action, confidence = self.predictor.predict(frame)
                
                # Smooth prediction
                action, confidence = self._smooth_prediction(action, confidence)
                
                # Add overlay
                frame = self._add_overlay(frame, action, confidence, avg_fps)
                
                # Record if enabled
                if self.is_recording and self.video_writer:
                    self.video_writer.write(frame)
                
                # Display frame
                cv2.imshow("RSK World - Action Recognition", frame)
                
                # Handle key presses
                key = cv2.waitKey(1) & 0xFF
                
                if key == ord('q') or key == ord('Q'):
                    print("\n[RSK World] Exiting...")
                    break
                elif key == ord('r') or key == ord('R'):
                    self._toggle_recording(frame)
                elif key == ord('s') or key == ord('S'):
                    self._save_screenshot(frame)
        
        finally:
            # Cleanup
            cap.release()
            if self.video_writer:
                self.video_writer.release()
            cv2.destroyAllWindows()
        
        print()
        print("=" * 60)
        print("Thank you for using RSK World!")
        print("Visit: https://rskworld.in")
        print("=" * 60)


# ==================================================================================
# Main
# ==================================================================================

def main():
    """Main function"""
    predictor = RealtimePredictor()
    predictor.run()


if __name__ == "__main__":
    main()

405 lines•14.3 KB
python

About RSK World

Founded by Molla Samser, with Designer & Tester Rima Khatun, RSK World is your one-stop destination for free programming resources, source code, and development tools.

Founder: Molla Samser
Designer & Tester: Rima Khatun

Development

  • Game Development
  • Web Development
  • Mobile Development
  • AI Development
  • Development Tools

Legal

  • Terms & Conditions
  • Privacy Policy
  • Disclaimer

Contact Info

Nutanhat, Mongolkote
Purba Burdwan, West Bengal
India, 713147

+91 93305 39277

hello@rskworld.in
support@rskworld.in

© 2026 RSK World. All rights reserved.

Content used for educational purposes only. View Disclaimer