Buckets:

hf-doc-build/doc / diffusers /v0.43.0 /id /api /image_processor.md
mishig's picture
|
download
raw
26.1 kB

Pemroses Gambar VAE

VaeImageProcessor menyediakan API terpadu bagi StableDiffusionPipeline untuk menyiapkan input gambar untuk encoding VAE dan memproses output pasca-decoding. Ini mencakup transformasi seperti pengubahan ukuran, normalisasi, dan konversi antara PIL Image, PyTorch, dan array NumPy.

Semua pipeline dengan VaeImageProcessor menerima PIL Image, tensor PyTorch, atau array NumPy sebagai input gambar dan mengembalikan output berdasarkan argumen output_type dari pengguna. Anda dapat meneruskan latens gambar yang sudah dienkod secara langsung ke pipeline dan mengembalikan latens dari pipeline sebagai output tertentu dengan argumen output_type (misalnya output_type="latent"). Hal ini memungkinkan Anda mengambil latens yang dihasilkan dari satu pipeline dan meneruskannya ke pipeline lain sebagai input tanpa keluar dari ruang latens. Ini juga membuat penggunaan beberapa pipeline bersama menjadi jauh lebih mudah dengan meneruskan tensor PyTorch secara langsung antar pipeline yang berbeda.

VaeImageProcessor[[diffusers.VaeImageProcessor]]

diffusers.VaeImageProcessor[[diffusers.VaeImageProcessor]]

diffusers.VaeImageProcessor(do_resize: bool = True, vae_scale_factor: int = 8, vae_latent_channels: int = 4, resample: str = 'lanczos', reducing_gap: int | None = None, do_normalize: bool = True, do_binarize: bool = False, do_convert_rgb: bool = False, do_convert_grayscale: bool = False)

Sumber

Parameter:

do_resize (bool, opsional, defaultnya True) : Apakah akan menurunkan skala dimensi (tinggi, lebar) gambar menjadi kelipatan dari vae_scale_factor. Dapat menerima argumen height dan width dari metode image_processor.VaeImageProcessor.preprocess().

vae_scale_factor (int, opsional, defaultnya 8) : Faktor skala VAE. Jika do_resize adalah True, gambar akan di-resize secara otomatis menjadi kelipatan dari faktor ini.

resample (str, opsional, defaultnya lanczos) : Filter resampling yang digunakan saat mengubah ukuran gambar.

do_normalize (bool, opsional, defaultnya True) : Apakah akan menormalisasi gambar ke [-1,1].

do_binarize (bool, opsional, defaultnya False) : Apakah akan mbinerisasi gambar menjadi 0/1.

do_convert_rgb (bool, opsional, defaultnya False) : Apakah akan mengonversi gambar ke format RGB.

do_convert_grayscale (bool, opsional, defaultnya False) : Apakah akan mengonversi gambar ke format grayscale.

Pemroses gambar untuk VAE.

apply_overlay[[diffusers.VaeImageProcessor.apply_overlay]]

apply_overlay(mask: Image, init_image: Image, image: Image, crop_coords: tuple[int, int, int, int] | None = None)

Sumber

Parameter:

mask (PIL.Image.Image) : Gambar mask yang menyoroti area untuk ditumpangkan.

init_image (PIL.Image.Image) : Gambar asli tempat overlay diterapkan.

image (PIL.Image.Image) : Gambar yang akan ditumpangkan ke gambar asli.

crop_coords (tuple[int, int, int, int], opsional) : Koordinat untuk memotong gambar. Jika diberikan, gambar akan dipotong sesuai koordinat tersebut.

Mengembalikan: PIL.Image.Image

Gambar akhir dengan overlay yang diterapkan.

Menerapkan overlay dari mask dan gambar inpainted pada gambar asli.

binarize[[diffusers.VaeImageProcessor.binarize]]

binarize(image: Image)

Sumber

Parameter:

image (PIL.Image.Image) : Input gambar, harus berupa gambar PIL.

Mengembalikan: PIL.Image.Image

Gambar yang telah dibiarkan. Nilai kurang dari 0.5 diatur menjadi 0, nilai lebih dari 0.5 diatur menjadi 1.

Buat sebuah mask.

blur[[diffusers.VaeImageProcessor.blur]]

blur(image: Image, blur_factor: int = 4)

Sumber

Parameter:

image (PIL.Image.Image) : Gambar PIL yang akan dikonversi menjadi grayscale.

Mengembalikan: PIL.Image.Image

Gambar PIL yang telah dikonversi menjadi skala abu-abu.

Menerapkan Gaussian blur pada gambar.

convert_to_grayscale[[diffusers.VaeImageProcessor.convert_to_grayscale]]

convert_to_grayscale(image: Image)

Sumber

Parameter:

image (PIL.Image.Image) : Gambar input yang akan dikonversi.

Mengembalikan: PIL.Image.Image

Gambar yang dikonversi menjadi skala abu-abu.

Mengonversi gambar PIL yang diberikan menjadi grayscale.

convert_to_rgb[[diffusers.VaeImageProcessor.convert_to_rgb]]

convert_to_rgb(image: Image)

Sumber

Parameter:

image (PIL.Image.Image) : Gambar PIL yang akan dikonversi ke RGB.

Mengembalikan: PIL.Image.Image

Gambar PIL yang telah dikonversi ke RGB.

Mengonversi gambar PIL ke format RGB.

denormalisasi[[diffusers.VaeImageProcessor.denormalize]]

denormalize(images: typing.Union[numpy.ndarray, torch.Tensor])

Sumber

Parameter:

images (np.ndarray atau torch.Tensor) : Array gambar untuk dinormalisasi ulang.

Mengembalikan: np.ndarray atau torch.Tensor

Array gambar yang dinormalisasi.

Denormalisasi array gambar ke [0,1].

get_crop_region[[diffusers.VaeImageProcessor.get_crop_region]]

get_crop_region(mask_image: Image, width: int, height: int, pad = 0)

Sumber

Parameter:

mask_image (PIL.Image.Image) : Gambar mask.

width (int) : Lebar gambar yang akan diproses.

height (int) : Tinggi gambar yang akan diproses.

pad (int, opsional) : Padding yang akan ditambahkan ke area crop. Defaultnya 0.

Mengembalikan: tuple

(x1, y1, x2, y2) merepresentasikan area persegi panjang yang berisi semua area ter-mask pada sebuah gambar dan sesuai dengan rasio aspek asli.

Menemukan area persegi panjang yang berisi semua area yang dimasker dalam sebuah gambar, lalu memperluas area tersebut agar sesuai dengan rasio aspek gambar asli; misalnya, jika pengguna menggambar mask pada area 128x32, dan dimensi untuk pemrosesan adalah 512x512, area tersebut akan diperluas menjadi 128x128.

get_default_height_width[[diffusers.VaeImageProcessor.get_default_height_width]]

get_default_height_width(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor], height: int | None = None, width: int | None = None)

Sumber

Parameter:

image (PIL.Image.Image | np.ndarray | torch.Tensor) : Input gambar, yang dapat berupa gambar PIL, array NumPy, atau tensor PyTorch. Jika berupa array NumPy, bentuknya harus [batch, height, width] atau [batch, height, width, channels]. Jika berupa tensor PyTorch, bentuknya harus [batch, channels, height, width].

height (int | None, opsional, defaultnya None) : Tinggi gambar yang dipreprocess. Jika None, tinggi dari input image akan digunakan.

width (int | None, opsional, defaultnya None) : Lebar dari gambar yang telah dipreprocess. Jika None, lebar dari input image akan digunakan.

Mengembalikan: tuple[int, int]

Tuple yang berisi tinggi dan lebar, keduanya di-resize ke kelipatan bilangan bulat terdekat dari vae_scale_factor.

Mengembalikan tinggi dan lebar gambar, yang diskalakan ke bawah menjadi kelipatan bilangan bulat terdekat dari vae_scale_factor.

normalize[[diffusers.VaeImageProcessor.normalize]]

normalize(images: typing.Union[numpy.ndarray, torch.Tensor])

Sumber

Parameter:

images (np.ndarray atau torch.Tensor) : Array gambar yang akan dinormalisasi.

Mengembalikan: np.ndarray atau torch.Tensor

Array gambar ternormalisasi.

Normalisasi array gambar ke [-1,1].

numpy_to_pil[[diffusers.VaeImageProcessor.numpy_to_pil]]

numpy_to_pil(images: ndarray)

Sumber

Parameter:

images (np.ndarray) : Array gambar untuk dikonversi ke format PIL.

Mengembalikan: list[PIL.Image.Image]

Daftar gambar PIL.

Mengonversi gambar numpy atau batch gambar menjadi gambar PIL.

numpy_to_pt[[diffusers.VaeImageProcessor.numpy_to_pt]]

numpy_to_pt(images: ndarray)

Sumber

Parameter:

images (np.ndarray) : Array gambar NumPy yang akan dikonversi ke format PyTorch.

Mengembalikan: torch.Tensor

Representasi tensor PyTorch dari gambar-gambar tersebut.

Mengonversi gambar NumPy menjadi tensor PyTorch.

pil_to_numpy[[diffusers.VaeImageProcessor.pil_to_numpy]]

pil_to_numpy(images: list[PIL.Image.Image] | PIL.Image.Image)

Sumber

Parameter:

images (PIL.Image.Image atau list[PIL.Image.Image]) : Gambar PIL atau daftar gambar yang akan dikonversi ke format NumPy.

Mengembalikan: np.ndarray

Representasi array NumPy dari gambar-gambar tersebut.

Mengonversi gambar PIL atau daftar gambar PIL menjadi array NumPy.

postprocess[[diffusers.VaeImageProcessor.postprocess]]

postprocess(image: Tensor, output_type: str = 'pil', do_denormalize: list[bool] | None = None)

Sumber

Parameter:

image (torch.Tensor) : Input gambar, harus berupa tensor pytorch dengan bentuk B x C x H x W.

output_type (str, opsional, defaultnya pil) : Jenis output gambar, dapat berupa salah satu dari pil, np, pt, latent.

do_denormalize (list[bool], opsional, defaultnya None) : Apakah akan mendenormalisasi gambar ke [0,1]. Jika None, akan menggunakan nilai do_normalize dalam konfigurasi VaeImageProcessor.

Mengembalikan: PIL.Image.Image, np.ndarray atau torch.Tensor

Gambar yang telah diproses pascaproses.

Proses pascaproses output gambar dari tensor ke output_type.

preprocess[[diffusers.VaeImageProcessor.preprocess]]

preprocess(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], height: int | None = None, width: int | None = None, resize_mode: str = 'default', crops_coords: tuple[int, int, int, int] | None = None)

Sumber

Parameter:

image (PipelineImageInput) : Input gambar, format yang diterima adalah gambar PIL, array NumPy, tensor PyTorch; juga menerima daftar format yang didukung.

height (int, opsional) : Tinggi pada gambar yang telah dipreprocess. Jika None, akan menggunakan get_default_height_width() untuk mendapatkan tinggi default.

width (int, opsional) : Lebar dalam praproses. Jika None, akan menggunakan get_default_height_width()` untuk mendapatkan lebar default.

resize_mode (str, opsional, defaultnya default) : Mode resize, dapat berupa default atau fill. Jika default, gambar akan di-resize agar muat di dalam lebar dan tinggi yang ditentukan, dan rasio aspek asli mungkin tidak dipertahankan. Jika fill, gambar akan di-resize agar muat di dalam lebar dan tinggi yang ditentukan dengan mempertahankan rasio aspek, kemudian gambar diposisikan di tengah dimensi tersebut, mengisi area kosong dengan data dari gambar. Jika crop, gambar akan di-resize agar muat di dalam lebar dan tinggi yang ditentukan dengan mempertahankan rasio aspek, kemudian gambar diposisikan di tengah dimensi tersebut, memotong bagian yang berlebih. Perhatikan bahwa resize_mode fill dan crop hanya didukung untuk input gambar PIL.

crops_coords (list[tuple[int, int, int, int]], opsional, defaultnya None) : Koordinat pemotongan untuk setiap gambar dalam batch. Jika None, gambar tidak akan dipotong.

Mengembalikan: torch.Tensor

Gambar yang telah dipreprocess.

Praproses input gambar.

pt_to_numpy[[diffusers.VaeImageProcessor.pt_to_numpy]]

pt_to_numpy(images: Tensor)

Sumber

Parameter:

images (torch.Tensor) : Tensor PyTorch yang akan dikonversi ke format NumPy.

Mengembalikan: np.ndarray

Representasi array NumPy dari gambar-gambar tersebut.

Mengonversi tensor PyTorch menjadi gambar NumPy.

resize[[diffusers.VaeImageProcessor.resize]]

resize(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor], height: int, width: int, resize_mode: str = 'default')

Sumber

Parameter:

image (PIL.Image.Image, np.ndarray atau torch.Tensor) : Input gambar, dapat berupa gambar PIL, array numpy atau tensor pytorch.

height (int) : Tinggi untuk mengubah ukuran.

width (int) : Lebar untuk mengubah ukuran.

resize_mode (str, opsional, defaultnya default) : Mode resize yang akan digunakan, dapat berupa default atau fill. Jika default, gambar akan di-resize agar muat di dalam lebar dan tinggi yang ditentukan, dan rasio aspek asli mungkin tidak dipertahankan. Jika fill, gambar akan di-resize agar muat di dalam lebar dan tinggi yang ditentukan dengan mempertahankan rasio aspek, kemudian gambar diposisikan di tengah dimensi tersebut, mengisi area kosong dengan data dari gambar. Jika crop, gambar akan di-resize agar muat di dalam lebar dan tinggi yang ditentukan dengan mempertahankan rasio aspek, kemudian gambar diposisikan di tengah dimensi tersebut, memotong bagian yang berlebih. Perhatikan bahwa resize_mode fill dan crop hanya didukung untuk input gambar PIL.

Mengembalikan: PIL.Image.Image, np.ndarray atau torch.Tensor

Gambar yang telah diubah ukurannya.

Ukurkan ulang gambar.

InpaintProcessor[[diffusers.InpaintProcessor]]

InpaintProcessor menerima input mask dan image lalu memproses keduanya secara bersama. Secara opsional, ia dapat menerima padding_mask_crop dan menerapkan overlay mask.

diffusers.InpaintProcessor[[diffusers.InpaintProcessor]]

diffusers.InpaintProcessor(do_resize: bool = True, vae_scale_factor: int = 8, vae_latent_channels: int = 4, resample: str = 'lanczos', reducing_gap: int | None = None, do_normalize: bool = True, do_binarize: bool = False, do_convert_grayscale: bool = False, mask_do_normalize: bool = False, mask_do_binarize: bool = True, mask_do_convert_grayscale: bool = True)

Sumber

Pemroses gambar untuk inpainting gambar dan mask.

postprocess[[diffusers.InpaintProcessor.postprocess]]

postprocess(image: Tensor, output_type: str = 'pil', original_image: PIL.Image.Image | None = None, original_mask: PIL.Image.Image | None = None, crops_coords: tuple[int, int, int, int] | None = None)

Sumber

Proses pascaproses gambar, terapkan overlay mask secara opsional

preprocess[[diffusers.InpaintProcessor.preprocess]]

preprocess(image: Image, mask: PIL.Image.Image | None = None, height: int | None = None, width: int | None = None, padding_mask_crop: int | None = None)

Sumber

Praproses gambar dan mask.

VaeImageProcessorLDM3D[[diffusers.VaeImageProcessorLDM3D]]

VaeImageProcessorLDM3D menerima input RGB dan kedalaman serta mengembalikan output RGB dan kedalaman.

diffusers.VaeImageProcessorLDM3D[[diffusers.VaeImageProcessorLDM3D]]

diffusers.VaeImageProcessorLDM3D(do_resize: bool = True, vae_scale_factor: int = 8, resample: str = 'lanczos', do_normalize: bool = True)

Sumber

Parameter:

do_resize (bool, opsional, defaultnya True) : Apakah akan menurunkan skala dimensi (tinggi, lebar) gambar menjadi kelipatan dari vae_scale_factor.

vae_scale_factor (int, opsional, defaultnya 8) : Faktor skala VAE. Jika do_resize adalah True, gambar akan di-resize secara otomatis menjadi kelipatan dari faktor ini.

resample (str, opsional, defaultnya lanczos) : Filter resampling yang digunakan saat mengubah ukuran gambar.

do_normalize (bool, opsional, defaultnya True) : Apakah akan menormalisasi gambar ke [-1,1].

Pemroses gambar untuk VAE LDM3D.

depth_pil_to_numpy[[diffusers.VaeImageProcessorLDM3D.depth_pil_to_numpy]]

depth_pil_to_numpy(images: list[PIL.Image.Image] | PIL.Image.Image)

Sumber

Parameter:

images (list[PIL.Image.Image, PIL.Image.Image]) : Gambar input atau daftar gambar yang akan dikonversi.

Mengembalikan: np.ndarray

Array NumPy dari gambar yang telah dikonversi.

Mengonversi gambar PIL atau daftar gambar PIL menjadi array NumPy.

numpy_to_depth[[diffusers.VaeImageProcessorLDM3D.numpy_to_depth]]

numpy_to_depth(images: ndarray)

Sumber

Parameter:

images (np.ndarray) : Array NumPy input dari gambar kedalaman, yang dapat berupa satu gambar atau batch.

Mengembalikan: list[PIL.Image.Image]

Daftar gambar PIL yang dikonversi dari gambar kedalaman NumPy input.

Mengonversi gambar kedalaman NumPy atau kumpulan gambar menjadi daftar gambar PIL.

numpy_to_pil[[diffusers.VaeImageProcessorLDM3D.numpy_to_pil]]

numpy_to_pil(images: ndarray)

Sumber

Parameter:

images (np.ndarray) : Array NumPy input berisi gambar, yang bisa berupa satu gambar atau batch.

Mengembalikan: list[PIL.Image.Image]

Daftar gambar PIL yang dikonversi dari array NumPy input.

Mengonversi gambar NumPy atau batch gambar menjadi daftar gambar PIL.

preprocess[[diffusers.VaeImageProcessorLDM3D.preprocess]]

preprocess(rgb: typing.Union[torch.Tensor, PIL.Image.Image, numpy.ndarray], depth: typing.Union[torch.Tensor, PIL.Image.Image, numpy.ndarray], height: int | None = None, width: int | None = None, target_res: int | None = None)

Sumber

Parameter:

rgb (torch.Tensor | PIL.Image.Image | np.ndarray) : Gambar input RGB, yang dapat berupa satu gambar atau batch.

depth (torch.Tensor | PIL.Image.Image | np.ndarray) : Gambar input kedalaman, yang dapat berupa satu gambar atau batch.

height (int | None, opsional, defaultnya None) : Tinggi yang diinginkan untuk gambar yang diproses. Jika None, defaultnya adalah tinggi gambar input.

width (int | None, opsional, defaultnya None) : Lebar yang diinginkan untuk gambar yang diproses. Jika None, defaultnya adalah lebar gambar input.

target_res (int | None, opsional, defaultnya None) : Resolusi target untuk mengubah ukuran gambar. Jika ditentukan, menimpa tinggi dan lebar.

Mengembalikan: tuple[torch.Tensor, torch.Tensor]

Tuple yang berisi gambar RGB dan kedalaman yang telah diproses sebagai tensor PyTorch.

Praproses input gambar. Format yang diterima adalah gambar PIL, array NumPy, atau tensor PyTorch.

rgblike_to_depthmap[[diffusers.VaeImageProcessorLDM3D.rgblike_to_depthmap]]

rgblike_to_depthmap(image: typing.Union[numpy.ndarray, torch.Tensor])

Sumber

Mengonversi gambar kedalaman mirip RGB menjadi peta kedalaman.

PixArtImageProcessor[[diffusers.PixArtImageProcessor]]

diffusers.PixArtImageProcessor[[diffusers.PixArtImageProcessor]]

diffusers.PixArtImageProcessor(do_resize: bool = True, vae_scale_factor: int = 8, resample: str = 'lanczos', do_normalize: bool = True, do_binarize: bool = False, do_convert_grayscale: bool = False)

Sumber

Parameter:

do_resize (bool, opsional, defaultnya True) : Apakah akan menurunkan skala dimensi (tinggi, lebar) gambar menjadi kelipatan dari vae_scale_factor. Dapat menerima argumen height dan width dari metode image_processor.VaeImageProcessor.preprocess().

vae_scale_factor (int, opsional, defaultnya 8) : Faktor skala VAE. Jika do_resize adalah True, gambar akan di-resize secara otomatis menjadi kelipatan dari faktor ini.

resample (str, opsional, defaultnya lanczos) : Filter resampling yang digunakan saat mengubah ukuran gambar.

do_normalize (bool, opsional, defaultnya True) : Apakah akan menormalisasi gambar ke [-1,1].

do_binarize (bool, opsional, defaultnya False) : Apakah akan mbinerisasi gambar menjadi 0/1.

do_convert_rgb (bool, opsional, defaultnya False) : Apakah akan mengonversi gambar ke format RGB.

do_convert_grayscale (bool, opsional, defaultnya False) : Apakah akan mengonversi gambar ke format grayscale.

Pemroses gambar untuk pengubahan ukuran dan pemotongan gambar PixArt.

classify_height_width_bin[[diffusers.PixArtImageProcessor.classify_height_width_bin]]

classify_height_width_bin(height: int, width: int, ratios: dict)

Sumber

Parameter:

height (int) : Tinggi gambar.

width (int) : Lebar gambar.

ratios (dict) : Kamus di mana kuncinya adalah rasio aspek dan nilainya adalah tuple (tinggi, lebar).

Mengembalikan: tuple[int, int]

Tinggi dan lebar terbin terdekat.

Mengembalikan tinggi dan lebar yang telah dibin berdasarkan rasio aspek.

resize_and_crop_tensor[[diffusers.PixArtImageProcessor.resize_and_crop_tensor]]

resize_and_crop_tensor(samples: Tensor, new_width: int, new_height: int)

Sumber

Parameter:

samples (torch.Tensor) : Tensor dengan bentuk (N, C, H, W) di mana N adalah ukuran batch, C adalah jumlah channel, H adalah tinggi, dan W adalah lebar.

new_width (int) : Lebar yang diinginkan untuk gambar keluaran.

new_height (int) : Tinggi yang diinginkan untuk gambar output.

Mengembalikan: torch.Tensor

Tensor yang berisi gambar yang telah diubah ukurannya dan dipotong.

Mengubah ukuran dan memotong tensor gambar ke dimensi yang ditentukan.

IPAdapterMaskProcessor[[diffusers.IPAdapterMaskProcessor]]

diffusers.IPAdapterMaskProcessor[[diffusers.IPAdapterMaskProcessor]]

diffusers.IPAdapterMaskProcessor(do_resize: bool = True, vae_scale_factor: int = 8, resample: str = 'lanczos', do_normalize: bool = False, do_binarize: bool = True, do_convert_grayscale: bool = True)

Sumber

Parameter:

do_resize (bool, opsional, defaultnya True) : Apakah akan menurunkan skala dimensi (tinggi, lebar) gambar menjadi kelipatan dari vae_scale_factor.

vae_scale_factor (int, opsional, defaultnya 8) : Faktor skala VAE. Jika do_resize adalah True, gambar akan di-resize secara otomatis menjadi kelipatan dari faktor ini.

resample (str, opsional, defaultnya lanczos) : Filter resampling yang digunakan saat mengubah ukuran gambar.

do_normalize (bool, opsional, defaultnya False) : Apakah akan menormalisasi gambar ke [-1,1].

do_binarize (bool, opsional, defaultnya True) : Apakah akan mbinerisasi gambar menjadi 0/1.

do_convert_grayscale (bool, opsional, defaultnya True) : Apakah akan mengonversi gambar ke format grayscale.

Pemroses gambar untuk masker gambar IP Adapter.

downsample[[diffusers.IPAdapterMaskProcessor.downsample]]

downsample(mask: Tensor, batch_size: int, num_queries: int, value_embed_dim: int)

Sumber

Parameter:

mask (torch.Tensor) : Tensor mask input yang dihasilkan dengan IPAdapterMaskProcessor.preprocess().

batch_size (int) : Ukuran batch.

num_queries (int) : Jumlah query.

value_embed_dim (int) : Dimensi dari value embeddings.

Mengembalikan: torch.Tensor

Tensor mask yang telah di-downsample.

Menurunkan sampel tensor mask yang diberikan agar sesuai dengan dimensi yang diharapkan untuk scaled dot-product attention. Jika rasio aspek mask tidak cocok dengan rasio aspek gambar keluaran, peringatan akan diterbitkan.

Xet Storage Details

Size:
26.1 kB
·
Xet hash:
865a124c16016e28092da8a0570e98c4bbc30dd7bc9336f7ba759f6e473f7b01

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.