alembic>=1.8.0
numpy>=1.21.0
opencv-python>=4.6.0
pillow>=8.0.0
psutil>=5.9.0
scipy>=1.9.0
shapely>=1.8.0
SQLAlchemy>=1.4.0
torch>=1.9.0
torchvision>=0.10.0
ultralytics>=8.0.0
# Pinned: 1.8.x gained _kp_active_mask, so the trained PPE checkpoints load only
# partially there and the model returns zero detections — silently, no error.
# PIN KERAS — jangan longgarkan. Below 1.6 it fails to import against current
# transformers; 1.6.0 loads the checkpoints whole. 1.8.x menyebabkan
# zero-detection SENYAP (model load, inferensi jalan, tapi 0 deteksi tanpa error).
# Aman hanya di window [1.6, 1.8). Selaras dengan ai-vision-training-service.
rfdetr==1.6.0