On-disk cache for ONNX model weights downloaded from HuggingFace.
Image.Segmentation and Image.Detection use this cache to fetch
their default models on first call. Files are downloaded once and
reused for the lifetime of the cache directory.
Cache directory
The cache root is resolved in this order:
Application.get_env(:image_vision, :cache_dir)if set.Otherwise,
:filename.basedir(:user_cache, "image_vision")— on macOS this is~/Library/Caches/image_vision, on Linux it's$XDG_CACHE_HOME/image_vision(typically~/.cache/image_vision).
Configure explicitly in config/runtime.exs:
config :image_vision, :cache_dir, "/var/lib/image_vision/models"Layout
Cached files are stored under {cache_root}/{repo}/{filename},
preserving the HuggingFace repository hierarchy. For example, the
SAM 2.1 Tiny encoder lives at:
{cache_root}/facebook/sam2.1-hiera-tiny/sam2.1_hiera_tiny.encoder.onnxOffline use
Pre-populate the cache with the expected layout to operate fully
offline. cached?/2 reports whether a given file is present without
triggering a download.
Summary
Functions
Returns the absolute path to the cache root directory, creating it if it does not yet exist.
Returns true if the given HuggingFace file is already present in the local cache.
Returns the local path for a HuggingFace model file, downloading it on cache miss.
Returns the local path that a given HuggingFace file would be cached at, without checking whether it exists or downloading it.
Functions
@spec cache_root() :: Path.t()
Returns the absolute path to the cache root directory, creating it if it does not yet exist.
Returns
- The absolute path as a binary.
Returns true if the given HuggingFace file is already present in the local cache.
Arguments
repois the HuggingFace repository.filenameis the path within the repository.
Returns
- A boolean.
Returns the local path for a HuggingFace model file, downloading it on cache miss.
Arguments
repois the HuggingFace repository, e.g."facebook/sam2.1-hiera-tiny".filenameis the path within the repository, e.g."sam2.1_hiera_tiny.encoder.onnx". Sub-directories are supported ("onnx/encoder.onnx").
Returns
- The absolute local path to the file as a binary.
Raises if the download fails.
Examples
iex> path = ImageVision.ModelCache.fetch!("facebook/sam2.1-hiera-tiny", "config.json")
iex> File.exists?(path)
true
Returns the local path that a given HuggingFace file would be cached at, without checking whether it exists or downloading it.
Arguments
repois the HuggingFace repository.filenameis the path within the repository.
Returns
- The absolute local path as a binary.