dinov2 - read images from disk and compute the class probabilities (#503)

* Load the image from disk and convert it to a tensor.

* Tweak the function name.
This commit is contained in:
Laurent Mazare
2023-08-18 15:50:33 +01:00
committed by GitHub
parent 95462c6a2e
commit 4f1541526c
4 changed files with 48 additions and 24 deletions

View File

@ -85,7 +85,7 @@ impl LayerScale {
impl Module for LayerScale {
fn forward(&self, xs: &Tensor) -> Result<Tensor> {
xs * &self.gamma
xs.broadcast_mul(&self.gamma)
}
}
@ -306,10 +306,17 @@ pub fn main() -> anyhow::Result<()> {
let device = candle_examples::device(args.cpu)?;
// TODO: apply imagenet normalization.
let image = candle_examples::load_image(args.image)?;
println!("loaded image {image:?}");
let weights = unsafe { candle::safetensors::MmapedFile::new(args.model)? };
let weights = weights.deserialize()?;
let vb = VarBuilder::from_safetensors(vec![weights], DType::F32, &device);
let _model = vit_small(vb)?;
let model = vit_small(vb)?;
println!("model built");
let logits = model.forward(&image.unsqueeze(0)?)?;
let prs = candle_nn::ops::softmax(&logits, D::Minus1)?;
println!("{prs}");
Ok(())
}