CI fails if the best accuracy, or the exported model's, drops below 90.0 %.
Confusion matrix, baseline
True class \ predicted
sphere
torus
box
cylinder
cone
capsule
sphere
100
0
0
0
0
0
torus
0
100
0
0
0
0
box
0
0
89
9
1
1
cylinder
0
0
4
94
0
2
cone
0
0
0
0
100
0
capsule
0
0
0
0
0
100
Confusion matrix, PointNet
True class \ predicted
sphere
torus
box
cylinder
cone
capsule
sphere
100
0
0
0
0
0
torus
0
100
0
0
0
0
box
0
0
88
11
0
1
cylinder
0
0
12
83
0
5
cone
0
0
0
0
100
0
capsule
0
0
0
0
0
100
Rows: the true class; columns: the predicted class; the diagonal counts the right answers. Nearly all errors come from boxes and cylinders being confused.
Tech stack
PyTorch
scikit-learn
DVC
MLflow
ONNX
GitHub Actions
Who does what
PyTorch
Trains the PointNet, a network that classifies a point cloud.
scikit-learn
The baseline: rotation-invariant descriptors and boosting, which beats the network here (97.2% against 95.2%).
DVC
Describes the pipeline (data, training, export, check) so that it replays identically; the data stays out of git.
MLflow
Keeps each training run's parameters, metrics and loss curve.
ONNX
The PointNet's export format, checked identical to PyTorch, which the API serves without PyTorch.
GitHub Actions
Replays the pipeline in CI and fails if accuracy drops below 90%.
Definition of Done
Code reviewed, diff by diff
Unit and integration tests green
Green CI on Linux, Windows and macOS when compiled