# AI Produktionsmodell — Träningskonfiguration # Zoomer-submissions granskning project: name: "quixzoom-ai-production" version: "1.0.0" description: "AI-granskning av Zoomer-submissions för IOM" dataset: # Klasser för objektdetektering classes: - street_light - traffic_sign - bench - trash_can - sidewalk - road - building - bridge - tree - graffiti - pothole - crack - corrosion - broken_glass - missing_parts - water_damage - vegetation_overgrowth - illegal_dumping - broken_pavement - faded_markings num_classes: 20 # Dataset-splits splits: train: 0.70 val: 0.15 test: 0.15 # Minsta dataset-storlek per klass min_samples_per_class: 100 # Bildstorlek image_size: 640 # Augmentation augmentation: enabled: true target_multiplier: 10 geometric: rotation: [-15, 15] scale: [0.8, 1.2] shear: [-5, 5] flip_h: 0.5 flip_v: 0.0 photometric: brightness: [0.7, 1.3] contrast: [0.7, 1.3] saturation: [0.5, 1.5] hue: [-10, 10] noise: gaussian_prob: 0.3 gaussian_std: [5, 15] jpeg_prob: 0.3 jpeg_quality: [60, 95] blur_prob: 0.2 blur_radius: [0.5, 2.0] weather: rain_prob: 0.1 fog_prob: 0.1 shadow_prob: 0.15 overexposure_prob: 0.1 underexposure_prob: 0.1 models: # YOLOv8 för objektdetektering yolo: model_type: "yolov8n" # nano, small, medium, large, xlarge pretrained: true training: epochs: 100 batch_size: 16 learning_rate: 0.001 weight_decay: 0.0005 momentum: 0.937 # Early stopping patience: 20 min_delta: 0.001 # Data loading num_workers: 8 pin_memory: true # Augmentation (Ultralytics inbyggd) hsv_h: 0.015 hsv_s: 0.7 hsv_v: 0.4 degrees: 15 translate: 0.1 scale: 0.5 shear: 5 perspective: 0.0 flipud: 0.0 fliplr: 0.5 mosaic: 1.0 mixup: 0.1 copy_paste: 0.1 inference: conf_threshold: 0.25 iou_threshold: 0.45 max_det: 300 # CLIP för scenklassificering clip: model_name: "openai/clip-vit-base-patch32" fine_tuning: epochs: 20 batch_size: 32 learning_rate: 0.00005 warmup_steps: 500 scene_labels: - "street view" - "building facade" - "bridge" - "road" - "sidewalk" - "park" - "industrial area" - "residential area" - "commercial area" - "construction site" # Defekt-klassificerare defect_classifier: architecture: "resnet50" num_classes: 20 training: epochs: 50 batch_size: 64 learning_rate: 0.001 defect_codes: "1100": "surface_rust" "2100": "dirt_accumulation" "2300": "surface_damage" "2400": "graffiti" "4100": "missing_parts" "4200": "broken_parts" "5100": "physical_blockage" "6200": "water_damage" metrics: # Objektdetektering detection: - mAP50 - mAP50-95 - precision - recall - f1_score # Per-klass metrics per_class: - precision - recall - f1_score - ap50 - support # Scenklassificering classification: - accuracy - top5_accuracy - precision_macro - recall_macro - f1_macro # Defektdetektering defect: - accuracy - precision - recall - f1_score - confusion_matrix # Träningsmål targets: mAP50: 0.85 mAP50_95: 0.70 precision: 0.88 recall: 0.85 f1_score: 0.86 # Per-klass minimum per_class_min_ap50: 0.70 per_class_min_recall: 0.75 # Export export: formats: - pytorch - onnx - torchscript - openvino - tensorrt optimization: quantization: true pruning: false distillation: false # Produktion deployment: # API api: host: "0.0.0.0" port: 8000 workers: 4 # Batch processing batch: max_batch_size: 32 timeout_ms: 5000 # Modell-uppdatering model_update: auto_retrain: false retrain_threshold: 0.05 # mAP drop retrain_schedule: "weekly"