Skip to content

Conversation

@sammlapp
Copy link
Collaborator

No description provided.

this doesn't seem ideal, but we can't add "inf" values to the hoplite db, and don't want to rescale or normalize because the hoplite db doesn't contain any additional scaling metadata
untested! need to check implementation and see how it works
@sammlapp
Copy link
Collaborator Author

sammlapp commented Oct 30, 2025

Still need to implement training shallow classifiers on hoplite embedding db (now done)

@sammlapp
Copy link
Collaborator Author

  • method for predict_from_hoplite_db()

this is a pretty big refactor aimed at making things like the BMZ Perch2/Birdnet/TF models and ONNXModel only need to implement batch_forward() and otherwise be able to use SpectrogramPreprocessor methods like .predict() and .embed()

The strategy is that you implement batch_forward as appropraite for the class, and it returns a dictionary of outputs. Then predict() and embed() just need to make the dataloader with self.predict_dataloader(), iterate the dataloader to get batches, call batch_forward() on each batch, and aggregate the results across batches.

Some things in the tutorials are likely broken after this refactor, I haven't run/tested/checked them.
the DataLoader needs to return lists of AudioSample anyways for other parts of the code to work, so we can specify using collate_audio_samples to get the sample.data and sample.labels of each sample after getting a batch of AudioSamples from a dataloader. This reduces complexity/confusion.
batch_forward is what we want to implement per-model anyways, so it is natural to define collation within batch_forward
instead, retain start time and end time listed in the original input, since this is what is loaded from the audio and we want to retain match between preprocessed/output start/end time and input (eg to know the processed sample matches the input)

this resolves issues with existing samples not "matching" embedded samples and re-embedding
still getting surprising mismatches for floating point comparison of offsets, established rounding precision default of just 3 decimals
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants