LiteRT
danjacobellis commited on
Commit
70cccaf
·
0 Parent(s):

compressionkit E2A2 codec, redistributed from danjacobellis/E2A2 with the author's permission

Browse files
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: other
3
+ license_name: redistributed-with-permission
4
+ license_link: https://huggingface.co/danjacobellis/E2A2/tree/2c4f517c51cee1af692f2e6e8ffe0bdffd1d248c/image
5
+ ---
6
+
7
+ # E2A2 `image` codec for compressionkit
8
+
9
+ E2A2 (*Encoding Efficient Asymmetric Autoencoders*) `image` is an image codec for 8-bit RGB images; rates are bits per pixel. This repository holds its weights in the layout that [compressionkit](https://github.com/AmbiqAI/compressionkit) v0.3 reads, with an encoder half and a decoder half that load separately.
10
+
11
+ ## Source and permission
12
+
13
+ The weights are redistributed from their original public release, [`danjacobellis/E2A2`, subfolder `image/`, revision `2c4f517c`](https://huggingface.co/danjacobellis/E2A2/tree/2c4f517c51cee1af692f2e6e8ffe0bdffd1d248c/image), with the permission of the author, Dan Jacobellis. Ambiq did not train this codec. Its description, development and evaluation are documented at the original source and on the codec's page, <https://danjacobellis.net/compressors/E2A2_image>. The entropy coder is GGDLPC (<https://danjacobellis.net/GGDLPC/>).
14
+
15
+ Every tensor here equals the tensor of the same name at that revision; this repository divides them into the encoder and decoder halves listed below and adds the files compressionkit uses.
16
+
17
+ ## Files
18
+
19
+ - `encoder/config.json`, `encoder/weights.safetensors` (the `merged.{op}.encoders.*` tensors) and `encoder/entropy.json` (the GGDLPC tables): everything needed to encode.
20
+ - `decoder/config.json`, `decoder/weights.safetensors` (the `merged.{op}.decoder.*` tensors): everything needed to decode. Each `config.json` is the full source configuration, so each half constructs alone.
21
+ - `rd.json`: the rate–distortion curve of the original release, byte-identical to it. The curve is on the 24 Kodak images, bits per pixel, PSNR on the RGB image mapped to [0, 1]. Nothing in the codec or its entropy coder was trained or fitted on Kodak.
22
+ - `web/`: the decoder of each operating point that the compressionkit browser demo offers, as LiteRT files (section below). The compressionkit loaders do not download `web/`.
23
+
24
+ | file | bytes | SHA-256 |
25
+ |---|---|---|
26
+ | `decoder/config.json` | 1,705 | `6903c5761232f47cc403c346f3de62cf146479dc5e3fa1466ad1c060731a9ad8` |
27
+ | `decoder/weights.safetensors` | 2,129,494,748 | `7b67591da5286f595d1cebb0ddc3fefb854df60c18ae6181369e57425c1faa5b` |
28
+ | `encoder/config.json` | 1,705 | `6903c5761232f47cc403c346f3de62cf146479dc5e3fa1466ad1c060731a9ad8` |
29
+ | `encoder/entropy.json` | 8,617 | `a2f231e659315bcd6de5b227252fb2d32fd62b0ebb54f95672996454ac87e7d2` |
30
+ | `encoder/weights.safetensors` | 280,812 | `ad615d04ea5ef07de2e3133cf6a05ac54329ef3261990db664561b324c32c820` |
31
+ | `rd.json` | 865 | `c9aad3b3ee342712b3b8df36e0bd4a398f4ca96e964820fecda993d5b86f73f0` |
32
+
33
+ ## Input, output and operating points
34
+
35
+ Input: float32 `(3, H, W)` = 8-bit sRGB / 127.5 − 1, cropped to whole 64-pixel macroregions. Output: a reconstruction in the same form. Operating points (cumulative latent channels): `[3, 9, 15, 21, 27]`. The stream of a lower operating point is a literal bit-prefix of the stream of the highest, and the rates are entropy-coded bits. compressionkit converts nothing: each codec states its input type and range.
36
+
37
+ ## Using it with compressionkit
38
+
39
+ compressionkit v0.3 is in pre-release; these loaders are part of it.
40
+
41
+ ```python
42
+ from compressionkit.e2a2 import hub
43
+
44
+ # both halves
45
+ config, weights, coder, ops = hub.load_split_from_hub('image')
46
+ model = hub.load_codec(config=config, weights=weights, n_ch=ops[-1])
47
+
48
+ # one half (encode-only shown; half='decoder' for decode-only)
49
+ cfg, w, coder, ops = hub.load_split_from_hub('image', half='encoder')
50
+ encoder = hub.build_partial(cfg, w, ops[-1])
51
+ ```
52
+
53
+ ## Status and limitations
54
+
55
+ - A reference codec for evaluation and development with compressionkit, redistributed as released; not a production model, and not qualified for any product or regulated use.
56
+ - Its quality on data unlike the data of its original release is not characterized here; measure it on your own data (`compressionkit.calibrate` fits an input map on your training split).
57
+ - Maintainer for compressionkit: Dan Jacobellis (Ambiq). Questions about the codec itself: the original source.
58
+
59
+ <!-- web/: hub/e2a2_web.py -->
60
+ ## Browser decoders (`web/`)
61
+
62
+ For each operating point the compressionkit browser demo offers, its decoder as a LiteRT `.tflite` window decoder, which runs in a web browser on LiteRT.js (CPU), with a `.json` beside it that gives its shapes and windowing. A window decodes `chunk` output samples (pixels along each side for the image codec) with `margin` of context on each side; the latent grid is cut into overlapping windows and the outputs joined. The PSNR column is the largest difference between the PSNR of the joined output, decoded in LiteRT.js in Chromium, and that of the full-size PyTorch decode, over the example recordings of the demo. The compressionkit loaders do not download `web/`.
63
+
64
+ | file | operating point | chunk | margin | bytes | PSNR difference (dB, rows) | decoder weights (SHA-256) |
65
+ |---|---|---|---|---|---|---|
66
+ | `web/image_op3_chunk256_m64.tflite` | 3 | 256 pixels | 64 | 228,033,684 | 1.9e-03 (1) | `7b67591da528` |
67
+ | `web/image_op9_chunk256_m64.tflite` | 9 | 256 pixels | 64 | 228,199,572 | 1.2e-04 (1) | `7b67591da528` |
68
+ | `web/image_op15_chunk256_m64.tflite` | 15 | 256 pixels | 64 | 455,569,908 | 1.0e-05 (1) | `7b67591da528` |
69
+ | `web/image_op21_chunk256_m64.tflite` | 21 | 256 pixels | 64 | 607,703,092 | 1.9e-04 (1) | `7b67591da528` |
70
+ | `web/image_op27_chunk256_m64.tflite` | 27 | 256 pixels | 64 | 610,357,300 | 1.3e-04 (1) | `7b67591da528` |
71
+
72
+ Weights fp32, converted from `decoder/weights.safetensors` with litert-torch 0.10.0. The last column gives the start of the SHA-256 of the `decoder/weights.safetensors` it was converted from, which is this repository's.
73
+ <!-- /web/ -->
decoder/config.json ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "codec": "E2A2",
3
+ "format": "e2a2_hub1",
4
+ "source_checkpoint": "e2a2i_g5.pth",
5
+ "modality": "image",
6
+ "dim": 2,
7
+ "input_channels": 3,
8
+ "ps": [
9
+ 32,
10
+ 16,
11
+ 8,
12
+ 4,
13
+ 2
14
+ ],
15
+ "group_sizes": [
16
+ 3,
17
+ 6,
18
+ 6,
19
+ 6,
20
+ 6
21
+ ],
22
+ "cumulative_channels": [
23
+ 3,
24
+ 9,
25
+ 15,
26
+ 21,
27
+ 27
28
+ ],
29
+ "n_groups": 5,
30
+ "affine": true,
31
+ "linear_input": false,
32
+ "decoder_configs": [
33
+ {
34
+ "decoder_ps": 8,
35
+ "decoder_dim": 768,
36
+ "decoder_kernel_size": 3,
37
+ "decoder_depth": 12,
38
+ "decoder_mlp_ratio": 4,
39
+ "decoder_layerscale": true,
40
+ "decoder_layerscale_init": 1e-06
41
+ },
42
+ {
43
+ "decoder_ps": 8,
44
+ "decoder_dim": 768,
45
+ "decoder_kernel_size": 3,
46
+ "decoder_depth": 12,
47
+ "decoder_mlp_ratio": 4,
48
+ "decoder_layerscale": true,
49
+ "decoder_layerscale_init": 1e-06
50
+ },
51
+ {
52
+ "decoder_ps": 8,
53
+ "decoder_dim": 768,
54
+ "decoder_kernel_size": 3,
55
+ "decoder_depth": 24,
56
+ "decoder_mlp_ratio": 4,
57
+ "decoder_layerscale": true,
58
+ "decoder_layerscale_init": 1e-06
59
+ },
60
+ {
61
+ "decoder_ps": 8,
62
+ "decoder_dim": 768,
63
+ "decoder_kernel_size": 3,
64
+ "decoder_depth": 32,
65
+ "decoder_mlp_ratio": 4,
66
+ "decoder_layerscale": true,
67
+ "decoder_layerscale_init": 1e-06
68
+ },
69
+ {
70
+ "decoder_ps": 8,
71
+ "decoder_dim": 768,
72
+ "decoder_kernel_size": 3,
73
+ "decoder_depth": 32,
74
+ "decoder_mlp_ratio": 4,
75
+ "decoder_layerscale": true,
76
+ "decoder_layerscale_init": 1e-06
77
+ }
78
+ ],
79
+ "macroregion": 64,
80
+ "stream_mode": "two_stream",
81
+ "compander": "softsign",
82
+ "compander_bits": 6,
83
+ "alphabet": [
84
+ -31,
85
+ 31
86
+ ],
87
+ "input_range": [
88
+ -1,
89
+ 1
90
+ ]
91
+ }
decoder/weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7b67591da5286f595d1cebb0ddc3fefb854df60c18ae6181369e57425c1faa5b
3
+ size 2129494748
encoder/config.json ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "codec": "E2A2",
3
+ "format": "e2a2_hub1",
4
+ "source_checkpoint": "e2a2i_g5.pth",
5
+ "modality": "image",
6
+ "dim": 2,
7
+ "input_channels": 3,
8
+ "ps": [
9
+ 32,
10
+ 16,
11
+ 8,
12
+ 4,
13
+ 2
14
+ ],
15
+ "group_sizes": [
16
+ 3,
17
+ 6,
18
+ 6,
19
+ 6,
20
+ 6
21
+ ],
22
+ "cumulative_channels": [
23
+ 3,
24
+ 9,
25
+ 15,
26
+ 21,
27
+ 27
28
+ ],
29
+ "n_groups": 5,
30
+ "affine": true,
31
+ "linear_input": false,
32
+ "decoder_configs": [
33
+ {
34
+ "decoder_ps": 8,
35
+ "decoder_dim": 768,
36
+ "decoder_kernel_size": 3,
37
+ "decoder_depth": 12,
38
+ "decoder_mlp_ratio": 4,
39
+ "decoder_layerscale": true,
40
+ "decoder_layerscale_init": 1e-06
41
+ },
42
+ {
43
+ "decoder_ps": 8,
44
+ "decoder_dim": 768,
45
+ "decoder_kernel_size": 3,
46
+ "decoder_depth": 12,
47
+ "decoder_mlp_ratio": 4,
48
+ "decoder_layerscale": true,
49
+ "decoder_layerscale_init": 1e-06
50
+ },
51
+ {
52
+ "decoder_ps": 8,
53
+ "decoder_dim": 768,
54
+ "decoder_kernel_size": 3,
55
+ "decoder_depth": 24,
56
+ "decoder_mlp_ratio": 4,
57
+ "decoder_layerscale": true,
58
+ "decoder_layerscale_init": 1e-06
59
+ },
60
+ {
61
+ "decoder_ps": 8,
62
+ "decoder_dim": 768,
63
+ "decoder_kernel_size": 3,
64
+ "decoder_depth": 32,
65
+ "decoder_mlp_ratio": 4,
66
+ "decoder_layerscale": true,
67
+ "decoder_layerscale_init": 1e-06
68
+ },
69
+ {
70
+ "decoder_ps": 8,
71
+ "decoder_dim": 768,
72
+ "decoder_kernel_size": 3,
73
+ "decoder_depth": 32,
74
+ "decoder_mlp_ratio": 4,
75
+ "decoder_layerscale": true,
76
+ "decoder_layerscale_init": 1e-06
77
+ }
78
+ ],
79
+ "macroregion": 64,
80
+ "stream_mode": "two_stream",
81
+ "compander": "softsign",
82
+ "compander_bits": 6,
83
+ "alphabet": [
84
+ -31,
85
+ 31
86
+ ],
87
+ "input_range": [
88
+ -1,
89
+ 1
90
+ ]
91
+ }
encoder/entropy.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"spec": "e2a2 stream layout v1 over [GGDLPC v1: unified coder (one learned causal FIR predictor per channel with arithmetic-mean fallback; one stateless pooled statistic: mean of the causal template abs differences and the last 16 coded abs residuals in scan order; two per-channel affine laws -> analytic folded GGD conditionals on the tau=2^(1/4) scale grid; canonical Huffman tables under the derived quotient split, <= 63 windowed hi values + escape at any bit depth; derived zero-run mode with elementary Golomb codes and exclusion tables, always available); inputs in [-N, N], N <= 65536; one call = one byte-padded bitstream, channel prefixes are literal bit prefixes]: two_stream = global[first scale group, whole plane, one pad] + per-macroregion detail streams (scale groups >= 1, coarse-to-fine, channel-major, one pad per region); all_detail = NO global stream, every channel per macroregion, each region decodable from its own bytes alone; one GGDLPC channel record per latent channel (global index); op-point streams are literal bit-prefixes", "version": 5, "stream_mode": "two_stream", "rank": 2, "macroregion": 64, "N": 31, "scale_groups": [[32, 0, 3], [16, 3, 9], [8, 9, 15], [4, 15, 21], [2, 21, 27]], "channels": [{"channel": 0, "mu": -0.0622620612035392, "a": 0.7456532012866169, "b": 0.6132483103031422, "u": 0.4384523960277382, "v": 0.427163367569213, "wq": [72, 150, -28, 25, 18], "bq": -93, "n_samples": 21757696}, {"channel": 1, "mu": -0.050431672544740035, "a": 0.7572132161697636, "b": 0.6908465700131371, "u": 0.2873737307355329, "v": 0.4931002542466914, "wq": [84, 139, -22, 19, 18], "bq": -61, "n_samples": 21757696}, {"channel": 2, "mu": -0.01244782535797908, "a": 0.7600933965525724, "b": 0.6525833671792349, "u": 0.33753488900407286, "v": 0.5234254924412832, "wq": [125, 89, -16, 4, 34], "bq": 42, "n_samples": 21757696}, {"channel": 3, "mu": -0.03815957810974103, "a": 0.3865678991672421, "b": 0.6588657805305401, "u": 0.8287271464896644, "v": 0.26575379968123547, "wq": [67, 80, 8, 35, 46], "bq": 11, "n_samples": 87030784}, {"channel": 4, "mu": -0.05996706866388794, "a": 0.6126214069311903, "b": 0.36860246895234605, "u": 0.9753858506107065, "v": 0.40056233600387714, "wq": [64, 8, -2, 21, 5], "bq": 0, "n_samples": 87030784}, {"channel": 5, "mu": -0.07336792461848901, "a": 0.5535207361078425, "b": 0.5148441700696124, "u": 0.8555313280419647, "v": 0.40849105181292944, "wq": [115, -1, 31, 27, 20], "bq": -7, "n_samples": 87030784}, {"channel": 6, "mu": -0.06176970668217811, "a": 0.6078845918663932, "b": 0.5226448966628631, "u": 0.843025253794713, "v": 0.4199099576000731, "wq": [-23, 106, 20, -2, 21], "bq": 11, "n_samples": 87030784}, {"channel": 7, "mu": -0.06888256918379593, "a": 0.5917451463227575, "b": 0.44172051905636744, "u": 0.9464813727338781, "v": 0.4153559536871894, "wq": [15, 94, 5, 15, 26], "bq": -7, "n_samples": 87030784}, {"channel": 8, "mu": -0.0250420701714005, "a": 0.2899553857893054, "b": 0.5964700904925893, "u": 0.9249322425262761, "v": 0.39038724107903977, "wq": [82, 108, -8, 26, 33], "bq": 11, "n_samples": 87030784}, {"channel": 9, "mu": -0.05270506065991546, "a": 0.7574465657622037, "b": 0.20762958476439144, "u": 0.9226748757289269, "v": 0.2610148856970548, "wq": [78, 12, -6, 20, 3], "bq": -8, "n_samples": 348123136}, {"channel": 10, "mu": -0.05468143605370716, "a": 0.7211202405436784, "b": 0.24267881636325989, "u": 1.0672126218020768, "v": 0.36076819200268834, "wq": [54, 69, 10, 34, 39], "bq": -13, "n_samples": 348123136}, {"channel": 11, "mu": -0.05984599656140062, "a": 0.7328951342206872, "b": 0.28442586593947605, "u": 0.8684228560656915, "v": 0.31241055425440317, "wq": [89, -25, 21, 27, -2], "bq": -34, "n_samples": 348123136}, {"channel": 12, "mu": 0.0035928953598763397, "a": 0.7597156072331128, "b": 0.20881224970632492, "u": 0.892116517591892, "v": 0.27831956892596765, "wq": [-15, -12, 15, 9, 12], "bq": 21, "n_samples": 348123136}, {"channel": 13, "mu": -0.06069965714660229, "a": 0.7361667923199064, "b": 0.29315411868130614, "u": 0.8875893396881199, "v": 0.30686910357524944, "wq": [-18, 85, 11, -2, 26], "bq": -18, "n_samples": 348123136}, {"channel": 14, "mu": -0.048727252646603755, "a": 0.7354095248641526, "b": 0.26558198748570877, "u": 0.9111557549785543, "v": 0.3073222030926498, "wq": [2, 87, 1, 4, 23], "bq": -17, "n_samples": 348123136}, {"channel": 15, "mu": -0.014172259725937893, "a": 0.8463715797033835, "b": 0.07561315329063756, "u": 0.8405500760312963, "v": 0.16047644719761012, "wq": [16, 83, -9, 0, 16], "bq": 0, "n_samples": 1392492544}, {"channel": 16, "mu": -0.020113956172105724, "a": 0.8438087549570578, "b": 0.08838067251090752, "u": 0.8271487852174997, "v": 0.16578796891210568, "wq": [90, -44, 22, 23, -15], "bq": -2, "n_samples": 1392492544}, {"channel": 17, "mu": -0.020147690643577333, "a": 0.8288960000604829, "b": 0.07387083407705315, "u": 0.8232040631548573, "v": 0.1572812916541417, "wq": [-49, -52, -4, -13, -15], "bq": -2, "n_samples": 1392492544}, {"channel": 18, "mu": -0.002038497809005145, "a": 0.8693610302334899, "b": 0.0625, "u": 0.8000189680822584, "v": 0.15332451463272276, "wq": [77, 14, -7, 22, 1], "bq": 4, "n_samples": 1392492544}, {"channel": 19, "mu": -0.011156563147816755, "a": 0.8361949443416944, "b": 0.09324994877120239, "u": 0.829799322418102, "v": 0.16912011991532616, "wq": [-38, 95, 19, -12, 22], "bq": 3, "n_samples": 1392492544}, {"channel": 20, "mu": -0.06060022322101568, "a": 0.8079759048765272, "b": 0.11468373826650893, "u": 1.0853482620810215, "v": 0.22487051387435936, "wq": [49, 33, -2, 34, 33], "bq": -22, "n_samples": 1392492544}, {"channel": 21, "mu": -0.022380049454684907, "a": 0.8146153256703791, "b": 0.19600005802308101, "u": 0.6834322384425313, "v": 0.1921525864255652, "wq": [156, 169, -72, 0, -2], "bq": 3, "n_samples": 5569970176}, {"channel": 22, "mu": -0.008524881731790444, "a": 0.7966387395067173, "b": 0.0625, "u": 0.7709379878256258, "v": 0.1419159681125329, "wq": [-89, -84, -15, -32, -29], "bq": 0, "n_samples": 5569970176}, {"channel": 23, "mu": -0.006132092618228052, "a": 0.844119025071939, "b": 0.119833365450759, "u": 0.8590236212160849, "v": 0.1904317825862078, "wq": [148, -27, 61, 21, 24], "bq": 5, "n_samples": 5569970176}, {"channel": 24, "mu": -0.017727197611479634, "a": 0.8235625253724709, "b": 0.11356001011372288, "u": 0.8359560973273135, "v": 0.17927189975893967, "wq": [-83, 129, 54, -24, 8], "bq": -8, "n_samples": 5569970176}, {"channel": 25, "mu": -0.015893918316017927, "a": 0.7597792003825247, "b": 0.12493144816144151, "u": 0.7736086705008032, "v": 0.17219710884596767, "wq": [164, 176, -74, -6, -7], "bq": -1, "n_samples": 5569970176}, {"channel": 26, "mu": -2.5134784491887375e-09, "a": 0.6593694521426979, "b": 0.0625, "u": 0.05, "v": 0.0, "wq": [95, -8, 0, 20, -2], "bq": 0, "n_samples": 5569970176}], "groups": [{"channels": [0, 3], "ps": 32, "stream": "global", "slicing": "whole-plane", "rank": 2, "stream_mode": "two_stream", "dataset": "danjacobellis/LSDIR:train", "seed": 0, "ggdlpc_fit": {"N": 31, "rank": 2, "K_beta": 8, "order1": null, "dense": true, "dataset": "danjacobellis/LSDIR:train", "seed": 0, "passes": ["predictor moments", "dense h(S, r) histogram"]}}, {"channels": [3, 9], "ps": 16, "stream": "detail", "slicing": "tile f=4", "rank": 2, "stream_mode": "two_stream", "dataset": "danjacobellis/LSDIR:train", "seed": 0, "ggdlpc_fit": {"N": 31, "rank": 2, "K_beta": 8, "order1": null, "dense": true, "dataset": "danjacobellis/LSDIR:train", "seed": 0, "passes": ["predictor moments", "dense h(S, r) histogram"]}}, {"channels": [9, 15], "ps": 8, "stream": "detail", "slicing": "tile f=8", "rank": 2, "stream_mode": "two_stream", "dataset": "danjacobellis/LSDIR:train", "seed": 0, "ggdlpc_fit": {"N": 31, "rank": 2, "K_beta": 8, "order1": null, "dense": true, "dataset": "danjacobellis/LSDIR:train", "seed": 0, "passes": ["predictor moments", "dense h(S, r) histogram"]}}, {"channels": [15, 21], "ps": 4, "stream": "detail", "slicing": "tile f=16", "rank": 2, "stream_mode": "two_stream", "dataset": "danjacobellis/LSDIR:train", "seed": 0, "ggdlpc_fit": {"N": 31, "rank": 2, "K_beta": 8, "order1": null, "dense": true, "dataset": "danjacobellis/LSDIR:train", "seed": 0, "passes": ["predictor moments", "dense h(S, r) histogram"]}}, {"channels": [21, 27], "ps": 2, "stream": "detail", "slicing": "tile f=32", "rank": 2, "stream_mode": "two_stream", "dataset": "danjacobellis/LSDIR:train", "seed": 0, "ggdlpc_fit": {"N": 31, "rank": 2, "K_beta": 8, "order1": null, "dense": true, "dataset": "danjacobellis/LSDIR:train", "seed": 0, "passes": ["predictor moments", "dense h(S, r) histogram"]}}]}
encoder/weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ad615d04ea5ef07de2e3133cf6a05ac54329ef3261990db664561b324c32c820
3
+ size 280812
rd.json ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "source_checkpoint": "e2a2i_g5.pth",
3
+ "rate_unit": "bits/pixel",
4
+ "val_ds": "danjacobellis/kodak",
5
+ "n_val": null,
6
+ "rd_curve": [
7
+ {
8
+ "n_ch": 3,
9
+ "bpp": 0.010682847764756942,
10
+ "psnr": 21.53491377864417,
11
+ "proxy": 0.010476039974427162
12
+ },
13
+ {
14
+ "n_ch": 9,
15
+ "bpp": 0.06244574652777778,
16
+ "psnr": 25.07866226962835,
17
+ "proxy": 0.06049201036682472
18
+ },
19
+ {
20
+ "n_ch": 15,
21
+ "bpp": 0.248885260687934,
22
+ "psnr": 28.703484724837168,
23
+ "proxy": 0.23961593174837278
24
+ },
25
+ {
26
+ "n_ch": 21,
27
+ "bpp": 0.7540673149956597,
28
+ "psnr": 32.936979627551814,
29
+ "proxy": 0.7081524706962892
30
+ },
31
+ {
32
+ "n_ch": 27,
33
+ "bpp": 3.0311033460828996,
34
+ "psnr": 40.75582765232722,
35
+ "proxy": 2.8037543276400236
36
+ }
37
+ ],
38
+ "verified_ops": [
39
+ 3,
40
+ 9,
41
+ 15,
42
+ 21,
43
+ 27
44
+ ]
45
+ }
web/image_op15_chunk256_m64.json ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "codec": "image",
3
+ "repo": "Ambiq/compressionkit-e2a2-image-v0.3",
4
+ "subfolder": null,
5
+ "revision": "b5f2d6b972859ced701c75372536a2ab195d2578",
6
+ "op": 15,
7
+ "file": "image_op15_chunk256_m64.tflite",
8
+ "bytes": 455569908,
9
+ "precision": "fp32",
10
+ "parameters": 113866947,
11
+ "plan": {
12
+ "nd": 2,
13
+ "decoder_ps": 8,
14
+ "receptive_cells": 25,
15
+ "chunk_cells": 32,
16
+ "in_channels": 15,
17
+ "out_channels": 3,
18
+ "margin_cells": 8,
19
+ "group_ps": [
20
+ 32,
21
+ 16,
22
+ 8
23
+ ]
24
+ },
25
+ "overlap": 0.25,
26
+ "chunk": 256,
27
+ "margin": 64,
28
+ "window": 384,
29
+ "inputs": [
30
+ {
31
+ "name": "args_0",
32
+ "role": "decoder grid window",
33
+ "shape": [
34
+ 1,
35
+ 15,
36
+ 48,
37
+ 48
38
+ ]
39
+ },
40
+ {
41
+ "name": "args_1",
42
+ "role": "mask",
43
+ "shape": [
44
+ 1,
45
+ 1,
46
+ 48,
47
+ 48
48
+ ]
49
+ }
50
+ ],
51
+ "output_shape": [
52
+ 1,
53
+ 3,
54
+ 384,
55
+ 384
56
+ ],
57
+ "litert_torch": "0.10.0",
58
+ "conversion_seconds": 5.1
59
+ }
web/image_op15_chunk256_m64.tflite ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:00ae4dd9aa2618b413ed43b6cb26157610150a0d8d33f792f1a5e261eb052d3f
3
+ size 455569908
web/image_op21_chunk256_m64.json ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "codec": "image",
3
+ "repo": "Ambiq/compressionkit-e2a2-image-v0.3",
4
+ "subfolder": null,
5
+ "revision": "b5f2d6b972859ced701c75372536a2ab195d2578",
6
+ "op": 21,
7
+ "file": "image_op21_chunk256_m64.tflite",
8
+ "bytes": 607703092,
9
+ "precision": "fp32",
10
+ "parameters": 151892163,
11
+ "plan": {
12
+ "nd": 2,
13
+ "decoder_ps": 8,
14
+ "receptive_cells": 33,
15
+ "chunk_cells": 32,
16
+ "in_channels": 39,
17
+ "out_channels": 3,
18
+ "margin_cells": 8,
19
+ "group_ps": [
20
+ 32,
21
+ 16,
22
+ 8,
23
+ 4
24
+ ]
25
+ },
26
+ "overlap": 0.25,
27
+ "chunk": 256,
28
+ "margin": 64,
29
+ "window": 384,
30
+ "inputs": [
31
+ {
32
+ "name": "args_0",
33
+ "role": "decoder grid window",
34
+ "shape": [
35
+ 1,
36
+ 39,
37
+ 48,
38
+ 48
39
+ ]
40
+ },
41
+ {
42
+ "name": "args_1",
43
+ "role": "mask",
44
+ "shape": [
45
+ 1,
46
+ 1,
47
+ 48,
48
+ 48
49
+ ]
50
+ }
51
+ ],
52
+ "output_shape": [
53
+ 1,
54
+ 3,
55
+ 384,
56
+ 384
57
+ ],
58
+ "litert_torch": "0.10.0",
59
+ "conversion_seconds": 6.9
60
+ }
web/image_op21_chunk256_m64.tflite ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:49c6788987c7281572ebac26c64c18ecabfc8945e052a1904d19bde884569a01
3
+ size 607703092
web/image_op27_chunk256_m64.json ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "codec": "image",
3
+ "repo": "Ambiq/compressionkit-e2a2-image-v0.3",
4
+ "subfolder": null,
5
+ "revision": "9f280e3a481d64db0fe176f1752a8473fb180209",
6
+ "op": 27,
7
+ "file": "image_op27_chunk256_m64.tflite",
8
+ "bytes": 610357300,
9
+ "precision": "fp32",
10
+ "parameters": 152555715,
11
+ "plan": {
12
+ "nd": 2,
13
+ "decoder_ps": 8,
14
+ "receptive_cells": 33,
15
+ "chunk_cells": 32,
16
+ "in_channels": 135,
17
+ "out_channels": 3,
18
+ "margin_cells": 8,
19
+ "group_ps": [
20
+ 32,
21
+ 16,
22
+ 8,
23
+ 4,
24
+ 2
25
+ ]
26
+ },
27
+ "overlap": 0.25,
28
+ "chunk": 256,
29
+ "margin": 64,
30
+ "window": 384,
31
+ "inputs": [
32
+ {
33
+ "name": "args_0",
34
+ "role": "decoder grid window",
35
+ "shape": [
36
+ 1,
37
+ 135,
38
+ 48,
39
+ 48
40
+ ]
41
+ },
42
+ {
43
+ "name": "args_1",
44
+ "role": "mask",
45
+ "shape": [
46
+ 1,
47
+ 1,
48
+ 48,
49
+ 48
50
+ ]
51
+ }
52
+ ],
53
+ "output_shape": [
54
+ 1,
55
+ 3,
56
+ 384,
57
+ 384
58
+ ],
59
+ "litert_torch": "0.10.0",
60
+ "conversion_seconds": 7.8
61
+ }
web/image_op27_chunk256_m64.tflite ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7e471d04f1ea99de5732d4e6d9cbba203119990b3b7cf06d0150cd3e28fb845e
3
+ size 610357300
web/image_op3_chunk256_m64.json ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "codec": "image",
3
+ "repo": "Ambiq/compressionkit-e2a2-image-v0.3",
4
+ "subfolder": null,
5
+ "revision": "b5f2d6b972859ced701c75372536a2ab195d2578",
6
+ "op": 3,
7
+ "file": "image_op3_chunk256_m64.tflite",
8
+ "bytes": 228033684,
9
+ "precision": "fp32",
10
+ "parameters": 56995011,
11
+ "plan": {
12
+ "nd": 2,
13
+ "decoder_ps": 8,
14
+ "receptive_cells": 13,
15
+ "chunk_cells": 32,
16
+ "in_channels": 3,
17
+ "out_channels": 3,
18
+ "margin_cells": 8,
19
+ "group_ps": [
20
+ 32
21
+ ]
22
+ },
23
+ "overlap": 0.25,
24
+ "chunk": 256,
25
+ "margin": 64,
26
+ "window": 384,
27
+ "inputs": [
28
+ {
29
+ "name": "args_0",
30
+ "role": "decoder grid window",
31
+ "shape": [
32
+ 1,
33
+ 3,
34
+ 48,
35
+ 48
36
+ ]
37
+ },
38
+ {
39
+ "name": "args_1",
40
+ "role": "mask",
41
+ "shape": [
42
+ 1,
43
+ 1,
44
+ 48,
45
+ 48
46
+ ]
47
+ }
48
+ ],
49
+ "output_shape": [
50
+ 1,
51
+ 3,
52
+ 384,
53
+ 384
54
+ ],
55
+ "litert_torch": "0.10.0",
56
+ "conversion_seconds": 3.0
57
+ }
web/image_op3_chunk256_m64.tflite ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f59edceb71c05f7e5c12804e9adc54d3744725abf5bfcf5763a754ab495242f7
3
+ size 228033684
web/image_op9_chunk256_m64.json ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "codec": "image",
3
+ "repo": "Ambiq/compressionkit-e2a2-image-v0.3",
4
+ "subfolder": null,
5
+ "revision": "b5f2d6b972859ced701c75372536a2ab195d2578",
6
+ "op": 9,
7
+ "file": "image_op9_chunk256_m64.tflite",
8
+ "bytes": 228199572,
9
+ "precision": "fp32",
10
+ "parameters": 57036483,
11
+ "plan": {
12
+ "nd": 2,
13
+ "decoder_ps": 8,
14
+ "receptive_cells": 13,
15
+ "chunk_cells": 32,
16
+ "in_channels": 9,
17
+ "out_channels": 3,
18
+ "margin_cells": 8,
19
+ "group_ps": [
20
+ 32,
21
+ 16
22
+ ]
23
+ },
24
+ "overlap": 0.25,
25
+ "chunk": 256,
26
+ "margin": 64,
27
+ "window": 384,
28
+ "inputs": [
29
+ {
30
+ "name": "args_0",
31
+ "role": "decoder grid window",
32
+ "shape": [
33
+ 1,
34
+ 9,
35
+ 48,
36
+ 48
37
+ ]
38
+ },
39
+ {
40
+ "name": "args_1",
41
+ "role": "mask",
42
+ "shape": [
43
+ 1,
44
+ 1,
45
+ 48,
46
+ 48
47
+ ]
48
+ }
49
+ ],
50
+ "output_shape": [
51
+ 1,
52
+ 3,
53
+ 384,
54
+ 384
55
+ ],
56
+ "litert_torch": "0.10.0",
57
+ "conversion_seconds": 2.9
58
+ }
web/image_op9_chunk256_m64.tflite ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:62ea537388349ebd05661ed54697318be726a16de8c3cafee35cecef43187a2c
3
+ size 228199572