pub struct BlipCaptioner {
device: Device,
model: Arc<RwLock<Option<BlipForConditionalGeneration>>>,
tokenizer: Arc<RwLock<Option<Tokenizer>>>,
cache_dir: PathBuf,
initialized: Arc<RwLock<bool>>,
config: CaptionConfig,
}Expand description
BLIP-based image captioner using Candle.
Uses the Salesforce/blip-image-captioning-base model from HuggingFace Hub.
Requires the vision feature to be enabled.
Fields§
§device: DeviceDevice to run inference on (CPU or CUDA)
model: Arc<RwLock<Option<BlipForConditionalGeneration>>>BLIP model
tokenizer: Arc<RwLock<Option<Tokenizer>>>Text tokenizer
cache_dir: PathBufCache directory for model files
initialized: Arc<RwLock<bool>>Whether model is initialized
config: CaptionConfigConfiguration
Implementations§
Source§impl BlipCaptioner
impl BlipCaptioner
Sourcepub fn with_config(cache_dir: PathBuf, config: CaptionConfig) -> Self
pub fn with_config(cache_dir: PathBuf, config: CaptionConfig) -> Self
Create with custom configuration.
Sourcefn preprocess_image(&self, image_data: &[u8]) -> Result<Tensor, CaptionError>
fn preprocess_image(&self, image_data: &[u8]) -> Result<Tensor, CaptionError>
Preprocess image data into a tensor suitable for BLIP.
Sourceasync fn generate_caption(
&self,
image_tensor: &Tensor,
) -> Result<String, CaptionError>
async fn generate_caption( &self, image_tensor: &Tensor, ) -> Result<String, CaptionError>
Generate caption from image embedding.
Trait Implementations§
Source§impl ImageCaptioner for BlipCaptioner
impl ImageCaptioner for BlipCaptioner
Source§fn init<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), CaptionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn init<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), CaptionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Initialize the captioner (load model, etc.).
Source§fn caption<'life0, 'life1, 'async_trait>(
&'life0 self,
image_data: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = Result<Option<String>, CaptionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn caption<'life0, 'life1, 'async_trait>(
&'life0 self,
image_data: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = Result<Option<String>, CaptionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Generate a caption for image bytes.
Source§fn is_initialized<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn is_initialized<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Check if the captioner is initialized.
Source§fn model_name(&self) -> &str
fn model_name(&self) -> &str
Get the model name.
Auto Trait Implementations§
impl Freeze for BlipCaptioner
impl !RefUnwindSafe for BlipCaptioner
impl Send for BlipCaptioner
impl Sync for BlipCaptioner
impl Unpin for BlipCaptioner
impl !UnwindSafe for BlipCaptioner
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more