mirror of
https://github.com/mii443/usls.git
synced 2025-08-22 15:45:41 +00:00
v0.0.16: Add Viewer
for image show
* Add `Viewer` for image-show * Add .`with_ixx()` to simplify model building with `Options` * Update `MinOptMax`
This commit is contained in:
@ -1,130 +1,35 @@
|
||||
use usls::{models::Florence2, Annotator, DataLoader, Options, Task};
|
||||
|
||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let batch_size = 3;
|
||||
|
||||
// vision encoder
|
||||
let options_vision_encoder = Options::default()
|
||||
.with_model("florence2/base-vision-encoder.onnx")?
|
||||
.with_i00((1, 2, 4).into())
|
||||
.with_i02((512, 768, 800).into())
|
||||
.with_i03((512, 768, 800).into())
|
||||
.with_profile(false)
|
||||
.with_cuda(0);
|
||||
.with_model("florence2/base-vision-encoder-f16.onnx")?
|
||||
.with_ixx(0, 2, (512, 768, 800).into())
|
||||
.with_ixx(0, 3, 768.into())
|
||||
.with_ixx(0, 0, (1, batch_size as _, 8).into());
|
||||
|
||||
// text embed
|
||||
let options_text_embed = Options::default()
|
||||
.with_model("florence2/base-embed-tokens.onnx")?
|
||||
.with_i00((1, 2, 4).into())
|
||||
.with_i01((1, 2, 20).into()) // seq_length
|
||||
.with_model("florence2/base-embed-tokens-f16.onnx")?
|
||||
.with_tokenizer("florence2/tokenizer.json")?
|
||||
.with_profile(false);
|
||||
.with_batch(batch_size);
|
||||
|
||||
// transformer encoder
|
||||
let options_encoder = Options::default()
|
||||
.with_model("florence2/base-encoder.onnx")?
|
||||
.with_i00((1, 2, 4).into())
|
||||
.with_i01((1, 2, 300).into()) // encoder_sequence_length
|
||||
.with_i10((1, 2, 4).into())
|
||||
.with_i11((1, 2, 300).into()) // encoder_sequence_length
|
||||
.with_profile(false);
|
||||
.with_model("florence2/base-encoder-f16.onnx")?
|
||||
.with_batch(batch_size);
|
||||
|
||||
// transformer decoder
|
||||
let options_decoder = Options::default()
|
||||
.with_model("florence2/base-decoder.onnx")?
|
||||
.with_i00((1, 2, 4).into())
|
||||
.with_i01((1, 2, 300).into()) // encoder_sequence_length
|
||||
.with_i10((1, 2, 4).into())
|
||||
.with_i11((1, 2, 300).into()) // encoder_sequence_length
|
||||
.with_i20((1, 2, 4).into())
|
||||
.with_i21((1, 2, 300).into()) // encoder_sequence_length
|
||||
.with_profile(false);
|
||||
.with_model("florence2/base-decoder-f16.onnx")?
|
||||
.with_batch(batch_size);
|
||||
|
||||
// transformer decoder merged
|
||||
let options_decoder_merged = Options::default()
|
||||
.with_model("florence2/base-decoder-merged.onnx")?
|
||||
// encoder_attention_mask
|
||||
.with_i00((1, 2, 4).into())
|
||||
.with_i01((1, 2, 300).into()) // encoder_sequence_length
|
||||
// encoder_hidden_states
|
||||
.with_i10((1, 2, 4).into())
|
||||
.with_i11((1, 2, 300).into()) // encoder_sequence_length
|
||||
// inputs_embeds
|
||||
.with_i20((1, 2, 4).into())
|
||||
.with_i21((1, 2, 300).into()) // encoder_sequence_length
|
||||
// past_key_values.0.decoder.key
|
||||
.with_i30((1, 2, 4).into())
|
||||
.with_i32_((1, 2, 1).into())
|
||||
// past_key_values.0.decoder.value
|
||||
.with_i40((1, 2, 4).into())
|
||||
.with_i42((1, 2, 1).into())
|
||||
// past_key_values.0.encoder.key
|
||||
.with_i50((1, 2, 4).into())
|
||||
.with_i52((1, 2, 1).into())
|
||||
// past_key_values.0.decoder.value
|
||||
.with_i60((1, 2, 4).into())
|
||||
.with_i62((1, 2, 1).into())
|
||||
// past_key_values.1.decoder.key
|
||||
.with_i70((1, 2, 4).into())
|
||||
.with_i72((1, 2, 1).into())
|
||||
// past_key_values.1.decoder.value
|
||||
.with_i80((1, 2, 4).into())
|
||||
.with_i82((1, 2, 1).into())
|
||||
// past_key_values.1.encoder.key
|
||||
.with_i90((1, 2, 4).into())
|
||||
.with_i92((1, 2, 1).into())
|
||||
// past_key_values.1.decoder.value
|
||||
.with_i100((1, 2, 4).into())
|
||||
.with_i102((1, 2, 1).into())
|
||||
// past_key_values.2.decoder.key
|
||||
.with_i110((1, 2, 4).into())
|
||||
.with_i112((1, 2, 1).into())
|
||||
// past_key_values.2.decoder.value
|
||||
.with_i120((1, 2, 4).into())
|
||||
.with_i122((1, 2, 1).into())
|
||||
// past_key_values.2.encoder.key
|
||||
.with_i130((1, 2, 4).into())
|
||||
.with_i132((1, 2, 1).into())
|
||||
// past_key_values.2.decoder.value
|
||||
.with_i140((1, 2, 4).into())
|
||||
.with_i142((1, 2, 1).into())
|
||||
// past_key_values.3.decoder.key
|
||||
.with_i150((1, 2, 4).into())
|
||||
.with_i152((1, 2, 1).into())
|
||||
// past_key_values.3.decoder.value
|
||||
.with_i160((1, 2, 4).into())
|
||||
.with_i162((1, 2, 1).into())
|
||||
// past_key_values.3.encoder.key
|
||||
.with_i170((1, 2, 4).into())
|
||||
.with_i172((1, 2, 1).into())
|
||||
// past_key_values.3.decoder.value
|
||||
.with_i180((1, 2, 4).into())
|
||||
.with_i182((1, 2, 1).into())
|
||||
// past_key_values.4.decoder.key
|
||||
.with_i190((1, 2, 4).into())
|
||||
.with_i192((1, 2, 1).into())
|
||||
// past_key_values.4.decoder.value
|
||||
.with_i200((1, 2, 4).into())
|
||||
.with_i202((1, 2, 1).into())
|
||||
// past_key_values.4.encoder.key
|
||||
.with_i210((1, 2, 4).into())
|
||||
.with_i212((1, 2, 1).into())
|
||||
// past_key_values.4.decoder.value
|
||||
.with_i220((1, 2, 4).into())
|
||||
.with_i222((1, 2, 1).into())
|
||||
// past_key_values.5.decoder.key
|
||||
.with_i230((1, 2, 4).into())
|
||||
.with_i232((1, 2, 1).into())
|
||||
// past_key_values.5.decoder.value
|
||||
.with_i240((1, 2, 4).into())
|
||||
.with_i242((1, 2, 1).into())
|
||||
// past_key_values.5.encoder.key
|
||||
.with_i250((1, 2, 4).into())
|
||||
.with_i252((1, 2, 1).into())
|
||||
// past_key_values.5.decoder.value
|
||||
.with_i260((1, 2, 4).into())
|
||||
.with_i262((1, 2, 1).into())
|
||||
//use_cache_branch
|
||||
.with_i270((1, 2, 1).into())
|
||||
.with_profile(false);
|
||||
.with_model("florence2/base-decoder-merged-f16.onnx")?
|
||||
.with_batch(batch_size);
|
||||
|
||||
// build model
|
||||
let mut model = Florence2::new(
|
||||
|
Reference in New Issue
Block a user