Skip to main content

SynthSegParams

Struct SynthSegParams 

Source
pub struct SynthSegParams {
    pub version: SynthSegVersion,
    pub crop: Option<usize>,
    pub flip_averaging: bool,
    pub topology_cleanup: bool,
    pub sigma_smoothing: f64,
    pub inference: SynthSegInference,
    pub head_crop: Option<usize>,
    pub posteriors: PosteriorPrecision,
}
Expand description

SynthSeg inference parameters.

Fields§

§version: SynthSegVersion

Which generation of weights is being run — this selects the label table, so it must match the .onnx being passed in.

§crop: Option<usize>

Optional cubic centre-crop, in voxels at 1 mm, applied before inference (rounded up to a multiple of 32). None — the default, and the SynthSeg CLI’s — processes the whole volume. Note that the CLI’s --crop help text claims a default of 192, but its argparse default is in fact None; matching the CLI means cropping nothing.

§flip_averaging: bool

Average the posteriors with a left-right flipped second pass (SynthSeg’s default). Doubles inference time; --fast turns it off.

§topology_cleanup: bool

Reset each topological class to its largest connected component (SynthSeg’s default). --fast turns it off.

§sigma_smoothing: f64

Gaussian blur applied to the posteriors, in voxels (SynthSeg’s default is 0.5). Zero disables it.

§inference: SynthSegInference

Whole-volume (default, the CLI’s) or sliding-window inference.

§head_crop: Option<usize>

Crop the padded volume to the head before inference: the bounding box of the largest connected region brighter than 10 % of the normalised intensity range, grown by this many voxels on every side and rounded out to the pooling lattice. Everything outside it is background. None (the default, and the CLI’s) runs on the whole padded volume.

It saves memory and time only where there is empty space around the head (wide-FOV acquisitions, e.g. a 256³ field of view). When the head fills the field of view, as on typical GRE and MP2RAGE head scans (and their neck), the box plus margin is the whole padded volume and the run is identical to None, at no extra cost.

§posteriors: PosteriorPrecision

How the posteriors are stored (the default, single precision, is the CLI’s).

Implementations§

Source§

impl SynthSegParams

Source

pub fn fast() -> Self

SynthSeg’s --fast: no flip averaging and no topological cleanup. Roughly halves the runtime for a small accuracy cost.

Source

pub fn low_memory() -> Self

Memory-bounded setting for constrained hosts (e.g. 32-bit WASM): the defaults with SynthSegInference::LOW_MEMORY windows, a 16-voxel head crop and half-precision posteriors.

  • The windows are what bring the network under a 4 GB heap; no whole-volume setting fits. 96³ rather than 128³ because 128³ fits only grids up to about 192×256×128.
  • The head crop saves memory and time on wide-FOV scans and changes nothing (at no cost) when the head fills the field of view.
  • Half-precision posteriors save 0.4 GB with no accuracy loss: peak WASM heap 2025 MB against 2418 MB at single precision on a 184×256×128 head, 2138 against 2634 MB on a 180×241×131 one.

It runs no slower than 96³ windows at a step of half a patch (the earlier browser setting): both place the same number of windows on 192×256×128 and 192×256×160 grids, and in back-to-back runs on those two grids it took 0.96–1.00× that setting’s time natively (median of 3 pairs each, 1 and 8 threads) and 0.98–1.00× in a single-threaded WASM build under Node (about 17 and 26 minutes). Converting half-precision values one at a time had made it 1–6 % slower natively; see Posterior::load.

Trait Implementations§

Source§

impl Clone for SynthSegParams

Source§

fn clone(&self) -> SynthSegParams

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SynthSegParams

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SynthSegParams

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl PartialEq for SynthSegParams

Source§

fn eq(&self, other: &SynthSegParams) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for SynthSegParams

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for SynthSegParams

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CloneAny for T
where T: Any + Clone,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSend for T
where T: Any + Send,

§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_sync(self: Box<T>) -> Box<dyn Any + Send + Sync>

Converts Box<Trait> (where Trait: DowncastSync) to Box<dyn Any + Send + Sync>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Converts Arc<Trait> (where Trait: DowncastSync) to Arc<Any>, which can then be downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DynClone for T
where T: Clone,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Serialize for T
where T: Serialize + ?Sized,

Source§

fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>

Source§

fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.