Diffusers documentation

UNet1DModel

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

UNet1DModel

UNet 모델은 Ronneberger et al.에 의해 바이오메디컬 이미지 분할을 위해 처음 소개되었지만, 입력과 동일한 크기의 이미지를 출력하기 때문에 🤗 Diffusers에서도 널리 사용됩니다. 실제 확산(diffusion) 과정을 담당하는 핵심 구성 요소 중 하나입니다. 🤗 Diffusers에는 차원 수와 조건부 모델 여부(conditional model)에 따라 UNet 모델의 여러 변형(variant)이 있습니다. 여기서는 1D UNet 모델입니다.

해당 논문의 초록은 다음과 같습니다:

딥 네트워크의 성공적인 학습에는 수천 개의 라벨이 붙은 학습 샘플이 필요하다는 데에 큰 합의가 있습니다. 본 논문에서는 데이터 증강을 강하게 활용하여 사용 가능한 라벨 샘플을 더 효율적으로 사용하는 네트워크와 학습 전략을 제시합니다. 아키텍처는 컨텍스트를 포착하기 위한 수축 경로와 정확한 위치 파악을 가능하게 하는 대칭적인 확장 경로로 구성됩니다. 이러한 네트워크가 매우 적은 이미지로 끝에서 끝까지(end-to-end) 학습될 수 있으며, 전자 현미경 스택의 신경 구조 분할을 위한 ISBI 챌린지에서 이전의 최선 방법(슬라이딩 윈도우 컨볼루션 네트워크)보다 우수한 성능을 보임을 보여줍니다. 동일한 네트워크를 투과광 현미경 이미지(위상 대비 및 DIC)로 학습하여, 해당 카테고리에서 ISBI 세포 추적 챌린지 2015를 큰 격차로 우승했습니다. 또한, 이 네트워크는 빠릅니다. 최신 GPU에서 512x512 이미지의 분할은 1초 미만으로 수행됩니다. 전체 구현(Caffe 기반)과 학습된 네트워크는 http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net에서 사용할 수 있습니다.

UNet1DModel

클래스 diffusers.UNet1DModel

< >

( sample_size: int = 65536sample_rate: int | None = Nonein_channels: int = 2out_channels: int = 2extra_in_channels: int = 0time_embedding_type: str = 'fourier'time_embedding_dim: int | None = Noneflip_sin_to_cos: bool = Trueuse_timestep_embedding: bool = Falsefreq_shift: float = 0.0down_block_types: tuple = ('DownBlock1DNoSkip', 'DownBlock1D', 'AttnDownBlock1D')up_block_types: tuple = ('AttnUpBlock1D', 'UpBlock1D', 'UpBlock1DNoSkip')mid_block_type: str = 'UNetMidBlock1D'out_block_type: str = Noneblock_out_channels: tuple = (32, 32, 64)act_fn: str = Nonenorm_num_groups: int = 8layers_per_block: int = 1downsample_each_block: bool = False )

매개변수

  • sample_size (int, 선택 사항) — 샘플의 기본 길이입니다. 런타임에 적응할 수 있어야 합니다.
  • in_channels (int, 선택 사항, 기본값 2) — 입력 샘플의 채널 수.
  • out_channels (int, 선택 사항, 기본값 2) — 출력의 채널 수.
  • extra_in_channels (int, 선택 사항, 기본값 0) — 첫 번째 다운 블록의 입력에 추가할 채널 수. 모델이 처음 설계된 것보다 입력 데이터의 채널 수가 많은 경우에 유용합니다.
  • time_embedding_type (str, 선택 사항, 기본값 "fourier") — 사용할 시간 임베딩의 유형입니다.
  • freq_shift (float, 선택 사항, 기본값 0.0) — Fourier time embedding에 사용할 주파수 시프트.
  • flip_sin_to_cos (bool, 선택 사항, 기본값 False) — Fourier time embedding에서 sin을 cos로 전환할지 여부입니다.
  • down_block_types (tuple[str], 선택 사항, 기본값 ("DownBlock1DNoSkip", "DownBlock1D", "AttnDownBlock1D")) — 다운샘플 블록 타입의 튜플.
  • up_block_types (tuple[str], 선택 사항, 기본값 ("AttnUpBlock1D", "UpBlock1D", "UpBlock1DNoSkip")) — 업샘플 블록 타입의 튜플.
  • block_out_channels (tuple[int], 선택 사항, 기본값 (32, 32, 64)) — 블록 출력 채널의 튜플.
  • mid_block_type (str, 선택 사항, 기본값 "UNetMidBlock1D") — UNet 중간 부분에 사용할 블록 유형입니다.
  • out_block_type (str, 선택 사항, 기본값 None) — UNet의 선택적 출력 처리 블록입니다.
  • act_fn (str, 선택 사항, 기본값 None) — UNet 블록에서 선택적으로 사용할 활성화 함수입니다.
  • norm_num_groups (int, 선택 사항, 기본값 8) — 정규화에 사용할 그룹 수입니다.
  • layers_per_block (int, 선택 사항, 기본값 1) — 블록당 레이어 수입니다.
  • downsample_each_block (int, 선택 사항, 기본값 False) — 업샘플링 없이 UNet을 사용하는 실험적 기능입니다.

노이즈 샘플과 타임스텝을 입력받아 샘플 모양의 출력을 반환하는 1D UNet 모델입니다.

이 모델은 ModelMixin에서 상속됩니다. 모든 모델에 대해 구현된 일반적 메서드(다운로드 또는 저장 등)에 대해서는 상위 클래스 문서를 확인하세요.

forward

< >

( sample: Tensortimestep: typing.Union[torch.Tensor, float, int]return_dict: bool = True ) → UNet1DOutput or tuple

매개변수

  • sample (torch.Tensor) — 다음과 같은 형태 (batch_size, num_channels, sample_size)를 가진 노이즈 입력 텐서.
  • timestep (torch.Tensor 또는 float 또는 int) — 입력의 노이즈를 제거할 타임스텝 수.
  • return_dict (bool, 선택 사항, 기본값 True) — 일반 튜플 대신 UNet1DOutput를 반환할지 여부.

반환값

UNet1DOutput 또는 tuple

return_dict가 True이면 UNet1DOutput이 반환되고, 그렇지 않으면 첫 번째 요소가 샘플 텐서인 tuple이 반환됩니다.

UNet1DModel의 forward 메서드입니다.

UNet1DOutput

클래스 diffusers.models.unets.unet_1d.UNet1DOutput

< >

( sample: Tensor )

매개변수

  • sample (torch.Tensor, shape (batch_size, num_channels, sample_size)) — 모델의 마지막 레이어에서 출력된 hidden states입니다.

UNet1DModel의 출력입니다.

Update on GitHub