| | from fastai.vision import * |
| | from fastai.vision.learner import cnn_config |
| | from .unet import DynamicUnetWide, DynamicUnetDeep |
| | from .loss import FeatureLoss |
| | from .dataset import * |
| |
|
| | |
| | def gen_inference_wide( |
| | root_folder: Path, weights_name: str, nf_factor: int = 2, arch=models.resnet101) -> Learner: |
| | data = get_dummy_databunch() |
| | learn = gen_learner_wide( |
| | data=data, gen_loss=F.l1_loss, nf_factor=nf_factor, arch=arch |
| | ) |
| | learn.path = root_folder |
| | learn.load(weights_name) |
| | learn.model.eval() |
| | return learn |
| |
|
| |
|
| | def gen_learner_wide( |
| | data: ImageDataBunch, gen_loss, arch=models.resnet101, nf_factor: int = 2 |
| | ) -> Learner: |
| | return unet_learner_wide( |
| | data, |
| | arch=arch, |
| | wd=1e-3, |
| | blur=True, |
| | norm_type=NormType.Spectral, |
| | self_attention=True, |
| | y_range=(-3.0, 3.0), |
| | loss_func=gen_loss, |
| | nf_factor=nf_factor, |
| | ) |
| |
|
| |
|
| | |
| | def unet_learner_wide( |
| | data: DataBunch, |
| | arch: Callable, |
| | pretrained: bool = True, |
| | blur_final: bool = True, |
| | norm_type: Optional[NormType] = NormType, |
| | split_on: Optional[SplitFuncOrIdxList] = None, |
| | blur: bool = False, |
| | self_attention: bool = False, |
| | y_range: Optional[Tuple[float, float]] = None, |
| | last_cross: bool = True, |
| | bottle: bool = False, |
| | nf_factor: int = 1, |
| | **kwargs: Any |
| | ) -> Learner: |
| | "Build Unet learner from `data` and `arch`." |
| | meta = cnn_config(arch) |
| | body = create_body(arch, pretrained) |
| | model = to_device( |
| | DynamicUnetWide( |
| | body, |
| | n_classes=data.c, |
| | blur=blur, |
| | blur_final=blur_final, |
| | self_attention=self_attention, |
| | y_range=y_range, |
| | norm_type=norm_type, |
| | last_cross=last_cross, |
| | bottle=bottle, |
| | nf_factor=nf_factor, |
| | ), |
| | data.device, |
| | ) |
| | learn = Learner(data, model, **kwargs) |
| | learn.split(ifnone(split_on, meta['split'])) |
| | if pretrained: |
| | learn.freeze() |
| | apply_init(model[2], nn.init.kaiming_normal_) |
| | return learn |
| |
|
| |
|
| | |
| |
|
| | |
| | def gen_inference_deep( |
| | root_folder: Path, weights_name: str, arch=models.resnet34, nf_factor: float = 1.5) -> Learner: |
| | data = get_dummy_databunch() |
| | learn = gen_learner_deep( |
| | data=data, gen_loss=F.l1_loss, arch=arch, nf_factor=nf_factor |
| | ) |
| | learn.path = root_folder |
| | learn.load(weights_name) |
| | learn.model.eval() |
| | return learn |
| |
|
| |
|
| | def gen_learner_deep( |
| | data: ImageDataBunch, gen_loss, arch=models.resnet34, nf_factor: float = 1.5 |
| | ) -> Learner: |
| | return unet_learner_deep( |
| | data, |
| | arch, |
| | wd=1e-3, |
| | blur=True, |
| | norm_type=NormType.Spectral, |
| | self_attention=True, |
| | y_range=(-3.0, 3.0), |
| | loss_func=gen_loss, |
| | nf_factor=nf_factor, |
| | ) |
| |
|
| |
|
| | |
| | def unet_learner_deep( |
| | data: DataBunch, |
| | arch: Callable, |
| | pretrained: bool = True, |
| | blur_final: bool = True, |
| | norm_type: Optional[NormType] = NormType, |
| | split_on: Optional[SplitFuncOrIdxList] = None, |
| | blur: bool = False, |
| | self_attention: bool = False, |
| | y_range: Optional[Tuple[float, float]] = None, |
| | last_cross: bool = True, |
| | bottle: bool = False, |
| | nf_factor: float = 1.5, |
| | **kwargs: Any |
| | ) -> Learner: |
| | "Build Unet learner from `data` and `arch`." |
| | meta = cnn_config(arch) |
| | body = create_body(arch, pretrained) |
| | model = to_device( |
| | DynamicUnetDeep( |
| | body, |
| | n_classes=data.c, |
| | blur=blur, |
| | blur_final=blur_final, |
| | self_attention=self_attention, |
| | y_range=y_range, |
| | norm_type=norm_type, |
| | last_cross=last_cross, |
| | bottle=bottle, |
| | nf_factor=nf_factor, |
| | ), |
| | data.device, |
| | ) |
| | learn = Learner(data, model, **kwargs) |
| | learn.split(ifnone(split_on, meta['split'])) |
| | if pretrained: |
| | learn.freeze() |
| | apply_init(model[2], nn.init.kaiming_normal_) |
| | return learn |
| |
|
| |
|
| | |
| |
|