feat(boc): Complete Business Operations Center v1.0

- Go backend API with full CRUD for all modules (CRM, Sales, Finance, HR, Legal, Marketing, Support, Purchase, Inventory, Projects, Automation, Analytics)
- Rust analytics service with parallel report generation
- C runtime with POSIX shared memory IPC
- PostgreSQL schema with 30+ tables, full migrations
- Redis cache, sessions, pub/sub
- Kafka event streaming with Zookeeper
- WebSocket hub for real-time updates
- Automation engine with cron jobs, workflows, event triggers
- JWT authentication, multi-tenant from start
- Docker Compose with all services
- Nginx reverse proxy with rate limiting
- Integration tests passing
- Feature gap analysis against Fortnox/Odoo/Visma

Refs: BOC-001
This commit is contained in:
Bernt
2026-07-12 12:41:35 +00:00
parent 4789a7fb48
commit 58ca4e68db
26666 changed files with 575891 additions and 2074516 deletions
@@ -0,0 +1,27 @@
# Bridge Inspection
VIMS instance for bridge-inspection.
## Related Article
[/insights/bridge-inspection-software-comparison/](https://landvex.com/insights/bridge-inspection-software-comparison/)
## Anomaly Classes
- crack
- corrosion
- vegetation
- damage
- deformation
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/bridge-inspection/predict`
- WebSocket: `ws://host/ws/bridge-inspection/alerts`
@@ -0,0 +1,20 @@
# bridge-inspection configuration
topic: bridge-inspection
display_name: Bridge Inspection
article_url: /insights/bridge-inspection-software-comparison/
anomaly_classes:
- crack
- corrosion
- vegetation
- damage
- deformation
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Bridge Inspection
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for bridge-inspection."""
db = VIMSDatabase("bridge-inspection")
db.create_schema(anomaly_classes=['crack', 'corrosion', 'vegetation', 'damage', 'deformation'])
print(f"Database initialized for Bridge Inspection")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
bridge-inspection Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/bridge-inspection-software-comparison/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class BridgeInspectionDetector(VIMSBaseDetector):
"""
Anomaly detector for Bridge Inspection.
Article: /insights/bridge-inspection-software-comparison/
"""
TOPIC = "bridge-inspection"
CLASS_NAMES = {
0: "crack", 1: "corrosion", 2: "vegetation", 3: "damage", 4: "deformation"
}
SEVERITY_MAP = {
"crack": 3, "corrosion": 3, "vegetation": 3, "damage": 3, "deformation": 3
}
def preprocess(self, image):
"""bridge-inspection-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""bridge-inspection-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("bridge-inspection", BridgeInspectionDetector)
@@ -0,0 +1,27 @@
# Consensus Engine Validation
VIMS instance for consensus-engine.
## Related Article
[/insights/how-the-consensus-engine-works/](https://landvex.com/insights/how-the-consensus-engine-works/)
## Anomaly Classes
- low_confidence
- high_variance
- outlier_detected
- conflict_unresolved
- validation_passed
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/consensus-engine/predict`
- WebSocket: `ws://host/ws/consensus-engine/alerts`
@@ -0,0 +1,20 @@
# consensus-engine configuration
topic: consensus-engine
display_name: Consensus Engine Validation
article_url: /insights/how-the-consensus-engine-works/
anomaly_classes:
- low_confidence
- high_variance
- outlier_detected
- conflict_unresolved
- validation_passed
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Consensus Engine Validation
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for consensus-engine."""
db = VIMSDatabase("consensus-engine")
db.create_schema(anomaly_classes=['low_confidence', 'high_variance', 'outlier_detected', 'conflict_unresolved', 'validation_passed'])
print(f"Database initialized for Consensus Engine Validation")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
consensus-engine Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/how-the-consensus-engine-works/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class ConsensusEngineDetector(VIMSBaseDetector):
"""
Anomaly detector for Consensus Engine Validation.
Article: /insights/how-the-consensus-engine-works/
"""
TOPIC = "consensus-engine"
CLASS_NAMES = {
0: "low_confidence", 1: "high_variance", 2: "outlier_detected", 3: "conflict_unresolved", 4: "validation_passed"
}
SEVERITY_MAP = {
"low_confidence": 3, "high_variance": 3, "outlier_detected": 3, "conflict_unresolved": 3, "validation_passed": 3
}
def preprocess(self, image):
"""consensus-engine-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""consensus-engine-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("consensus-engine", ConsensusEngineDetector)
@@ -0,0 +1,27 @@
# Construction Site Monitoring
VIMS instance for construction-site.
## Related Article
[/insights/the-future-of-infrastructure-monitoring/](https://landvex.com/insights/the-future-of-infrastructure-monitoring/)
## Anomaly Classes
- safety_violation
- equipment_idle
- material_waste
- progress_delay
- unauthorized_access
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/construction-site/predict`
- WebSocket: `ws://host/ws/construction-site/alerts`
@@ -0,0 +1,20 @@
# construction-site configuration
topic: construction-site
display_name: Construction Site Monitoring
article_url: /insights/the-future-of-infrastructure-monitoring/
anomaly_classes:
- safety_violation
- equipment_idle
- material_waste
- progress_delay
- unauthorized_access
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Construction Site Monitoring
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for construction-site."""
db = VIMSDatabase("construction-site")
db.create_schema(anomaly_classes=['safety_violation', 'equipment_idle', 'material_waste', 'progress_delay', 'unauthorized_access'])
print(f"Database initialized for Construction Site Monitoring")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
construction-site Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/the-future-of-infrastructure-monitoring/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class ConstructionSiteDetector(VIMSBaseDetector):
"""
Anomaly detector for Construction Site Monitoring.
Article: /insights/the-future-of-infrastructure-monitoring/
"""
TOPIC = "construction-site"
CLASS_NAMES = {
0: "safety_violation", 1: "equipment_idle", 2: "material_waste", 3: "progress_delay", 4: "unauthorized_access"
}
SEVERITY_MAP = {
"safety_violation": 3, "equipment_idle": 3, "material_waste": 3, "progress_delay": 3, "unauthorized_access": 3
}
def preprocess(self, image):
"""construction-site-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""construction-site-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("construction-site", ConstructionSiteDetector)
@@ -0,0 +1,27 @@
# Continuous Infrastructure Monitoring
VIMS instance for continuous-monitoring.
## Related Article
[/insights/continuous-monitoring-vs-periodic-inspection/](https://landvex.com/insights/continuous-monitoring-vs-periodic-inspection/)
## Anomaly Classes
- structural_change
- environmental_degradation
- usage_wear
- weather_damage
- vandalism_new
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/continuous-monitoring/predict`
- WebSocket: `ws://host/ws/continuous-monitoring/alerts`
@@ -0,0 +1,20 @@
# continuous-monitoring configuration
topic: continuous-monitoring
display_name: Continuous Infrastructure Monitoring
article_url: /insights/continuous-monitoring-vs-periodic-inspection/
anomaly_classes:
- structural_change
- environmental_degradation
- usage_wear
- weather_damage
- vandalism_new
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Continuous Infrastructure Monitoring
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for continuous-monitoring."""
db = VIMSDatabase("continuous-monitoring")
db.create_schema(anomaly_classes=['structural_change', 'environmental_degradation', 'usage_wear', 'weather_damage', 'vandalism_new'])
print(f"Database initialized for Continuous Infrastructure Monitoring")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
continuous-monitoring Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/continuous-monitoring-vs-periodic-inspection/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class ContinuousMonitoringDetector(VIMSBaseDetector):
"""
Anomaly detector for Continuous Infrastructure Monitoring.
Article: /insights/continuous-monitoring-vs-periodic-inspection/
"""
TOPIC = "continuous-monitoring"
CLASS_NAMES = {
0: "structural_change", 1: "environmental_degradation", 2: "usage_wear", 3: "weather_damage", 4: "vandalism_new"
}
SEVERITY_MAP = {
"structural_change": 3, "environmental_degradation": 3, "usage_wear": 3, "weather_damage": 3, "vandalism_new": 3
}
def preprocess(self, image):
"""continuous-monitoring-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""continuous-monitoring-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("continuous-monitoring", ContinuousMonitoringDetector)
@@ -0,0 +1,27 @@
# Contradiction Gap Analysis
VIMS instance for contradiction-gap.
## Related Article
[/insights/contradiction-gap/](https://landvex.com/insights/contradiction-gap/)
## Anomaly Classes
- official_mismatch
- reported_vs_observed
- data_conflict
- unrecorded_change
- false_claim
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/contradiction-gap/predict`
- WebSocket: `ws://host/ws/contradiction-gap/alerts`
@@ -0,0 +1,20 @@
# contradiction-gap configuration
topic: contradiction-gap
display_name: Contradiction Gap Analysis
article_url: /insights/contradiction-gap/
anomaly_classes:
- official_mismatch
- reported_vs_observed
- data_conflict
- unrecorded_change
- false_claim
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Contradiction Gap Analysis
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for contradiction-gap."""
db = VIMSDatabase("contradiction-gap")
db.create_schema(anomaly_classes=['official_mismatch', 'reported_vs_observed', 'data_conflict', 'unrecorded_change', 'false_claim'])
print(f"Database initialized for Contradiction Gap Analysis")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
contradiction-gap Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/contradiction-gap/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class ContradictionGapDetector(VIMSBaseDetector):
"""
Anomaly detector for Contradiction Gap Analysis.
Article: /insights/contradiction-gap/
"""
TOPIC = "contradiction-gap"
CLASS_NAMES = {
0: "official_mismatch", 1: "reported_vs_observed", 2: "data_conflict", 3: "unrecorded_change", 4: "false_claim"
}
SEVERITY_MAP = {
"official_mismatch": 3, "reported_vs_observed": 3, "data_conflict": 3, "unrecorded_change": 3, "false_claim": 3
}
def preprocess(self, image):
"""contradiction-gap-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""contradiction-gap-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("contradiction-gap", ContradictionGapDetector)
@@ -0,0 +1,27 @@
# Cost of Stale Data Detection
VIMS instance for cost-stale-data.
## Related Article
[/insights/calculate-cost-of-stale-data/](https://landvex.com/insights/calculate-cost-of-stale-data/)
## Anomaly Classes
- outdated_signage
- closed_business
- changed_hours
- wrong_pricing
- obsolete_info
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/cost-stale-data/predict`
- WebSocket: `ws://host/ws/cost-stale-data/alerts`
@@ -0,0 +1,20 @@
# cost-stale-data configuration
topic: cost-stale-data
display_name: Cost of Stale Data Detection
article_url: /insights/calculate-cost-of-stale-data/
anomaly_classes:
- outdated_signage
- closed_business
- changed_hours
- wrong_pricing
- obsolete_info
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Cost of Stale Data Detection
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for cost-stale-data."""
db = VIMSDatabase("cost-stale-data")
db.create_schema(anomaly_classes=['outdated_signage', 'closed_business', 'changed_hours', 'wrong_pricing', 'obsolete_info'])
print(f"Database initialized for Cost of Stale Data Detection")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
cost-stale-data Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/calculate-cost-of-stale-data/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class CostStaleDataDetector(VIMSBaseDetector):
"""
Anomaly detector for Cost of Stale Data Detection.
Article: /insights/calculate-cost-of-stale-data/
"""
TOPIC = "cost-stale-data"
CLASS_NAMES = {
0: "outdated_signage", 1: "closed_business", 2: "changed_hours", 3: "wrong_pricing", 4: "obsolete_info"
}
SEVERITY_MAP = {
"outdated_signage": 3, "closed_business": 3, "changed_hours": 3, "wrong_pricing": 3, "obsolete_info": 3
}
def preprocess(self, image):
"""cost-stale-data-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""cost-stale-data-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("cost-stale-data", CostStaleDataDetector)
@@ -0,0 +1,27 @@
# Crowdsourced Field Verification
VIMS instance for crowdsourced-verification.
## Related Article
[/insights/ground-truth-crowdsourced-verification/](https://landvex.com/insights/ground-truth-crowdsourced-verification/)
## Anomaly Classes
- verification_complete
- discrepancy_found
- location_mismatch
- quality_issue
- new_construction
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/crowdsourced-verification/predict`
- WebSocket: `ws://host/ws/crowdsourced-verification/alerts`
@@ -0,0 +1,20 @@
# crowdsourced-verification configuration
topic: crowdsourced-verification
display_name: Crowdsourced Field Verification
article_url: /insights/ground-truth-crowdsourced-verification/
anomaly_classes:
- verification_complete
- discrepancy_found
- location_mismatch
- quality_issue
- new_construction
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Crowdsourced Field Verification
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for crowdsourced-verification."""
db = VIMSDatabase("crowdsourced-verification")
db.create_schema(anomaly_classes=['verification_complete', 'discrepancy_found', 'location_mismatch', 'quality_issue', 'new_construction'])
print(f"Database initialized for Crowdsourced Field Verification")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
crowdsourced-verification Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/ground-truth-crowdsourced-verification/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class CrowdsourcedVerificationDetector(VIMSBaseDetector):
"""
Anomaly detector for Crowdsourced Field Verification.
Article: /insights/ground-truth-crowdsourced-verification/
"""
TOPIC = "crowdsourced-verification"
CLASS_NAMES = {
0: "verification_complete", 1: "discrepancy_found", 2: "location_mismatch", 3: "quality_issue", 4: "new_construction"
}
SEVERITY_MAP = {
"verification_complete": 3, "discrepancy_found": 3, "location_mismatch": 3, "quality_issue": 3, "new_construction": 3
}
def preprocess(self, image):
"""crowdsourced-verification-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""crowdsourced-verification-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("crowdsourced-verification", CrowdsourcedVerificationDetector)
@@ -0,0 +1,27 @@
# Field Data Quality Assessment
VIMS instance for data-quality.
## Related Article
[/insights/crowdsourced-data-quality/](https://landvex.com/insights/crowdsourced-data-quality/)
## Anomaly Classes
- blurry_image
- poor_lighting
- wrong_angle
- missing_context
- gps_inaccurate
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/data-quality/predict`
- WebSocket: `ws://host/ws/data-quality/alerts`
@@ -0,0 +1,20 @@
# data-quality configuration
topic: data-quality
display_name: Field Data Quality Assessment
article_url: /insights/crowdsourced-data-quality/
anomaly_classes:
- blurry_image
- poor_lighting
- wrong_angle
- missing_context
- gps_inaccurate
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Field Data Quality Assessment
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for data-quality."""
db = VIMSDatabase("data-quality")
db.create_schema(anomaly_classes=['blurry_image', 'poor_lighting', 'wrong_angle', 'missing_context', 'gps_inaccurate'])
print(f"Database initialized for Field Data Quality Assessment")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
data-quality Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/crowdsourced-data-quality/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class DataQualityDetector(VIMSBaseDetector):
"""
Anomaly detector for Field Data Quality Assessment.
Article: /insights/crowdsourced-data-quality/
"""
TOPIC = "data-quality"
CLASS_NAMES = {
0: "blurry_image", 1: "poor_lighting", 2: "wrong_angle", 3: "missing_context", 4: "gps_inaccurate"
}
SEVERITY_MAP = {
"blurry_image": 3, "poor_lighting": 3, "wrong_angle": 3, "missing_context": 3, "gps_inaccurate": 3
}
def preprocess(self, image):
"""data-quality-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""data-quality-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("data-quality", DataQualityDetector)
@@ -0,0 +1,27 @@
# Decision Intelligence Validation
VIMS instance for decision-intelligence.
## Related Article
[/insights/decision-first-intelligence/](https://landvex.com/insights/decision-first-intelligence/)
## Anomaly Classes
- evidence_gap
- confidence_low
- conflict_detected
- trend_anomaly
- outlier_found
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/decision-intelligence/predict`
- WebSocket: `ws://host/ws/decision-intelligence/alerts`
@@ -0,0 +1,20 @@
# decision-intelligence configuration
topic: decision-intelligence
display_name: Decision Intelligence Validation
article_url: /insights/decision-first-intelligence/
anomaly_classes:
- evidence_gap
- confidence_low
- conflict_detected
- trend_anomaly
- outlier_found
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Decision Intelligence Validation
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for decision-intelligence."""
db = VIMSDatabase("decision-intelligence")
db.create_schema(anomaly_classes=['evidence_gap', 'confidence_low', 'conflict_detected', 'trend_anomaly', 'outlier_found'])
print(f"Database initialized for Decision Intelligence Validation")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
decision-intelligence Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/decision-first-intelligence/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class DecisionIntelligenceDetector(VIMSBaseDetector):
"""
Anomaly detector for Decision Intelligence Validation.
Article: /insights/decision-first-intelligence/
"""
TOPIC = "decision-intelligence"
CLASS_NAMES = {
0: "evidence_gap", 1: "confidence_low", 2: "conflict_detected", 3: "trend_anomaly", 4: "outlier_found"
}
SEVERITY_MAP = {
"evidence_gap": 3, "confidence_low": 3, "conflict_detected": 3, "trend_anomaly": 3, "outlier_found": 3
}
def preprocess(self, image):
"""decision-intelligence-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""decision-intelligence-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("decision-intelligence", DecisionIntelligenceDetector)
@@ -0,0 +1,27 @@
# Flood Risk Monitoring
VIMS instance for flood-monitoring.
## Related Article
[/insights/the-future-of-infrastructure-monitoring/](https://landvex.com/insights/the-future-of-infrastructure-monitoring/)
## Anomaly Classes
- water_level_rise
- drainage_blockage
- levee_damage
- erosion
- debris_accumulation
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/flood-monitoring/predict`
- WebSocket: `ws://host/ws/flood-monitoring/alerts`
@@ -0,0 +1,20 @@
# flood-monitoring configuration
topic: flood-monitoring
display_name: Flood Risk Monitoring
article_url: /insights/the-future-of-infrastructure-monitoring/
anomaly_classes:
- water_level_rise
- drainage_blockage
- levee_damage
- erosion
- debris_accumulation
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Flood Risk Monitoring
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for flood-monitoring."""
db = VIMSDatabase("flood-monitoring")
db.create_schema(anomaly_classes=['water_level_rise', 'drainage_blockage', 'levee_damage', 'erosion', 'debris_accumulation'])
print(f"Database initialized for Flood Risk Monitoring")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
flood-monitoring Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/the-future-of-infrastructure-monitoring/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class FloodMonitoringDetector(VIMSBaseDetector):
"""
Anomaly detector for Flood Risk Monitoring.
Article: /insights/the-future-of-infrastructure-monitoring/
"""
TOPIC = "flood-monitoring"
CLASS_NAMES = {
0: "water_level_rise", 1: "drainage_blockage", 2: "levee_damage", 3: "erosion", 4: "debris_accumulation"
}
SEVERITY_MAP = {
"water_level_rise": 3, "drainage_blockage": 3, "levee_damage": 3, "erosion": 3, "debris_accumulation": 3
}
def preprocess(self, image):
"""flood-monitoring-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""flood-monitoring-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("flood-monitoring", FloodMonitoringDetector)
@@ -0,0 +1,27 @@
# Graffiti Tracking & Removal
VIMS instance for graffiti-tracking.
## Related Article
[/insights/urban-growth-index-nordic/](https://landvex.com/insights/urban-growth-index-nordic/)
## Anomaly Classes
- new_graffiti
- tagging
- gang_symbols
- hate_speech
- property_damage
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/graffiti-tracking/predict`
- WebSocket: `ws://host/ws/graffiti-tracking/alerts`
@@ -0,0 +1,20 @@
# graffiti-tracking configuration
topic: graffiti-tracking
display_name: Graffiti Tracking & Removal
article_url: /insights/urban-growth-index-nordic/
anomaly_classes:
- new_graffiti
- tagging
- gang_symbols
- hate_speech
- property_damage
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Graffiti Tracking & Removal
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for graffiti-tracking."""
db = VIMSDatabase("graffiti-tracking")
db.create_schema(anomaly_classes=['new_graffiti', 'tagging', 'gang_symbols', 'hate_speech', 'property_damage'])
print(f"Database initialized for Graffiti Tracking & Removal")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
graffiti-tracking Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/urban-growth-index-nordic/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class GraffitiTrackingDetector(VIMSBaseDetector):
"""
Anomaly detector for Graffiti Tracking & Removal.
Article: /insights/urban-growth-index-nordic/
"""
TOPIC = "graffiti-tracking"
CLASS_NAMES = {
0: "new_graffiti", 1: "tagging", 2: "gang_symbols", 3: "hate_speech", 4: "property_damage"
}
SEVERITY_MAP = {
"new_graffiti": 3, "tagging": 3, "gang_symbols": 3, "hate_speech": 3, "property_damage": 3
}
def preprocess(self, image):
"""graffiti-tracking-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""graffiti-tracking-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("graffiti-tracking", GraffitiTrackingDetector)
@@ -0,0 +1,27 @@
# Insurance Contradiction Analysis
VIMS instance for insurance-contradiction.
## Related Article
[/insights/insurance-contradiction-analysis/](https://landvex.com/insights/insurance-contradiction-analysis/)
## Anomaly Classes
- condition_mismatch
- undisclosed_damage
- maintenance_neglect
- safety_violation
- value_discrepancy
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/insurance-contradiction/predict`
- WebSocket: `ws://host/ws/insurance-contradiction/alerts`
@@ -0,0 +1,20 @@
# insurance-contradiction configuration
topic: insurance-contradiction
display_name: Insurance Contradiction Analysis
article_url: /insights/insurance-contradiction-analysis/
anomaly_classes:
- condition_mismatch
- undisclosed_damage
- maintenance_neglect
- safety_violation
- value_discrepancy
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Insurance Contradiction Analysis
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for insurance-contradiction."""
db = VIMSDatabase("insurance-contradiction")
db.create_schema(anomaly_classes=['condition_mismatch', 'undisclosed_damage', 'maintenance_neglect', 'safety_violation', 'value_discrepancy'])
print(f"Database initialized for Insurance Contradiction Analysis")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
insurance-contradiction Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/insurance-contradiction-analysis/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class InsuranceContradictionDetector(VIMSBaseDetector):
"""
Anomaly detector for Insurance Contradiction Analysis.
Article: /insights/insurance-contradiction-analysis/
"""
TOPIC = "insurance-contradiction"
CLASS_NAMES = {
0: "condition_mismatch", 1: "undisclosed_damage", 2: "maintenance_neglect", 3: "safety_violation", 4: "value_discrepancy"
}
SEVERITY_MAP = {
"condition_mismatch": 3, "undisclosed_damage": 3, "maintenance_neglect": 3, "safety_violation": 3, "value_discrepancy": 3
}
def preprocess(self, image):
"""insurance-contradiction-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""insurance-contradiction-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("insurance-contradiction", InsuranceContradictionDetector)
@@ -0,0 +1,27 @@
# Insurance Risk Assessment
VIMS instance for insurance-risk.
## Related Article
[/insights/pre-loss-surveys-insurance/](https://landvex.com/insights/pre-loss-surveys-insurance/)
## Anomaly Classes
- roof_damage
- foundation_crack
- water_damage
- fire_hazard
- structural_issue
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/insurance-risk/predict`
- WebSocket: `ws://host/ws/insurance-risk/alerts`
@@ -0,0 +1,20 @@
# insurance-risk configuration
topic: insurance-risk
display_name: Insurance Risk Assessment
article_url: /insights/pre-loss-surveys-insurance/
anomaly_classes:
- roof_damage
- foundation_crack
- water_damage
- fire_hazard
- structural_issue
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Insurance Risk Assessment
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for insurance-risk."""
db = VIMSDatabase("insurance-risk")
db.create_schema(anomaly_classes=['roof_damage', 'foundation_crack', 'water_damage', 'fire_hazard', 'structural_issue'])
print(f"Database initialized for Insurance Risk Assessment")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
insurance-risk Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/pre-loss-surveys-insurance/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class InsuranceRiskDetector(VIMSBaseDetector):
"""
Anomaly detector for Insurance Risk Assessment.
Article: /insights/pre-loss-surveys-insurance/
"""
TOPIC = "insurance-risk"
CLASS_NAMES = {
0: "roof_damage", 1: "foundation_crack", 2: "water_damage", 3: "fire_hazard", 4: "structural_issue"
}
SEVERITY_MAP = {
"roof_damage": 3, "foundation_crack": 3, "water_damage": 3, "fire_hazard": 3, "structural_issue": 3
}
def preprocess(self, image):
"""insurance-risk-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""insurance-risk-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("insurance-risk", InsuranceRiskDetector)
@@ -0,0 +1,28 @@
# Municipal Infrastructure Maintenance
VIMS instance for municipal-maintenance.
## Related Article
[/insights/evidence-driven-municipal-maintenance/](https://landvex.com/insights/evidence-driven-municipal-maintenance/)
## Anomaly Classes
- pothole
- sidewalk_crack
- drainage_block
- streetlight_out
- graffiti
- vegetation_overgrowth
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/municipal-maintenance/predict`
- WebSocket: `ws://host/ws/municipal-maintenance/alerts`
@@ -0,0 +1,21 @@
# municipal-maintenance configuration
topic: municipal-maintenance
display_name: Municipal Infrastructure Maintenance
article_url: /insights/evidence-driven-municipal-maintenance/
anomaly_classes:
- pothole
- sidewalk_crack
- drainage_block
- streetlight_out
- graffiti
- vegetation_overgrowth
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Municipal Infrastructure Maintenance
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for municipal-maintenance."""
db = VIMSDatabase("municipal-maintenance")
db.create_schema(anomaly_classes=['pothole', 'sidewalk_crack', 'drainage_block', 'streetlight_out', 'graffiti', 'vegetation_overgrowth'])
print(f"Database initialized for Municipal Infrastructure Maintenance")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
municipal-maintenance Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/evidence-driven-municipal-maintenance/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class MunicipalMaintenanceDetector(VIMSBaseDetector):
"""
Anomaly detector for Municipal Infrastructure Maintenance.
Article: /insights/evidence-driven-municipal-maintenance/
"""
TOPIC = "municipal-maintenance"
CLASS_NAMES = {
0: "pothole", 1: "sidewalk_crack", 2: "drainage_block", 3: "streetlight_out", 4: "graffiti", 5: "vegetation_overgrowth"
}
SEVERITY_MAP = {
"pothole": 3, "sidewalk_crack": 3, "drainage_block": 3, "streetlight_out": 3, "graffiti": 3, "vegetation_overgrowth": 3
}
def preprocess(self, image):
"""municipal-maintenance-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""municipal-maintenance-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("municipal-maintenance", MunicipalMaintenanceDetector)
@@ -0,0 +1,27 @@
# Noise Pollution Monitoring
VIMS instance for noise-pollution.
## Related Article
[/insights/the-problem-with-official-statistics/](https://landvex.com/insights/the-problem-with-official-statistics/)
## Anomaly Classes
- construction_noise
- traffic_noise
- industrial_noise
- event_noise
- alarm_noise
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/noise-pollution/predict`
- WebSocket: `ws://host/ws/noise-pollution/alerts`
@@ -0,0 +1,20 @@
# noise-pollution configuration
topic: noise-pollution
display_name: Noise Pollution Monitoring
article_url: /insights/the-problem-with-official-statistics/
anomaly_classes:
- construction_noise
- traffic_noise
- industrial_noise
- event_noise
- alarm_noise
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Noise Pollution Monitoring
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for noise-pollution."""
db = VIMSDatabase("noise-pollution")
db.create_schema(anomaly_classes=['construction_noise', 'traffic_noise', 'industrial_noise', 'event_noise', 'alarm_noise'])
print(f"Database initialized for Noise Pollution Monitoring")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
noise-pollution Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/the-problem-with-official-statistics/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class NoisePollutionDetector(VIMSBaseDetector):
"""
Anomaly detector for Noise Pollution Monitoring.
Article: /insights/the-problem-with-official-statistics/
"""
TOPIC = "noise-pollution"
CLASS_NAMES = {
0: "construction_noise", 1: "traffic_noise", 2: "industrial_noise", 3: "event_noise", 4: "alarm_noise"
}
SEVERITY_MAP = {
"construction_noise": 3, "traffic_noise": 3, "industrial_noise": 3, "event_noise": 3, "alarm_noise": 3
}
def preprocess(self, image):
"""noise-pollution-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""noise-pollution-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("noise-pollution", NoisePollutionDetector)
@@ -0,0 +1,27 @@
# Official Statistics Verification
VIMS instance for official-statistics.
## Related Article
[/insights/the-problem-with-official-statistics/](https://landvex.com/insights/the-problem-with-official-statistics/)
## Anomaly Classes
- aggregation_bias
- incentive_distortion
- conceptual_mismatch
- time_lag
- underreporting
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/official-statistics/predict`
- WebSocket: `ws://host/ws/official-statistics/alerts`
@@ -0,0 +1,20 @@
# official-statistics configuration
topic: official-statistics
display_name: Official Statistics Verification
article_url: /insights/the-problem-with-official-statistics/
anomaly_classes:
- aggregation_bias
- incentive_distortion
- conceptual_mismatch
- time_lag
- underreporting
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Official Statistics Verification
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for official-statistics."""
db = VIMSDatabase("official-statistics")
db.create_schema(anomaly_classes=['aggregation_bias', 'incentive_distortion', 'conceptual_mismatch', 'time_lag', 'underreporting'])
print(f"Database initialized for Official Statistics Verification")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
official-statistics Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/the-problem-with-official-statistics/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class OfficialStatisticsDetector(VIMSBaseDetector):
"""
Anomaly detector for Official Statistics Verification.
Article: /insights/the-problem-with-official-statistics/
"""
TOPIC = "official-statistics"
CLASS_NAMES = {
0: "aggregation_bias", 1: "incentive_distortion", 2: "conceptual_mismatch", 3: "time_lag", 4: "underreporting"
}
SEVERITY_MAP = {
"aggregation_bias": 3, "incentive_distortion": 3, "conceptual_mismatch": 3, "time_lag": 3, "underreporting": 3
}
def preprocess(self, image):
"""official-statistics-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""official-statistics-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("official-statistics", OfficialStatisticsDetector)
@@ -0,0 +1,27 @@
# Parking Enforcement
VIMS instance for parking-enforcement.
## Related Article
[/insights/official-data-vs-observed-reality/](https://landvex.com/insights/official-data-vs-observed-reality/)
## Anomaly Classes
- illegal_parking
- expired_meter
- blocked_access
- fire_hydrant_violation
- handicap_violation
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/parking-enforcement/predict`
- WebSocket: `ws://host/ws/parking-enforcement/alerts`
@@ -0,0 +1,20 @@
# parking-enforcement configuration
topic: parking-enforcement
display_name: Parking Enforcement
article_url: /insights/official-data-vs-observed-reality/
anomaly_classes:
- illegal_parking
- expired_meter
- blocked_access
- fire_hydrant_violation
- handicap_violation
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Parking Enforcement
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for parking-enforcement."""
db = VIMSDatabase("parking-enforcement")
db.create_schema(anomaly_classes=['illegal_parking', 'expired_meter', 'blocked_access', 'fire_hydrant_violation', 'handicap_violation'])
print(f"Database initialized for Parking Enforcement")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
parking-enforcement Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/official-data-vs-observed-reality/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class ParkingEnforcementDetector(VIMSBaseDetector):
"""
Anomaly detector for Parking Enforcement.
Article: /insights/official-data-vs-observed-reality/
"""
TOPIC = "parking-enforcement"
CLASS_NAMES = {
0: "illegal_parking", 1: "expired_meter", 2: "blocked_access", 3: "fire_hydrant_violation", 4: "handicap_violation"
}
SEVERITY_MAP = {
"illegal_parking": 3, "expired_meter": 3, "blocked_access": 3, "fire_hydrant_violation": 3, "handicap_violation": 3
}
def preprocess(self, image):
"""parking-enforcement-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""parking-enforcement-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("parking-enforcement", ParkingEnforcementDetector)
@@ -0,0 +1,27 @@
# Playground Safety Inspection
VIMS instance for playground-safety.
## Related Article
[/insights/evidence-driven-municipal-maintenance/](https://landvex.com/insights/evidence-driven-municipal-maintenance/)
## Anomaly Classes
- broken_equipment
- sharp_edges
- missing_safety_surface
- trip_hazard
- vandalism
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/playground-safety/predict`
- WebSocket: `ws://host/ws/playground-safety/alerts`
@@ -0,0 +1,20 @@
# playground-safety configuration
topic: playground-safety
display_name: Playground Safety Inspection
article_url: /insights/evidence-driven-municipal-maintenance/
anomaly_classes:
- broken_equipment
- sharp_edges
- missing_safety_surface
- trip_hazard
- vandalism
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Playground Safety Inspection
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for playground-safety."""
db = VIMSDatabase("playground-safety")
db.create_schema(anomaly_classes=['broken_equipment', 'sharp_edges', 'missing_safety_surface', 'trip_hazard', 'vandalism'])
print(f"Database initialized for Playground Safety Inspection")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
playground-safety Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/evidence-driven-municipal-maintenance/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class PlaygroundSafetyDetector(VIMSBaseDetector):
"""
Anomaly detector for Playground Safety Inspection.
Article: /insights/evidence-driven-municipal-maintenance/
"""
TOPIC = "playground-safety"
CLASS_NAMES = {
0: "broken_equipment", 1: "sharp_edges", 2: "missing_safety_surface", 3: "trip_hazard", 4: "vandalism"
}
SEVERITY_MAP = {
"broken_equipment": 3, "sharp_edges": 3, "missing_safety_surface": 3, "trip_hazard": 3, "vandalism": 3
}
def preprocess(self, image):
"""playground-safety-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""playground-safety-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("playground-safety", PlaygroundSafetyDetector)
@@ -0,0 +1,27 @@
# Preventive Maintenance Optimization
VIMS instance for preventive-maintenance.
## Related Article
[/insights/the-economics-of-preventive-maintenance/](https://landvex.com/insights/the-economics-of-preventive-maintenance/)
## Anomaly Classes
- early_wear
- component_degradation
- environmental_stress
- usage_anomaly
- schedule_drift
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/preventive-maintenance/predict`
- WebSocket: `ws://host/ws/preventive-maintenance/alerts`
@@ -0,0 +1,20 @@
# preventive-maintenance configuration
topic: preventive-maintenance
display_name: Preventive Maintenance Optimization
article_url: /insights/the-economics-of-preventive-maintenance/
anomaly_classes:
- early_wear
- component_degradation
- environmental_stress
- usage_anomaly
- schedule_drift
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Preventive Maintenance Optimization
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for preventive-maintenance."""
db = VIMSDatabase("preventive-maintenance")
db.create_schema(anomaly_classes=['early_wear', 'component_degradation', 'environmental_stress', 'usage_anomaly', 'schedule_drift'])
print(f"Database initialized for Preventive Maintenance Optimization")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
preventive-maintenance Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/the-economics-of-preventive-maintenance/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class PreventiveMaintenanceDetector(VIMSBaseDetector):
"""
Anomaly detector for Preventive Maintenance Optimization.
Article: /insights/the-economics-of-preventive-maintenance/
"""
TOPIC = "preventive-maintenance"
CLASS_NAMES = {
0: "early_wear", 1: "component_degradation", 2: "environmental_stress", 3: "usage_anomaly", 4: "schedule_drift"
}
SEVERITY_MAP = {
"early_wear": 3, "component_degradation": 3, "environmental_stress": 3, "usage_anomaly": 3, "schedule_drift": 3
}
def preprocess(self, image):
"""preventive-maintenance-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""preventive-maintenance-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("preventive-maintenance", PreventiveMaintenanceDetector)
@@ -0,0 +1,27 @@
# Public Transport Infrastructure
VIMS instance for public-transport.
## Related Article
[/insights/why-cities-need-field-intelligence/](https://landvex.com/insights/why-cities-need-field-intelligence/)
## Anomaly Classes
- bus_stop_damage
- shelter_vandalism
- bench_broken
- schedule_missing
- accessibility_issue
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/public-transport/predict`
- WebSocket: `ws://host/ws/public-transport/alerts`
@@ -0,0 +1,20 @@
# public-transport configuration
topic: public-transport
display_name: Public Transport Infrastructure
article_url: /insights/why-cities-need-field-intelligence/
anomaly_classes:
- bus_stop_damage
- shelter_vandalism
- bench_broken
- schedule_missing
- accessibility_issue
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Public Transport Infrastructure
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for public-transport."""
db = VIMSDatabase("public-transport")
db.create_schema(anomaly_classes=['bus_stop_damage', 'shelter_vandalism', 'bench_broken', 'schedule_missing', 'accessibility_issue'])
print(f"Database initialized for Public Transport Infrastructure")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
public-transport Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/why-cities-need-field-intelligence/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class PublicTransportDetector(VIMSBaseDetector):
"""
Anomaly detector for Public Transport Infrastructure.
Article: /insights/why-cities-need-field-intelligence/
"""
TOPIC = "public-transport"
CLASS_NAMES = {
0: "bus_stop_damage", 1: "shelter_vandalism", 2: "bench_broken", 3: "schedule_missing", 4: "accessibility_issue"
}
SEVERITY_MAP = {
"bus_stop_damage": 3, "shelter_vandalism": 3, "bench_broken": 3, "schedule_missing": 3, "accessibility_issue": 3
}
def preprocess(self, image):
"""public-transport-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""public-transport-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("public-transport", PublicTransportDetector)
@@ -0,0 +1,27 @@
# Real Estate Condition Assessment
VIMS instance for real-estate-condition.
## Related Article
[/insights/real-estate-due-diligence-observed-reality/](https://landvex.com/insights/real-estate-due-diligence-observed-reality/)
## Anomaly Classes
- facade_damage
- roof_issue
- window_broken
- entrance_condition
- parking_lot_state
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/real-estate-condition/predict`
- WebSocket: `ws://host/ws/real-estate-condition/alerts`
@@ -0,0 +1,20 @@
# real-estate-condition configuration
topic: real-estate-condition
display_name: Real Estate Condition Assessment
article_url: /insights/real-estate-due-diligence-observed-reality/
anomaly_classes:
- facade_damage
- roof_issue
- window_broken
- entrance_condition
- parking_lot_state
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Real Estate Condition Assessment
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for real-estate-condition."""
db = VIMSDatabase("real-estate-condition")
db.create_schema(anomaly_classes=['facade_damage', 'roof_issue', 'window_broken', 'entrance_condition', 'parking_lot_state'])
print(f"Database initialized for Real Estate Condition Assessment")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
real-estate-condition Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/real-estate-due-diligence-observed-reality/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class RealEstateConditionDetector(VIMSBaseDetector):
"""
Anomaly detector for Real Estate Condition Assessment.
Article: /insights/real-estate-due-diligence-observed-reality/
"""
TOPIC = "real-estate-condition"
CLASS_NAMES = {
0: "facade_damage", 1: "roof_issue", 2: "window_broken", 3: "entrance_condition", 4: "parking_lot_state"
}
SEVERITY_MAP = {
"facade_damage": 3, "roof_issue": 3, "window_broken": 3, "entrance_condition": 3, "parking_lot_state": 3
}
def preprocess(self, image):
"""real-estate-condition-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""real-estate-condition-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("real-estate-condition", RealEstateConditionDetector)
@@ -0,0 +1,27 @@
# Retail Site Analytics
VIMS instance for retail-analytics.
## Related Article
[/insights/retail-site-selection-data/](https://landvex.com/insights/retail-site-selection-data/)
## Anomaly Classes
- foot_traffic
- storefront_condition
- signage
- parking
- competitor_presence
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/retail-analytics/predict`
- WebSocket: `ws://host/ws/retail-analytics/alerts`
@@ -0,0 +1,20 @@
# retail-analytics configuration
topic: retail-analytics
display_name: Retail Site Analytics
article_url: /insights/retail-site-selection-data/
anomaly_classes:
- foot_traffic
- storefront_condition
- signage
- parking
- competitor_presence
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Retail Site Analytics
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for retail-analytics."""
db = VIMSDatabase("retail-analytics")
db.create_schema(anomaly_classes=['foot_traffic', 'storefront_condition', 'signage', 'parking', 'competitor_presence'])
print(f"Database initialized for Retail Site Analytics")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
retail-analytics Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/retail-site-selection-data/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class RetailAnalyticsDetector(VIMSBaseDetector):
"""
Anomaly detector for Retail Site Analytics.
Article: /insights/retail-site-selection-data/
"""
TOPIC = "retail-analytics"
CLASS_NAMES = {
0: "foot_traffic", 1: "storefront_condition", 2: "signage", 3: "parking", 4: "competitor_presence"
}
SEVERITY_MAP = {
"foot_traffic": 3, "storefront_condition": 3, "signage": 3, "parking": 3, "competitor_presence": 3
}
def preprocess(self, image):
"""retail-analytics-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""retail-analytics-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("retail-analytics", RetailAnalyticsDetector)
@@ -0,0 +1,27 @@
# Satellite vs Ground Truth
VIMS instance for satellite-validation.
## Related Article
[/insights/field-intelligence-vs-satellite/](https://landvex.com/insights/field-intelligence-vs-satellite/)
## Anomaly Classes
- resolution_mismatch
- temporal_gap
- cloud_obstruction
- classification_error
- change_undetected
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/satellite-validation/predict`
- WebSocket: `ws://host/ws/satellite-validation/alerts`
@@ -0,0 +1,20 @@
# satellite-validation configuration
topic: satellite-validation
display_name: Satellite vs Ground Truth
article_url: /insights/field-intelligence-vs-satellite/
anomaly_classes:
- resolution_mismatch
- temporal_gap
- cloud_obstruction
- classification_error
- change_undetected
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Satellite vs Ground Truth
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for satellite-validation."""
db = VIMSDatabase("satellite-validation")
db.create_schema(anomaly_classes=['resolution_mismatch', 'temporal_gap', 'cloud_obstruction', 'classification_error', 'change_undetected'])
print(f"Database initialized for Satellite vs Ground Truth")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
satellite-validation Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/field-intelligence-vs-satellite/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class SatelliteValidationDetector(VIMSBaseDetector):
"""
Anomaly detector for Satellite vs Ground Truth.
Article: /insights/field-intelligence-vs-satellite/
"""
TOPIC = "satellite-validation"
CLASS_NAMES = {
0: "resolution_mismatch", 1: "temporal_gap", 2: "cloud_obstruction", 3: "classification_error", 4: "change_undetected"
}
SEVERITY_MAP = {
"resolution_mismatch": 3, "temporal_gap": 3, "cloud_obstruction": 3, "classification_error": 3, "change_undetected": 3
}
def preprocess(self, image):
"""satellite-validation-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""satellite-validation-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("satellite-validation", SatelliteValidationDetector)
@@ -0,0 +1,27 @@
# Sidewalk Accessibility Audit
VIMS instance for sidewalk-accessibility.
## Related Article
[/insights/how-to-measure-urban-decay/](https://landvex.com/insights/how-to-measure-urban-decay/)
## Anomaly Classes
- cracked_surface
- missing_curb_ramp
- obstruction
- uneven_surface
- narrow_path
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/sidewalk-accessibility/predict`
- WebSocket: `ws://host/ws/sidewalk-accessibility/alerts`
@@ -0,0 +1,20 @@
# sidewalk-accessibility configuration
topic: sidewalk-accessibility
display_name: Sidewalk Accessibility Audit
article_url: /insights/how-to-measure-urban-decay/
anomaly_classes:
- cracked_surface
- missing_curb_ramp
- obstruction
- uneven_surface
- narrow_path
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Sidewalk Accessibility Audit
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for sidewalk-accessibility."""
db = VIMSDatabase("sidewalk-accessibility")
db.create_schema(anomaly_classes=['cracked_surface', 'missing_curb_ramp', 'obstruction', 'uneven_surface', 'narrow_path'])
print(f"Database initialized for Sidewalk Accessibility Audit")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
sidewalk-accessibility Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/how-to-measure-urban-decay/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class SidewalkAccessibilityDetector(VIMSBaseDetector):
"""
Anomaly detector for Sidewalk Accessibility Audit.
Article: /insights/how-to-measure-urban-decay/
"""
TOPIC = "sidewalk-accessibility"
CLASS_NAMES = {
0: "cracked_surface", 1: "missing_curb_ramp", 2: "obstruction", 3: "uneven_surface", 4: "narrow_path"
}
SEVERITY_MAP = {
"cracked_surface": 3, "missing_curb_ramp": 3, "obstruction": 3, "uneven_surface": 3, "narrow_path": 3
}
def preprocess(self, image):
"""sidewalk-accessibility-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""sidewalk-accessibility-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("sidewalk-accessibility", SidewalkAccessibilityDetector)
@@ -0,0 +1,26 @@
# Street Lighting Monitoring
VIMS instance for street-lighting.
## Related Article
[/insights/evidence-driven-municipal-maintenance/](https://landvex.com/insights/evidence-driven-municipal-maintenance/)
## Anomaly Classes
- pole_damage
- light_out
- vegetation_obstruction
- vandalism
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/street-lighting/predict`
- WebSocket: `ws://host/ws/street-lighting/alerts`
@@ -0,0 +1,19 @@
# street-lighting configuration
topic: street-lighting
display_name: Street Lighting Monitoring
article_url: /insights/evidence-driven-municipal-maintenance/
anomaly_classes:
- pole_damage
- light_out
- vegetation_obstruction
- vandalism
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Street Lighting Monitoring
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for street-lighting."""
db = VIMSDatabase("street-lighting")
db.create_schema(anomaly_classes=['pole_damage', 'light_out', 'vegetation_obstruction', 'vandalism'])
print(f"Database initialized for Street Lighting Monitoring")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
street-lighting Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/evidence-driven-municipal-maintenance/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class StreetLightingDetector(VIMSBaseDetector):
"""
Anomaly detector for Street Lighting Monitoring.
Article: /insights/evidence-driven-municipal-maintenance/
"""
TOPIC = "street-lighting"
CLASS_NAMES = {
0: "pole_damage", 1: "light_out", 2: "vegetation_obstruction", 3: "vandalism"
}
SEVERITY_MAP = {
"pole_damage": 3, "light_out": 3, "vegetation_obstruction": 3, "vandalism": 3
}
def preprocess(self, image):
"""street-lighting-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""street-lighting-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("street-lighting", StreetLightingDetector)
@@ -0,0 +1,27 @@
# Traffic Flow Monitoring
VIMS instance for traffic-monitoring.
## Related Article
[/insights/continuous-monitoring-vs-periodic-inspection/](https://landvex.com/insights/continuous-monitoring-vs-periodic-inspection/)
## Anomaly Classes
- congestion
- accident
- road_closure
- construction_zone
- signal_malfunction
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/traffic-monitoring/predict`
- WebSocket: `ws://host/ws/traffic-monitoring/alerts`
@@ -0,0 +1,20 @@
# traffic-monitoring configuration
topic: traffic-monitoring
display_name: Traffic Flow Monitoring
article_url: /insights/continuous-monitoring-vs-periodic-inspection/
anomaly_classes:
- congestion
- accident
- road_closure
- construction_zone
- signal_malfunction
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Traffic Flow Monitoring
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for traffic-monitoring."""
db = VIMSDatabase("traffic-monitoring")
db.create_schema(anomaly_classes=['congestion', 'accident', 'road_closure', 'construction_zone', 'signal_malfunction'])
print(f"Database initialized for Traffic Flow Monitoring")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
traffic-monitoring Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/continuous-monitoring-vs-periodic-inspection/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class TrafficMonitoringDetector(VIMSBaseDetector):
"""
Anomaly detector for Traffic Flow Monitoring.
Article: /insights/continuous-monitoring-vs-periodic-inspection/
"""
TOPIC = "traffic-monitoring"
CLASS_NAMES = {
0: "congestion", 1: "accident", 2: "road_closure", 3: "construction_zone", 4: "signal_malfunction"
}
SEVERITY_MAP = {
"congestion": 3, "accident": 3, "road_closure": 3, "construction_zone": 3, "signal_malfunction": 3
}
def preprocess(self, image):
"""traffic-monitoring-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""traffic-monitoring-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("traffic-monitoring", TrafficMonitoringDetector)
+27
View File
@@ -0,0 +1,27 @@
# Urban Decay Measurement
VIMS instance for urban-decay.
## Related Article
[/insights/how-to-measure-urban-decay/](https://landvex.com/insights/how-to-measure-urban-decay/)
## Anomaly Classes
- building_deterioration
- abandoned_property
- trash_accumulation
- broken_infrastructure
- illegal_dumping
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/urban-decay/predict`
- WebSocket: `ws://host/ws/urban-decay/alerts`
@@ -0,0 +1,20 @@
# urban-decay configuration
topic: urban-decay
display_name: Urban Decay Measurement
article_url: /insights/how-to-measure-urban-decay/
anomaly_classes:
- building_deterioration
- abandoned_property
- trash_accumulation
- broken_infrastructure
- illegal_dumping
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Urban Decay Measurement
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for urban-decay."""
db = VIMSDatabase("urban-decay")
db.create_schema(anomaly_classes=['building_deterioration', 'abandoned_property', 'trash_accumulation', 'broken_infrastructure', 'illegal_dumping'])
print(f"Database initialized for Urban Decay Measurement")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
urban-decay Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/how-to-measure-urban-decay/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class UrbanDecayDetector(VIMSBaseDetector):
"""
Anomaly detector for Urban Decay Measurement.
Article: /insights/how-to-measure-urban-decay/
"""
TOPIC = "urban-decay"
CLASS_NAMES = {
0: "building_deterioration", 1: "abandoned_property", 2: "trash_accumulation", 3: "broken_infrastructure", 4: "illegal_dumping"
}
SEVERITY_MAP = {
"building_deterioration": 3, "abandoned_property": 3, "trash_accumulation": 3, "broken_infrastructure": 3, "illegal_dumping": 3
}
def preprocess(self, image):
"""urban-decay-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""urban-decay-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("urban-decay", UrbanDecayDetector)
@@ -0,0 +1,27 @@
# Urban Vegetation Management
VIMS instance for vegetation-management.
## Related Article
[/insights/continuous-monitoring-vs-periodic-inspection/](https://landvex.com/insights/continuous-monitoring-vs-periodic-inspection/)
## Anomaly Classes
- overgrown_branches
- dead_tree
- invasive_species
- root_damage
- fallen_branches
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/vegetation-management/predict`
- WebSocket: `ws://host/ws/vegetation-management/alerts`
@@ -0,0 +1,20 @@
# vegetation-management configuration
topic: vegetation-management
display_name: Urban Vegetation Management
article_url: /insights/continuous-monitoring-vs-periodic-inspection/
anomaly_classes:
- overgrown_branches
- dead_tree
- invasive_species
- root_damage
- fallen_branches
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Urban Vegetation Management
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for vegetation-management."""
db = VIMSDatabase("vegetation-management")
db.create_schema(anomaly_classes=['overgrown_branches', 'dead_tree', 'invasive_species', 'root_damage', 'fallen_branches'])
print(f"Database initialized for Urban Vegetation Management")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
vegetation-management Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/continuous-monitoring-vs-periodic-inspection/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class VegetationManagementDetector(VIMSBaseDetector):
"""
Anomaly detector for Urban Vegetation Management.
Article: /insights/continuous-monitoring-vs-periodic-inspection/
"""
TOPIC = "vegetation-management"
CLASS_NAMES = {
0: "overgrown_branches", 1: "dead_tree", 2: "invasive_species", 3: "root_damage", 4: "fallen_branches"
}
SEVERITY_MAP = {
"overgrown_branches": 3, "dead_tree": 3, "invasive_species": 3, "root_damage": 3, "fallen_branches": 3
}
def preprocess(self, image):
"""vegetation-management-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""vegetation-management-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("vegetation-management", VegetationManagementDetector)
@@ -0,0 +1,27 @@
# Waste Management Monitoring
VIMS instance for waste-management.
## Related Article
[/insights/evidence-driven-municipal-maintenance/](https://landvex.com/insights/evidence-driven-municipal-maintenance/)
## Anomaly Classes
- overflowing_bin
- illegal_dumping
- missed_collection
- damaged_container
- hazardous_waste
## Quick Start
1. Add training images to `data/raw/`
2. Annotate using LabelImg (YOLO format)
3. Run preprocessing: `python src/detector.py`
4. Train model: `python src/detector.py --train`
5. Run inference: `python src/detector.py --predict data/test/image.jpg`
## API
Once deployed, access via:
- REST: `POST /api/waste-management/predict`
- WebSocket: `ws://host/ws/waste-management/alerts`
@@ -0,0 +1,20 @@
# waste-management configuration
topic: waste-management
display_name: Waste Management Monitoring
article_url: /insights/evidence-driven-municipal-maintenance/
anomaly_classes:
- overflowing_bin
- illegal_dumping
- missed_collection
- damaged_container
- hazardous_waste
model:
base: yolov8n.pt
input_size: 640
training:
epochs: 100
batch_size: 16
@@ -0,0 +1,20 @@
"""
Database setup for Waste Management Monitoring
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from database import VIMSDatabase
def setup():
"""Initialize database for waste-management."""
db = VIMSDatabase("waste-management")
db.create_schema(anomaly_classes=['overflowing_bin', 'illegal_dumping', 'missed_collection', 'damaged_container', 'hazardous_waste'])
print(f"Database initialized for Waste Management Monitoring")
if __name__ == "__main__":
setup()
@@ -0,0 +1,42 @@
"""
waste-management Anomaly Detector
Generated by VIMS Instance Creator
Related article: /insights/evidence-driven-municipal-maintenance/
"""
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "core"))
from base_detector import VIMSBaseDetector, VIMSInstanceRegistry
class WasteManagementDetector(VIMSBaseDetector):
"""
Anomaly detector for Waste Management Monitoring.
Article: /insights/evidence-driven-municipal-maintenance/
"""
TOPIC = "waste-management"
CLASS_NAMES = {
0: "overflowing_bin", 1: "illegal_dumping", 2: "missed_collection", 3: "damaged_container", 4: "hazardous_waste"
}
SEVERITY_MAP = {
"overflowing_bin": 3, "illegal_dumping": 3, "missed_collection": 3, "damaged_container": 3, "hazardous_waste": 3
}
def preprocess(self, image):
"""waste-management-specific preprocessing."""
# TODO: Implement specific preprocessing
return image
def postprocess(self, raw_output):
"""waste-management-specific postprocessing."""
# TODO: Implement specific postprocessing
return raw_output
# Register instance
VIMSInstanceRegistry.register("waste-management", WasteManagementDetector)