UNIVRFall: IMU-based pre-impact, impact, and post-impact fall detection dataset
收藏资源简介:
Overview This dataset provides comprehensive IMU-based recordings for pre-impact, impact, and post-impact fall detection in both daily life and occupational settings. It addresses critical gaps in existing fall detection resources by including working-age adults and elevation-related fall scenarios common in construction environments such as warehouses and construction sites. The dataset is specifically designed for AutoML research, providing an ideal benchmark for neural architecture search, hyperparameter tuning, and hardware-aware model compression for edge-AI deployment on resource-constrained wearable devices. Dataset Characteristics Characteristic Value Total Participants 39 (29 lab + 10 construction site) Laboratory Participants 29 (24 male, 5 female) Age Range 20-49 years (mean: 23.6 ± 6.2) Activities of Daily Living (ADLs) 24 Fall Types 21 (including 6 elevation-specific) Total Recording Duration ~46.05 hours Controlled Lab Sessions 3.41 hours Real Construction Site Data 42.64 hours Total Fall Events 573 Fall Duration 150-1200 ms (mean: 476.70 ± 183.91 ms) Class Imbalance 2.22% falls (lab only), 0.16% (entire dataset) Technical Specifications Sensor System Component Specification Microcontroller STM32F722RET6 (ARM Cortex-M7, 216 MHz) Accelerometer LIS3DH tri-axis MEMS, ±16g, 1mg resolution Gyroscope LSM6DS3 tri-axis, ±2000 dps, 0.07 dps resolution Sampling Frequency 100 Hz (both sensors) Sensor Placement Lower back (vertebrae L1-L2) Video Synchronization 100 fps with LED markers Data Format CSV (sensor data), Excel (annotations) Coordinate System X-axis: Points downward Y-axis: Points to the right Z-axis: Perpendicular to sensor board Data Distribution Category Duration Percentage Controlled Environment - Activities (23 tasks) 2.35 hours 5.16% Controlled Environment - Falls (21 types) 1.06 hours 2.33% Construction Site - Workplace Activities (Task 88) 42.64 hours 93.57% Actual Falling Time 4.55 minutes 0.16% (total), 2.22% (lab only) TOTAL 46.05 hours 100% Activities Taxonomy Daily Living Activities (ADLs) - 24 Tasks ID Activity Description Type 01 Stand for 30 seconds Static 02 Stand, slowly bend, tie shoe lace, get up Dynamic 03 Pick up an object from the floor Dynamic 04 Gently jump (try to reach an object) Dynamic 05 Stand, sit to ground, wait, get up with normal speed Transition 06 Walk normally with turn Locomotion 07 Walk quickly with turn Locomotion 08 Jog normally with turn Locomotion 09 Jog quickly with turn Locomotion 10 Stumble with obstacle while walking Near-fall 11 Sit on a chair for 30 seconds Static 12 Walk downstairs normally Locomotion 13 Sit down to chair normally, get up normally Transition 14 Sit down to chair quickly, get up quickly Transition 15 Sit, trying to get up, collapse into chair Near-fall 16 Walk downstairs quickly Locomotion 17 Lie on the floor for 30 seconds Static 18 Sit, lie down normally, get up normally Transition 19 Sit, lie down quickly, get up quickly Transition 35 Walk upstairs normally Locomotion 36 Walk upstairs quickly Locomotion 43 Climb up and climb down the stairs Work-specific 44 Walk slowly and jump over the obstacle Work-specific 88 On-field construction site activities Work-specific Fall Types - 21 Categories ID Fall Description Category 20 Forward fall when trying to sit down Sitting transitions 21 Backward fall when trying to sit down Sitting transitions 22 Lateral fall when trying to sit down Sitting transitions 23 Forward fall when trying to get up Sitting transitions 24 Lateral fall when trying to get up Sitting transitions 25 Forward fall while sitting, caused by fainting Fainting 26 Lateral fall while sitting, caused by fainting Fainting 27 Backward fall while sitting, caused by fainting Fainting 28 Vertical (forward) fall while walking caused by fainting Fainting 29 Fall while walking, using hands to dampen fall Fainting 30 Forward fall while walking caused by a trip Moving falls 31 Forward fall while jogging caused by a trip Moving falls 32 Forward fall while walking caused by a slip Moving falls 33 Lateral fall while walking caused by a slip Moving falls 34 Backward fall while walking caused by a slip Moving falls 37 Backward fall while slowly moving back Elevation 38 Backward fall while quickly moving back Elevation 39 Forward fall from height Elevation 40 Backward fall from height Elevation 41 Backward fall while climbing up the ladder Elevation 42 Backward fall while climbing down the ladder Elevation Note: Tasks 37-42 (highlighted) represent elevation-related falls unique to this dataset, addressing critical workplace safety scenarios absent from existing benchmarks. File Structure UniVrFall_Dataset/ ├── laboratory/ │ ├── sensors_data/ │ │ ├── SA09/ │ │ │ └── S09T[XX]R[ZZ].csv # Subject 09, Task XX, Repetition ZZ │ │ ├── SA10/ │ │ │ └── S10T[XX]R[ZZ].csv │ │ ├── SA11/ │ │ │ └── S11T[XX]R[ZZ].csv │ │ ├── ... │ │ └── SA37/ │ │ └── S37T[XX]R[ZZ].csv │ └── labels_data/ │ ├── SA09_label.xlsx # Subject 09 annotations │ ├── SA10_label.xlsx │ ├── SA11_label.xlsx │ ├── ... │ └── SA37_label.xlsx └── OnField/ ├── 20241106/ # Session: 2024-11-06 │ └── 20241106_[ID].csv # Session date, Worker ID ├── 20241223/ # Session: 2024-12-23 │ └── 20241223_[ID].csv ├── 20250108/ │ └── 20250108_[ID].csv ├── ... └── 20250218/ # last session date └── 20250218_[ID].csv Data Format Specifications CSV Files (Raw Sensor Data) - 11 Columns Column Variable Unit Description 1 TimeStamp(s) seconds Sample timestamp 2 FrameCounter integer Sequential frame number 3 AccX m/s² Lateral axis acceleration 4 AccY m/s² Anterior-posterior acceleration 5 AccZ m/s² Vertical axis acceleration 6 GyrX rad/s Roll angular velocity 7 GyrY rad/s Pitch angular velocity 8 GyrZ rad/s Yaw angular velocity 9 EulerX degrees Roll orientation angle 10 EulerY degrees Pitch orientation angle 11 EulerZ degrees Yaw orientation angle Annotation Files (Excel) - 5 Columns Column Variable Type Description 1 Task Code (Task ID) String Fall type code and numeric ID (e.g., F01 (20)) 2 Description String Detailed fall event description 3 Trial ID Integer Trial repetition number 4 Fall onset frame Integer Frame number at fall initiation 5 Fall impact frame Integer Frame number at ground contact Preprocessing Scripts Data Windowing The dataset requires preprocessing to segment continuous sensor recordings into fixed-size windows for model training. The windowing process applies a low-pass filter and creates overlapping segments. Key Preprocessing Steps: Windowing: Segments continuous sensor data into fixed-size windows (e.g., 300ms) Overlap: Creates overlapping windows to increase training samples (e.g., 50% overlap) Low-pass Filtering: Applies Butterworth filter (cutoff: 5Hz) to reduce noise Label Assignment: Assigns labels based on annotation files (binary or multiclass) Windowing Function: def windowing(x, y, window_size, sampling_rate, overlap_percentage, apply_filter): # Calculate samples per window samples_per_window = int((window_size / 1000) * sampling_rate) # Calculate step size based on overlap step_size = int(samples_per_window * (1 - (overlap_percentage / 100))) segmented_x = [] segmented_y = [] # Create windows with overlap for start in range(0, len(x) - samples_per_window + 1, step_size): end = start + samples_per_window window = x[start:end] if apply_filter: window = low_pass_filter(window, cutoff=5, fs=sampling_rate) segmented_x.append(window) segmented_y.append(y[start]) return np.array(segmented_x), np.array(segmented_y) Low-Pass Filter: from scipy.signal import butter, filtfilt def low_pass_filter(data, cutoff, fs): nyquist = 0.5 * fs normal_cutoff = cutoff / nyquist b, a = butter(1, normal_cutoff, btype='low', analog=False) filtered_data = np.zeros_like(data) for i in range(data.shape[1]): filtered_data[:, i] = filtfilt(b, a, data[:, i]) return filtered_data Processing Laboratory Data: # Read sensor data df = pd.read_csv(file_path, index_col=1) # Extract sensor columns x = df[["AccX", "AccY", "AccZ", "GyrX", "GyrY", "GyrZ", "EulerX", "EulerY", "EulerZ"]].values # Read annotations from Excel annotations = pd.read_excel(label_file, sheet_name="Sheet1").ffill() # Assign labels based on fall frames df.loc[:start_fall_frame, "label"] = "Activity" df.loc[start_fall_frame:end_fall_frame, "label"] = "Falling" df.loc[end_fall_frame:, "label"] = "Activity" y = df["label"].values # Apply windowing x_windows, y_windows = windowing(x, y, window_size=300, sampling_rate=100, overlap_percentage=50, apply_filter=True) Processing On-Field Data: # Read and convert on-field data df = pd.read_csv(file_path, index_col=0) df = df[df["type"] == 1] # Filter sensor type # Extract sensor columns (different naming convention) x = df[["accX", "accY", "accZ", "gyrX", "gyrY", "gyrZ", "roll", "pitch", "yaw"]].values # All on-field data labeled as "Activity" y = ["Activity"] * len(x) # Apply windowing x_windows, y_windows = windowing(x, y, window_size=300, sampling_rate=100, overlap_percentage=50, apply_filter=True) Output Format: Processed segments are saved as NumPy arrays: segments/ └── 300ms_50ov_npseg_filt_binary/ └── {subject_id}/ └── {task_id}/ └── {trial}/ ├── segments.npy # Shape: (n_windows, samples_per_window, 9) └── labels.npy # Shape: (n_windows,) Usage Examples Data Preprocessing Process the raw sensor data into windowed segments for model training: Process Laboratory Data: python -m preprocessing.windowing \ -d /path/to/UniVrFall_Dataset/laboratory \ -w 300 \ -o 50 \ -b 1 \ -s 100 Process On-Field Recordings: python -m preprocessing.windowing \ -d /path/to/UniVrFall_Dataset/OnField \ -w 300 \ -o 50 \ -b 1 \ -s 100 \ -f 1 Parameter Explanation: Parameter Description Value -d Dataset directory path Path to raw sensor data folder -w Window size (milliseconds) 300 ms (30 samples at 100 Hz) -o Overlap percentage 50% (150 ms stride) -b Binary classification mode 1 (Activity vs. Falling) -s Sampling frequency (Hz) 100 Hz -f On-field data flag 1 (use for construction site data) Key Features & Applications Research Applications Pre-impact fall detection for wearable airbag systems AutoML benchmarking for neural architecture search Edge-AI deployment on resource-constrained microcontrollers Imbalanced learning with extreme class imbalance (97.78% non-fall) Cross-dataset generalization (compatible with KFall) Construction site safety monitoring systems AutoML Use Cases Neural architecture search (NAS) under hardware constraints Hyperparameter optimization for time-series classification Model compression and quantization for edge deployment Data augmentation strategy selection Feature engineering automation Unique Characteristics Elevation falls from ladders and scaffolds (absent in existing datasets) Real worksite data from construction environments Short fall durations (mean: 476 ms) requiring fast detection Frame-level annotations for precise temporal alignment Video-synchronized ground truth labels Subject-independent 5-fold cross-validation protocol Citation If you use this dataset in your research, please cite: @inproceedings{turetta2025lightweight, title={A Lightweight CNN for Real-Time Pre-Impact Fall Detection}, author={Turetta, Cristian and Ali, Muhammad Toqeer and Demrozi, Florenc and Pravadelli, Graziano}, booktitle={2025 Design, Automation \& Test in Europe Conference (DATE)}, year={2025}, organization={IEEE} } @inproceedings{ali2026imu_fall_dataset, title = {IMU-based pre-impact, impact, and post-impact fall detection dataset}, author = {Ali, Muhammad Toqeer and Turetta, Cristian and Demrozi, Florenc and Pravadelli, Graziano}, booktitle = {Proceedings of the 22nd International Workshop on Context and Activity Modeling and Recognition with AI (CoMoRe-AI 2026), co-located with the 24th IEEE International Conference on Pervasive Computing and Communications (PerCom 2026 Workshops)}, year = {2026}, address = {Pisa, Italy}, month = mar, note = {Accepted for publication} } Acknowledgments Protechto s.r.l. for providing the smart safety jacket and sensor system All 29 laboratory participants for their time and effort 10 construction workers for contributing real worksite data University of Verona for supporting this research Funding projects: PREPARE, UNISCO, CollaborICE (MICS Extended Partnership)



