We also found that segmentation required significantly fewer images compared to keypoint pose detection models. Segmentation generalizes faster since you are just finding body boundaries. Keypoints are more finicky because anatomical landmarks vary a lot more across species, life stages, and body deformation while swimming. We had to be much more intentional about diversity in the keypoint training data. What made the difference overall was building calibration sets that intentionally captured edge cases. Low light, high turbidity, dense occlusion, different life stages. We also started stratifying by time of day and tank conditions rather than just grabbing random frames. It is still not perfect but the models are much more stable now.
Given that, we have trained a variety of models and we are still experimenting on what works the best. We are even considering using VLMs for certain tasks if we can fine-tune them well enough.
Curious — how many labeled fish images did you need before the quantized models stopped falling apart in production?
(Also, for anyone tracking W26, we've got OctaPulse on our prediction market: ingene.win/?utm_source=hn_comment&utm_medium=social&utm_campaign=mar2026)