You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
330 lines
9.0 KiB
330 lines
9.0 KiB
application:
|
|
name: pedestrian-signage-system
|
|
version: "0.12.0"
|
|
window_name: "Pedestrian Detection"
|
|
exit_key: "q"
|
|
screenshot_key: "s"
|
|
pause_key: "p"
|
|
experiment:
|
|
experiment_id: phase1_default
|
|
location: unknown
|
|
operator: unknown
|
|
notes: ""
|
|
input:
|
|
type: camera
|
|
camera_id: 0
|
|
video_path: null
|
|
width: 1280
|
|
height: 720
|
|
fps: 30
|
|
backend: auto
|
|
horizontal_flip: false
|
|
max_consecutive_read_failures: 5
|
|
detector:
|
|
model_path: yolo11n.pt
|
|
device: auto
|
|
confidence_threshold: 0.40
|
|
iou_threshold: 0.50
|
|
image_size: 640
|
|
person_class_id: 0
|
|
max_detections: 30
|
|
half_precision: false
|
|
use_agnostic_nms: false
|
|
tracker:
|
|
enabled: true
|
|
type: bytetrack
|
|
track_high_thresh: 0.50
|
|
track_low_thresh: 0.10
|
|
new_track_thresh: 0.60
|
|
match_thresh: 0.80
|
|
track_buffer_frames: 30
|
|
min_confirmed_frames: 3
|
|
max_missed_frames: 30
|
|
fuse_score: true
|
|
track_management:
|
|
trajectory_max_points: 120
|
|
direction_window_points: 5
|
|
minimum_direction_displacement_pixels: 20
|
|
region_entry_confirm_frames: 2
|
|
region_exit_confirm_frames: 3
|
|
minimum_visible_frames_for_count: 5
|
|
minimum_duration_sec_for_count: 0.3
|
|
require_region_entry_for_count: true
|
|
require_trigger_crossing_for_count: true
|
|
crossing:
|
|
enabled: true
|
|
count_once_per_track: true
|
|
deadband_pixels: 8
|
|
minimum_displacement_pixels: 15
|
|
minimum_track_points: 3
|
|
require_confirmed_track: true
|
|
tracking_logging:
|
|
enabled: true
|
|
log_frame_tracks: true
|
|
log_events: true
|
|
log_summaries: true
|
|
flush_interval_frames: 30
|
|
directory: data/logs/tracking
|
|
face:
|
|
enabled: true
|
|
backend: mediapipe
|
|
process_every_n_frames: 1
|
|
max_persons_per_frame: 3
|
|
require_confirmed_track: true
|
|
process_only_inside_region: false
|
|
roi_height_ratio: 0.60
|
|
roi_expand_ratio: 0.20
|
|
min_roi_width: 40
|
|
min_roi_height: 40
|
|
static_image_mode: false
|
|
max_num_faces: 1
|
|
refine_landmarks: true
|
|
min_detection_confidence: 0.40
|
|
min_tracking_confidence: 0.40
|
|
head_pose:
|
|
enabled: true
|
|
method: solvepnp
|
|
smoothing_enabled: true
|
|
smoothing_method: ema
|
|
ema_alpha: 0.4
|
|
max_abs_angle: 120.0
|
|
face_logging:
|
|
enabled: true
|
|
log_frame_faces: true
|
|
log_summaries: true
|
|
flush_interval_frames: 30
|
|
directory: data/logs/face
|
|
turn_detection:
|
|
enabled: true
|
|
signage_yaw_direction: positive
|
|
baseline_strategy: first_valid
|
|
baseline_window_sec: 0.8
|
|
baseline_min_samples: 3
|
|
subtle_threshold_deg: 10.0
|
|
weak_threshold_deg: 20.0
|
|
medium_threshold_deg: 35.0
|
|
strong_threshold_deg: 50.0
|
|
min_subtle_duration_sec: 0.20
|
|
min_turn_duration_sec: 0.30
|
|
max_pose_gap_sec: 0.30
|
|
min_pose_samples_for_evaluation: 5
|
|
min_face_detection_rate_for_evaluation: 0.20
|
|
min_pose_estimation_rate_for_evaluation: 0.20
|
|
face_appearance_enabled: true
|
|
face_missing_before_appearance_sec: 0.30
|
|
weak_or_higher_is_turn: true
|
|
turn_logging:
|
|
enabled: true
|
|
log_frame_turns: true
|
|
log_events: true
|
|
log_summaries: true
|
|
flush_interval_frames: 30
|
|
directory: data/logs/turn
|
|
audio:
|
|
enabled: true
|
|
backend: pygame
|
|
file_path: assets/audio/prompt.wav
|
|
volume: 0.8
|
|
overlap_policy: skip
|
|
voice_prompt:
|
|
enabled: true
|
|
mode: prompt
|
|
trigger_strategy: trigger_line_crossing
|
|
require_confirmed_track: true
|
|
require_inside_region: true
|
|
skip_if_already_turned: true
|
|
one_prompt_per_track: true
|
|
global_cooldown_sec: 3.0
|
|
minimum_track_age_sec: 0.3
|
|
response_window_sec: 3.0
|
|
fixed_position_axis: x
|
|
fixed_position_value: 640
|
|
fixed_position_direction: decreasing
|
|
voice_logging:
|
|
enabled: true
|
|
log_decisions: true
|
|
log_events: true
|
|
log_summaries: true
|
|
flush_interval_frames: 30
|
|
directory: data/logs/voice
|
|
person_state:
|
|
enabled: true
|
|
min_track_duration_sec: 0.5
|
|
require_trigger_crossing_for_completion: false
|
|
require_voice_eligibility_for_voice_analysis: true
|
|
mark_not_evaluable_as_excluded: false
|
|
finalize_on_track_lost: true
|
|
keep_completed_state_after_response: true
|
|
person_state_logging:
|
|
enabled: true
|
|
log_frame_states: true
|
|
log_events: true
|
|
log_summaries: true
|
|
flush_interval_frames: 30
|
|
directory: data/logs/person_state
|
|
unified_logging:
|
|
enabled: true
|
|
directory: data/logs/unified
|
|
log_unified_events: true
|
|
log_person_analysis_table: true
|
|
log_session_summary: true
|
|
log_consistency_issues: true
|
|
flush_interval_frames: 30
|
|
include_tracking_events: true
|
|
include_turn_events: true
|
|
include_voice_events: true
|
|
include_person_state_events: true
|
|
include_face_events: false
|
|
important_events_only: false
|
|
camera_position_note: ""
|
|
run_consistency_checks: true
|
|
analysis:
|
|
enabled: true
|
|
input_directory: data/logs/unified
|
|
output_directory: data/analysis
|
|
recursive: true
|
|
include_prompt_condition: true
|
|
include_control_condition: true
|
|
valid_voice_analysis_only: true
|
|
response_level_threshold: weak
|
|
response_rate_test: auto
|
|
numeric_test: mannwhitney
|
|
yaw_metric_denominator: valid_turn_analysis
|
|
generate_plots: true
|
|
overwrite_outputs: true
|
|
alpha: 0.05
|
|
gui:
|
|
enabled: false
|
|
default_config_path: config/experiment.yaml
|
|
default_analysis_input: data/logs/unified
|
|
default_analysis_output: data/analysis
|
|
preview_max_fps: 15
|
|
remember_last_paths: false
|
|
show_opencv_window_when_gui: false
|
|
auto_run_analysis_after_experiment: false
|
|
experiment_protocol:
|
|
default_output_markdown: docs/experiment_protocol.md
|
|
default_output_yaml: data/experiment_notes/experiment_protocol.yaml
|
|
voice_prompt_text: "こんにちは。こちらをご覧ください。"
|
|
privacy_note: "顔認証・個人識別は行わず、track_idは実行中だけの一時IDとして扱う。"
|
|
planned_session_duration_min: 10
|
|
quality_check:
|
|
enabled: true
|
|
min_valid_voice_analysis_rate: 0.5
|
|
max_not_evaluable_rate: 0.4
|
|
max_no_pose_rate: 0.4
|
|
require_prompt_and_control: true
|
|
require_camera_position_note: true
|
|
require_plots: false
|
|
pilot_report:
|
|
enabled: true
|
|
output_markdown: data/analysis/pilot_report.md
|
|
presentation_summary:
|
|
enabled: true
|
|
output_markdown: data/analysis/midterm_summary.md
|
|
pilot_diagnostics:
|
|
enabled: true
|
|
target_valid_records_per_condition: 20
|
|
min_valid_records_per_condition: 5
|
|
min_valid_voice_analysis_rate: 0.5
|
|
max_not_evaluable_rate: 0.4
|
|
max_no_pose_estimated_rate: 0.4
|
|
max_condition_valid_count_ratio: 2.0
|
|
min_sessions_per_condition: 1
|
|
require_camera_position_note: true
|
|
ready_requires_prompt_and_control: true
|
|
output_report: data/analysis/pilot_diagnostic_report.md
|
|
output_metrics_csv: data/analysis/pilot_diagnostic_metrics.csv
|
|
output_recommendations_csv: data/analysis/improvement_recommendations.csv
|
|
output_session_quality_csv: data/analysis/session_quality_summary.csv
|
|
calibration_history:
|
|
enabled: true
|
|
path: data/calibration_history/calibration_history.csv
|
|
main_experiment:
|
|
enabled: true
|
|
target_prompt_valid_records: 30
|
|
target_control_valid_records: 30
|
|
minimum_prompt_valid_records: 20
|
|
minimum_control_valid_records: 20
|
|
planned_prompt_sessions: 3
|
|
planned_control_sessions: 3
|
|
condition_order_rule: "PromptとControlを同じ場所・時間帯で交互に実施する。"
|
|
camera_position_policy: "位置・高さ・角度を固定し、各セッションでcamera_position_noteを記録する。"
|
|
final_output_directory: data/final_results
|
|
experiment_snapshot:
|
|
enabled: true
|
|
output_directory: data/experiment_snapshots
|
|
include_git_commit: true
|
|
include_merged_config: true
|
|
final_report:
|
|
enabled: true
|
|
output_markdown: data/final_results/final_experiment_report.md
|
|
output_summary_csv: data/final_results/final_experiment_report_summary.csv
|
|
include_limitations: true
|
|
include_quality_notes: true
|
|
avoid_causal_claims: true
|
|
presentation_assets:
|
|
enabled: true
|
|
output_markdown: data/final_results/presentation_assets.md
|
|
output_tables_csv: data/final_results/presentation_tables.csv
|
|
include_slide_outline: true
|
|
display:
|
|
enabled: true
|
|
show_bounding_boxes: true
|
|
show_confidence: true
|
|
show_detection_count: true
|
|
show_fps: true
|
|
show_timestamp: true
|
|
show_frame_number: true
|
|
show_evaluation_region: true
|
|
show_trigger_line: true
|
|
show_track_ids: true
|
|
show_trajectories: true
|
|
show_movement_direction: true
|
|
show_tracking_counters: true
|
|
trajectory_max_points: 30
|
|
show_face_roi: true
|
|
show_head_pose: true
|
|
show_face_landmarks: false
|
|
show_face_counters: true
|
|
show_turn_status: true
|
|
show_yaw_delta: true
|
|
show_turn_counters: true
|
|
show_voice_status: true
|
|
show_voice_counters: true
|
|
show_person_state: true
|
|
show_person_state_counters: true
|
|
resize_scale: 1.0
|
|
evaluation_region:
|
|
enabled: true
|
|
coordinate_mode: normalized
|
|
x1: 0.05
|
|
y1: 0.05
|
|
x2: 0.95
|
|
y2: 0.95
|
|
trigger_line:
|
|
enabled: true
|
|
orientation: vertical
|
|
coordinate_mode: normalized
|
|
position: 0.50
|
|
logging:
|
|
runtime_log_enabled: true
|
|
detection_log_enabled: true
|
|
log_every_frame: true
|
|
log_empty_frames: true
|
|
flush_interval_frames: 30
|
|
runtime_log_directory: data/logs/runtime
|
|
detection_log_directory: data/logs/detections
|
|
output:
|
|
save_video: false
|
|
video_directory: data/output/videos
|
|
video_codec: mp4v
|
|
screenshot_directory: data/output/screenshots
|
|
performance:
|
|
skip_frames: 0
|
|
fps_average_window: 30
|
|
warn_fps_threshold: 10.0
|
|
debug:
|
|
enabled: false
|
|
show_raw_model_output: false
|
|
print_detections: false
|
|
|