All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
This release switches from using false positive rates in benchmarking to reporting precision, which is more intuitive.
All references to fpr_threshold now refer to precision_threshold.
The PDQHash hasher now correctly returns the hash vector instead of the (vector, quality) tuple.
This release adds significantly more support for video.
- Previously,
read_video
returned(frame, index, timestamp)
tuples whereindex
reflected the index of the yielded frame (i.e., it always increased by exactly 1). It now reflects the index of the frame in the original video. This means that, if the requested framerate is higher than the encoded video framerate, this index may repeat the same value, indicating that we have repeated the same frame.
- We now include a
SimpleSceneDetection
hasher that can wrap other video hashers using scene detection. compute_metrics
is much faster now for integer-valued hashes that use a euclidean distance metric.- We now include an unsigned 8-bit integer version of
PHash
, calledPHashU8
. This provides a useful framewise hasher for averaging across frames (e.g., using TMK) while being more compact thanPHashF
. - We include more thorough support for benchmarking video hashes.
- When using
hasher.vector_to_string
with hashers that return multiple hashes, thehash_format
argument was not respected. - The
compute_threshold_recall
andshow_histograms
functions did not work properly whengrouping=[]
.
This release adds more support for hashing videos (including TMK L2 and TMK L2). As part of that, it also includes a re-factor to separate benchmarking.BenchmarkDataset
and benchmarking.BenchmarkTransforms
into image and video variants.
Initial release