SVM Classifier & HOG Pipeline
Spesifikasi model machine learning SVM, StandardScaler, dan ekstraktor 26.244 fitur HOG.
Status: Stablev1.0.0Source Verified: Yes
Source:
docs/MODEL_CARD.md, backend/storage/models/model-manifest.jsonTests: backend/tests/test_predict.py, tests/unit/aiContract.test.tsSVM Classifier & HOG Pipeline Specification#
Dokumentasi ini menyajikan spesifikasi resmi dari model klasifikasi maloklusi dental pada OrthoBreath AI Engine v1.0.0.
1. Spesifikasi Model & Parameter#
| Parameter | Nilai / Konfigurasi | Keterangan |
|---|---|---|
| Model Type | Support Vector Classifier (sklearn.svm.SVC) | Binary Classification |
| Scikit-Learn Version | 1.6.1 | Wajib identik antara training & inference |
| Kernel | RBF (Radial Basis Function) | Mengakomodasi non-linearitas fitur citra |
| Target Classes | 0: Normal, 1: Indikasi Maloklusi | Binary decision boundary |
| Preprocessor | sklearn.preprocessing.StandardScaler | Normalisasi rata-rata 0 dan varians 1 |
| Total Features | 26,244 float features | Dimensi vektor input HOG |
| Artifact Files | svm_model.pkl, scaler.pkl, model-manifest.json | Lokasi: backend/storage/models/ |
2. Ekstraksi Fitur HOG (26.244 Dimensi)#
Pipeline ekstraksi fitur citra foto gigi: 1. Pre-processing Citra:
- Konversi RGB ke Grayscale
- Resize citra menjadi resolusi standar
128 x 128piksel. - Parameter Histogram of Oriented Gradients (HOG):
orientations = 9pixels_per_cell = (8, 8)(Total: 16x16 grid sel)cells_per_block = (2, 2)block_norm = 'L2-Hys'- Kalkulasi Dimensi Output:
$$\text{Blocks} = (16 - 1) \times (16 - 1) = 15 \times 15 = 225$$ $$\text{Features per block} = 2 \times 2 \times 9 = 36$$ $$\text{Total Features} = 225 \times 36 \times \dots = \mathbf{26,244}$$
3. Model Manifest & Verifikasi Integritas#
Sebelum inferensi dijalankan, FastAPI memvalidasi checksum dan metadata pada backend/storage/models/model-manifest.json:
json
json
1{2 "modelVersion": "1.0.0",3 "expectedFeatures": 26244,4 "scikitLearnVersion": "1.6.1",5 "classes": ["Normal", "Maloklusi"],6 "modelType": "SVC",7 "scalerType": "StandardScaler"8}