google-research
863 строки · 44.3 Кб
1{
2"cells": [
3{
4"cell_type": "markdown",
5"metadata": {
6"id": "iSNx_cpHLk4U"
7},
8"source": [
9"Copyright 2024 Google. All Rights Reserved.\n",
10"\n",
11"Licensed under the Apache License, Version 2.0 (the \"License\");\n",
12"you may not use this file except in compliance with the License.\n",
13"You may obtain a copy of the License at\n",
14"\n",
15" http://www.apache.org/licenses/LICENSE-2.0\n",
16"\n",
17"Unless required by applicable law or agreed to in writing, software\n",
18"distributed under the License is distributed on an \"AS IS\" BASIS,\n",
19"WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
20"See the License for the specific language governing permissions and\n",
21"limitations under the License."
22]
23},
24{
25"cell_type": "code",
26"execution_count": null,
27"metadata": {
28"id": "V3MXGeuiJKm2"
29},
30"outputs": [],
31"source": [
32"import numpy as np\n",
33"import pandas as pd"
34]
35},
36{
37"cell_type": "code",
38"execution_count": null,
39"metadata": {
40"colab": {
41"base_uri": "https://localhost:8080/",
42"height": 1000
43},
44"executionInfo": {
45"elapsed": 15,
46"status": "ok",
47"timestamp": 1707225325227,
48"user": {
49"displayName": "Martin Bruse",
50"userId": "11653897382912197853"
51},
52"user_tz": -60
53},
54"id": "NS3KzmatoC0K",
55"outputId": "1cb42bde-9087-4cdf-dd4a-2c7a28eafa95"
56},
57"outputs": [
58{
59"data": {
60"application/vnd.google.colaboratory.intrinsic+json": {
61"summary": "{\n \"name\": \"dataframe\",\n \"rows\": 31,\n \"fields\": [\n {\n \"column\": \"method\",\n \"properties\": {\n \"dtype\": \"string\",\n \"samples\": [\n \"mozjpeg-q80-yuv422\",\n \"jpegli-q95-yuv444\",\n \"libjpeg-turbo-q90-yuv444\"\n ],\n \"num_unique_values\": 31,\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"elo\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 357.0546814762691,\n \"min\": 1417.7186,\n \"max\": 2634.0227,\n \"samples\": [\n 1958.4712,\n 2634.0227,\n 2392.5342\n ],\n \"num_unique_values\": 31,\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"p99Low\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 353.3443880977271,\n \"min\": 1359.5063,\n \"max\": 2568.278,\n \"samples\": [\n 1916.8787,\n 2568.278,\n 2341.0535\n ],\n \"num_unique_values\": 31,\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"p99Hi\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 360.8547605753182,\n \"min\": 1475.9309,\n \"max\": 2699.7676,\n \"samples\": [\n 2000.0637,\n 2699.7676,\n 2444.015\n ],\n \"num_unique_values\": 31,\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"bpp\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.7739578875241327,\n \"min\": 0.8748113,\n \"max\": 3.77433,\n \"samples\": [\n 1.3579394,\n 2.7829142,\n 2.6226315\n ],\n \"num_unique_values\": 31,\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"label\",\n \"properties\": {\n \"dtype\": \"category\",\n \"samples\": [\n \"jpegli-420\",\n \"mozjpeg\",\n \"jpegli\"\n ],\n \"num_unique_values\": 4,\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}",
62"type": "dataframe",
63"variable_name": "dataframe"
64},
65"text/html": [
66"\n",
67" \u003cdiv id=\"df-bf491ffd-554f-45da-b036-38aa5371007f\" class=\"colab-df-container\"\u003e\n",
68" \u003cdiv\u003e\n",
69"\u003cstyle scoped\u003e\n",
70" .dataframe tbody tr th:only-of-type {\n",
71" vertical-align: middle;\n",
72" }\n",
73"\n",
74" .dataframe tbody tr th {\n",
75" vertical-align: top;\n",
76" }\n",
77"\n",
78" .dataframe thead th {\n",
79" text-align: right;\n",
80" }\n",
81"\u003c/style\u003e\n",
82"\u003ctable border=\"1\" class=\"dataframe\"\u003e\n",
83" \u003cthead\u003e\n",
84" \u003ctr style=\"text-align: right;\"\u003e\n",
85" \u003cth\u003e\u003c/th\u003e\n",
86" \u003cth\u003emethod\u003c/th\u003e\n",
87" \u003cth\u003eelo\u003c/th\u003e\n",
88" \u003cth\u003ep99Low\u003c/th\u003e\n",
89" \u003cth\u003ep99Hi\u003c/th\u003e\n",
90" \u003cth\u003ebpp\u003c/th\u003e\n",
91" \u003cth\u003elabel\u003c/th\u003e\n",
92" \u003c/tr\u003e\n",
93" \u003c/thead\u003e\n",
94" \u003ctbody\u003e\n",
95" \u003ctr\u003e\n",
96" \u003cth\u003e0\u003c/th\u003e\n",
97" \u003ctd\u003ejpegli-q55-yuv444\u003c/td\u003e\n",
98" \u003ctd\u003e1616.2178\u003c/td\u003e\n",
99" \u003ctd\u003e1570.1244\u003c/td\u003e\n",
100" \u003ctd\u003e1662.3113\u003c/td\u003e\n",
101" \u003ctd\u003e0.896926\u003c/td\u003e\n",
102" \u003ctd\u003ejpegli\u003c/td\u003e\n",
103" \u003c/tr\u003e\n",
104" \u003ctr\u003e\n",
105" \u003cth\u003e1\u003c/th\u003e\n",
106" \u003ctd\u003ejpegli-q60-yuv444\u003c/td\u003e\n",
107" \u003ctd\u003e1656.4395\u003c/td\u003e\n",
108" \u003ctd\u003e1611.1019\u003c/td\u003e\n",
109" \u003ctd\u003e1701.7771\u003c/td\u003e\n",
110" \u003ctd\u003e0.963380\u003c/td\u003e\n",
111" \u003ctd\u003ejpegli\u003c/td\u003e\n",
112" \u003c/tr\u003e\n",
113" \u003ctr\u003e\n",
114" \u003cth\u003e2\u003c/th\u003e\n",
115" \u003ctd\u003ejpegli-q65-yuv420\u003c/td\u003e\n",
116" \u003ctd\u003e1600.8348\u003c/td\u003e\n",
117" \u003ctd\u003e1554.3654\u003c/td\u003e\n",
118" \u003ctd\u003e1647.3044\u003c/td\u003e\n",
119" \u003ctd\u003e0.874811\u003c/td\u003e\n",
120" \u003ctd\u003ejpegli-420\u003c/td\u003e\n",
121" \u003c/tr\u003e\n",
122" \u003ctr\u003e\n",
123" \u003cth\u003e3\u003c/th\u003e\n",
124" \u003ctd\u003ejpegli-q65-yuv444\u003c/td\u003e\n",
125" \u003ctd\u003e1738.0724\u003c/td\u003e\n",
126" \u003ctd\u003e1695.7542\u003c/td\u003e\n",
127" \u003ctd\u003e1780.3906\u003c/td\u003e\n",
128" \u003ctd\u003e1.029448\u003c/td\u003e\n",
129" \u003ctd\u003ejpegli\u003c/td\u003e\n",
130" \u003c/tr\u003e\n",
131" \u003ctr\u003e\n",
132" \u003cth\u003e4\u003c/th\u003e\n",
133" \u003ctd\u003ejpegli-q70-yuv420\u003c/td\u003e\n",
134" \u003ctd\u003e1692.4553\u003c/td\u003e\n",
135" \u003ctd\u003e1648.4811\u003c/td\u003e\n",
136" \u003ctd\u003e1736.4296\u003c/td\u003e\n",
137" \u003ctd\u003e0.953669\u003c/td\u003e\n",
138" \u003ctd\u003ejpegli-420\u003c/td\u003e\n",
139" \u003c/tr\u003e\n",
140" \u003ctr\u003e\n",
141" \u003cth\u003e5\u003c/th\u003e\n",
142" \u003ctd\u003ejpegli-q70-yuv444\u003c/td\u003e\n",
143" \u003ctd\u003e1864.5178\u003c/td\u003e\n",
144" \u003ctd\u003e1824.3069\u003c/td\u003e\n",
145" \u003ctd\u003e1904.7288\u003c/td\u003e\n",
146" \u003ctd\u003e1.123597\u003c/td\u003e\n",
147" \u003ctd\u003ejpegli\u003c/td\u003e\n",
148" \u003c/tr\u003e\n",
149" \u003ctr\u003e\n",
150" \u003cth\u003e6\u003c/th\u003e\n",
151" \u003ctd\u003ejpegli-q75-yuv420\u003c/td\u003e\n",
152" \u003ctd\u003e1823.9264\u003c/td\u003e\n",
153" \u003ctd\u003e1782.0206\u003c/td\u003e\n",
154" \u003ctd\u003e1865.8322\u003c/td\u003e\n",
155" \u003ctd\u003e1.051037\u003c/td\u003e\n",
156" \u003ctd\u003ejpegli-420\u003c/td\u003e\n",
157" \u003c/tr\u003e\n",
158" \u003ctr\u003e\n",
159" \u003cth\u003e7\u003c/th\u003e\n",
160" \u003ctd\u003ejpegli-q75-yuv444\u003c/td\u003e\n",
161" \u003ctd\u003e2022.0585\u003c/td\u003e\n",
162" \u003ctd\u003e1980.5918\u003c/td\u003e\n",
163" \u003ctd\u003e2063.5254\u003c/td\u003e\n",
164" \u003ctd\u003e1.227468\u003c/td\u003e\n",
165" \u003ctd\u003ejpegli\u003c/td\u003e\n",
166" \u003c/tr\u003e\n",
167" \u003ctr\u003e\n",
168" \u003cth\u003e8\u003c/th\u003e\n",
169" \u003ctd\u003ejpegli-q80-yuv420\u003c/td\u003e\n",
170" \u003ctd\u003e1980.5387\u003c/td\u003e\n",
171" \u003ctd\u003e1935.3760\u003c/td\u003e\n",
172" \u003ctd\u003e2025.7014\u003c/td\u003e\n",
173" \u003ctd\u003e1.176039\u003c/td\u003e\n",
174" \u003ctd\u003ejpegli-420\u003c/td\u003e\n",
175" \u003c/tr\u003e\n",
176" \u003ctr\u003e\n",
177" \u003cth\u003e9\u003c/th\u003e\n",
178" \u003ctd\u003ejpegli-q80-yuv444\u003c/td\u003e\n",
179" \u003ctd\u003e2139.4082\u003c/td\u003e\n",
180" \u003ctd\u003e2096.1480\u003c/td\u003e\n",
181" \u003ctd\u003e2182.6687\u003c/td\u003e\n",
182" \u003ctd\u003e1.374517\u003c/td\u003e\n",
183" \u003ctd\u003ejpegli\u003c/td\u003e\n",
184" \u003c/tr\u003e\n",
185" \u003ctr\u003e\n",
186" \u003cth\u003e10\u003c/th\u003e\n",
187" \u003ctd\u003ejpegli-q85-yuv420\u003c/td\u003e\n",
188" \u003ctd\u003e2135.3962\u003c/td\u003e\n",
189" \u003ctd\u003e2088.1436\u003c/td\u003e\n",
190" \u003ctd\u003e2182.6487\u003c/td\u003e\n",
191" \u003ctd\u003e1.361384\u003c/td\u003e\n",
192" \u003ctd\u003ejpegli-420\u003c/td\u003e\n",
193" \u003c/tr\u003e\n",
194" \u003ctr\u003e\n",
195" \u003cth\u003e11\u003c/th\u003e\n",
196" \u003ctd\u003ejpegli-q85-yuv444\u003c/td\u003e\n",
197" \u003ctd\u003e2293.2693\u003c/td\u003e\n",
198" \u003ctd\u003e2247.1530\u003c/td\u003e\n",
199" \u003ctd\u003e2339.3857\u003c/td\u003e\n",
200" \u003ctd\u003e1.591872\u003c/td\u003e\n",
201" \u003ctd\u003ejpegli\u003c/td\u003e\n",
202" \u003c/tr\u003e\n",
203" \u003ctr\u003e\n",
204" \u003cth\u003e12\u003c/th\u003e\n",
205" \u003ctd\u003ejpegli-q90-yuv420\u003c/td\u003e\n",
206" \u003ctd\u003e2296.9397\u003c/td\u003e\n",
207" \u003ctd\u003e2247.5278\u003c/td\u003e\n",
208" \u003ctd\u003e2346.3516\u003c/td\u003e\n",
209" \u003ctd\u003e1.698086\u003c/td\u003e\n",
210" \u003ctd\u003ejpegli-420\u003c/td\u003e\n",
211" \u003c/tr\u003e\n",
212" \u003ctr\u003e\n",
213" \u003cth\u003e13\u003c/th\u003e\n",
214" \u003ctd\u003ejpegli-q90-yuv444\u003c/td\u003e\n",
215" \u003ctd\u003e2440.6377\u003c/td\u003e\n",
216" \u003ctd\u003e2388.3870\u003c/td\u003e\n",
217" \u003ctd\u003e2492.8887\u003c/td\u003e\n",
218" \u003ctd\u003e1.971755\u003c/td\u003e\n",
219" \u003ctd\u003ejpegli\u003c/td\u003e\n",
220" \u003c/tr\u003e\n",
221" \u003ctr\u003e\n",
222" \u003cth\u003e14\u003c/th\u003e\n",
223" \u003ctd\u003ejpegli-q95-yuv420\u003c/td\u003e\n",
224" \u003ctd\u003e2481.9868\u003c/td\u003e\n",
225" \u003ctd\u003e2425.2605\u003c/td\u003e\n",
226" \u003ctd\u003e2538.7131\u003c/td\u003e\n",
227" \u003ctd\u003e2.409262\u003c/td\u003e\n",
228" \u003ctd\u003ejpegli-420\u003c/td\u003e\n",
229" \u003c/tr\u003e\n",
230" \u003ctr\u003e\n",
231" \u003cth\u003e15\u003c/th\u003e\n",
232" \u003ctd\u003ejpegli-q95-yuv444\u003c/td\u003e\n",
233" \u003ctd\u003e2634.0227\u003c/td\u003e\n",
234" \u003ctd\u003e2568.2780\u003c/td\u003e\n",
235" \u003ctd\u003e2699.7676\u003c/td\u003e\n",
236" \u003ctd\u003e2.782914\u003c/td\u003e\n",
237" \u003ctd\u003ejpegli\u003c/td\u003e\n",
238" \u003c/tr\u003e\n",
239" \u003ctr\u003e\n",
240" \u003cth\u003e16\u003c/th\u003e\n",
241" \u003ctd\u003elibjpeg-turbo-q55-yuv420\u003c/td\u003e\n",
242" \u003ctd\u003e1417.7186\u003c/td\u003e\n",
243" \u003ctd\u003e1359.5063\u003c/td\u003e\n",
244" \u003ctd\u003e1475.9309\u003c/td\u003e\n",
245" \u003ctd\u003e0.890062\u003c/td\u003e\n",
246" \u003ctd\u003elibjpeg-turbo\u003c/td\u003e\n",
247" \u003c/tr\u003e\n",
248" \u003ctr\u003e\n",
249" \u003cth\u003e17\u003c/th\u003e\n",
250" \u003ctd\u003elibjpeg-turbo-q60-yuv420\u003c/td\u003e\n",
251" \u003ctd\u003e1522.5587\u003c/td\u003e\n",
252" \u003ctd\u003e1472.4467\u003c/td\u003e\n",
253" \u003ctd\u003e1572.6708\u003c/td\u003e\n",
254" \u003ctd\u003e0.954096\u003c/td\u003e\n",
255" \u003ctd\u003elibjpeg-turbo\u003c/td\u003e\n",
256" \u003c/tr\u003e\n",
257" \u003ctr\u003e\n",
258" \u003cth\u003e18\u003c/th\u003e\n",
259" \u003ctd\u003elibjpeg-turbo-q65-yuv420\u003c/td\u003e\n",
260" \u003ctd\u003e1572.9736\u003c/td\u003e\n",
261" \u003ctd\u003e1525.9553\u003c/td\u003e\n",
262" \u003ctd\u003e1619.9918\u003c/td\u003e\n",
263" \u003ctd\u003e1.033683\u003c/td\u003e\n",
264" \u003ctd\u003elibjpeg-turbo\u003c/td\u003e\n",
265" \u003c/tr\u003e\n",
266" \u003ctr\u003e\n",
267" \u003cth\u003e19\u003c/th\u003e\n",
268" \u003ctd\u003elibjpeg-turbo-q70-yuv420\u003c/td\u003e\n",
269" \u003ctd\u003e1685.1305\u003c/td\u003e\n",
270" \u003ctd\u003e1642.5930\u003c/td\u003e\n",
271" \u003ctd\u003e1727.6680\u003c/td\u003e\n",
272" \u003ctd\u003e1.129677\u003c/td\u003e\n",
273" \u003ctd\u003elibjpeg-turbo\u003c/td\u003e\n",
274" \u003c/tr\u003e\n",
275" \u003ctr\u003e\n",
276" \u003cth\u003e20\u003c/th\u003e\n",
277" \u003ctd\u003elibjpeg-turbo-q75-yuv420\u003c/td\u003e\n",
278" \u003ctd\u003e1757.0505\u003c/td\u003e\n",
279" \u003ctd\u003e1714.4518\u003c/td\u003e\n",
280" \u003ctd\u003e1799.6492\u003c/td\u003e\n",
281" \u003ctd\u003e1.239587\u003c/td\u003e\n",
282" \u003ctd\u003elibjpeg-turbo\u003c/td\u003e\n",
283" \u003c/tr\u003e\n",
284" \u003ctr\u003e\n",
285" \u003cth\u003e21\u003c/th\u003e\n",
286" \u003ctd\u003elibjpeg-turbo-q80-yuv422\u003c/td\u003e\n",
287" \u003ctd\u003e1989.6469\u003c/td\u003e\n",
288" \u003ctd\u003e1946.9990\u003c/td\u003e\n",
289" \u003ctd\u003e2032.2948\u003c/td\u003e\n",
290" \u003ctd\u003e1.540141\u003c/td\u003e\n",
291" \u003ctd\u003elibjpeg-turbo\u003c/td\u003e\n",
292" \u003c/tr\u003e\n",
293" \u003ctr\u003e\n",
294" \u003cth\u003e22\u003c/th\u003e\n",
295" \u003ctd\u003elibjpeg-turbo-q85-yuv422\u003c/td\u003e\n",
296" \u003ctd\u003e2150.5596\u003c/td\u003e\n",
297" \u003ctd\u003e2107.5012\u003c/td\u003e\n",
298" \u003ctd\u003e2193.6177\u003c/td\u003e\n",
299" \u003ctd\u003e1.804783\u003c/td\u003e\n",
300" \u003ctd\u003elibjpeg-turbo\u003c/td\u003e\n",
301" \u003c/tr\u003e\n",
302" \u003ctr\u003e\n",
303" \u003cth\u003e23\u003c/th\u003e\n",
304" \u003ctd\u003elibjpeg-turbo-q90-yuv444\u003c/td\u003e\n",
305" \u003ctd\u003e2392.5342\u003c/td\u003e\n",
306" \u003ctd\u003e2341.0535\u003c/td\u003e\n",
307" \u003ctd\u003e2444.0150\u003c/td\u003e\n",
308" \u003ctd\u003e2.622631\u003c/td\u003e\n",
309" \u003ctd\u003elibjpeg-turbo\u003c/td\u003e\n",
310" \u003c/tr\u003e\n",
311" \u003ctr\u003e\n",
312" \u003cth\u003e24\u003c/th\u003e\n",
313" \u003ctd\u003elibjpeg-turbo-q95-yuv444\u003c/td\u003e\n",
314" \u003ctd\u003e2608.0166\u003c/td\u003e\n",
315" \u003ctd\u003e2546.6313\u003c/td\u003e\n",
316" \u003ctd\u003e2669.4019\u003c/td\u003e\n",
317" \u003ctd\u003e3.774330\u003c/td\u003e\n",
318" \u003ctd\u003elibjpeg-turbo\u003c/td\u003e\n",
319" \u003c/tr\u003e\n",
320" \u003ctr\u003e\n",
321" \u003cth\u003e25\u003c/th\u003e\n",
322" \u003ctd\u003emozjpeg-q70-yuv420\u003c/td\u003e\n",
323" \u003ctd\u003e1662.1260\u003c/td\u003e\n",
324" \u003ctd\u003e1619.2194\u003c/td\u003e\n",
325" \u003ctd\u003e1705.0326\u003c/td\u003e\n",
326" \u003ctd\u003e0.914854\u003c/td\u003e\n",
327" \u003ctd\u003emozjpeg\u003c/td\u003e\n",
328" \u003c/tr\u003e\n",
329" \u003ctr\u003e\n",
330" \u003cth\u003e26\u003c/th\u003e\n",
331" \u003ctd\u003emozjpeg-q75-yuv420\u003c/td\u003e\n",
332" \u003ctd\u003e1760.7078\u003c/td\u003e\n",
333" \u003ctd\u003e1719.5176\u003c/td\u003e\n",
334" \u003ctd\u003e1801.8980\u003c/td\u003e\n",
335" \u003ctd\u003e1.024720\u003c/td\u003e\n",
336" \u003ctd\u003emozjpeg\u003c/td\u003e\n",
337" \u003c/tr\u003e\n",
338" \u003ctr\u003e\n",
339" \u003cth\u003e27\u003c/th\u003e\n",
340" \u003ctd\u003emozjpeg-q80-yuv422\u003c/td\u003e\n",
341" \u003ctd\u003e1958.4712\u003c/td\u003e\n",
342" \u003ctd\u003e1916.8787\u003c/td\u003e\n",
343" \u003ctd\u003e2000.0637\u003c/td\u003e\n",
344" \u003ctd\u003e1.357939\u003c/td\u003e\n",
345" \u003ctd\u003emozjpeg\u003c/td\u003e\n",
346" \u003c/tr\u003e\n",
347" \u003ctr\u003e\n",
348" \u003cth\u003e28\u003c/th\u003e\n",
349" \u003ctd\u003emozjpeg-q85-yuv422\u003c/td\u003e\n",
350" \u003ctd\u003e2136.8660\u003c/td\u003e\n",
351" \u003ctd\u003e2093.9138\u003c/td\u003e\n",
352" \u003ctd\u003e2179.8180\u003c/td\u003e\n",
353" \u003ctd\u003e1.590558\u003c/td\u003e\n",
354" \u003ctd\u003emozjpeg\u003c/td\u003e\n",
355" \u003c/tr\u003e\n",
356" \u003ctr\u003e\n",
357" \u003cth\u003e29\u003c/th\u003e\n",
358" \u003ctd\u003emozjpeg-q90-yuv444\u003c/td\u003e\n",
359" \u003ctd\u003e2360.3062\u003c/td\u003e\n",
360" \u003ctd\u003e2312.1338\u003c/td\u003e\n",
361" \u003ctd\u003e2408.4785\u003c/td\u003e\n",
362" \u003ctd\u003e2.495490\u003c/td\u003e\n",
363" \u003ctd\u003emozjpeg\u003c/td\u003e\n",
364" \u003c/tr\u003e\n",
365" \u003ctr\u003e\n",
366" \u003cth\u003e30\u003c/th\u003e\n",
367" \u003ctd\u003emozjpeg-q95-yuv444\u003c/td\u003e\n",
368" \u003ctd\u003e2608.6120\u003c/td\u003e\n",
369" \u003ctd\u003e2546.6934\u003c/td\u003e\n",
370" \u003ctd\u003e2670.5308\u003c/td\u003e\n",
371" \u003ctd\u003e3.502980\u003c/td\u003e\n",
372" \u003ctd\u003emozjpeg\u003c/td\u003e\n",
373" \u003c/tr\u003e\n",
374" \u003c/tbody\u003e\n",
375"\u003c/table\u003e\n",
376"\u003c/div\u003e\n",
377" \u003cdiv class=\"colab-df-buttons\"\u003e\n",
378"\n",
379" \u003cdiv class=\"colab-df-container\"\u003e\n",
380" \u003cbutton class=\"colab-df-convert\" onclick=\"convertToInteractive('df-bf491ffd-554f-45da-b036-38aa5371007f')\"\n",
381" title=\"Convert this dataframe to an interactive table.\"\n",
382" style=\"display:none;\"\u003e\n",
383"\n",
384" \u003csvg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\"\u003e\n",
385" \u003cpath d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/\u003e\n",
386" \u003c/svg\u003e\n",
387" \u003c/button\u003e\n",
388"\n",
389" \u003cstyle\u003e\n",
390" .colab-df-container {\n",
391" display:flex;\n",
392" gap: 12px;\n",
393" }\n",
394"\n",
395" .colab-df-convert {\n",
396" background-color: #E8F0FE;\n",
397" border: none;\n",
398" border-radius: 50%;\n",
399" cursor: pointer;\n",
400" display: none;\n",
401" fill: #1967D2;\n",
402" height: 32px;\n",
403" padding: 0 0 0 0;\n",
404" width: 32px;\n",
405" }\n",
406"\n",
407" .colab-df-convert:hover {\n",
408" background-color: #E2EBFA;\n",
409" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
410" fill: #174EA6;\n",
411" }\n",
412"\n",
413" .colab-df-buttons div {\n",
414" margin-bottom: 4px;\n",
415" }\n",
416"\n",
417" [theme=dark] .colab-df-convert {\n",
418" background-color: #3B4455;\n",
419" fill: #D2E3FC;\n",
420" }\n",
421"\n",
422" [theme=dark] .colab-df-convert:hover {\n",
423" background-color: #434B5C;\n",
424" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
425" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
426" fill: #FFFFFF;\n",
427" }\n",
428" \u003c/style\u003e\n",
429"\n",
430" \u003cscript\u003e\n",
431" const buttonEl =\n",
432" document.querySelector('#df-bf491ffd-554f-45da-b036-38aa5371007f button.colab-df-convert');\n",
433" buttonEl.style.display =\n",
434" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
435"\n",
436" async function convertToInteractive(key) {\n",
437" const element = document.querySelector('#df-bf491ffd-554f-45da-b036-38aa5371007f');\n",
438" const dataTable =\n",
439" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
440" [key], {});\n",
441" if (!dataTable) return;\n",
442"\n",
443" const docLinkHtml = 'Like what you see? Visit the ' +\n",
444" '\u003ca target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb\u003edata table notebook\u003c/a\u003e'\n",
445" + ' to learn more about interactive tables.';\n",
446" element.innerHTML = '';\n",
447" dataTable['output_type'] = 'display_data';\n",
448" await google.colab.output.renderOutput(dataTable, element);\n",
449" const docLink = document.createElement('div');\n",
450" docLink.innerHTML = docLinkHtml;\n",
451" element.appendChild(docLink);\n",
452" }\n",
453" \u003c/script\u003e\n",
454" \u003c/div\u003e\n",
455"\n",
456"\n",
457"\u003cdiv id=\"df-8a9791fc-b9df-4610-8642-586a6e5bc7a7\"\u003e\n",
458" \u003cbutton class=\"colab-df-quickchart\" onclick=\"quickchart('df-8a9791fc-b9df-4610-8642-586a6e5bc7a7')\"\n",
459" title=\"Suggest charts\"\n",
460" style=\"display:none;\"\u003e\n",
461"\n",
462"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
463" width=\"24px\"\u003e\n",
464" \u003cg\u003e\n",
465" \u003cpath d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/\u003e\n",
466" \u003c/g\u003e\n",
467"\u003c/svg\u003e\n",
468" \u003c/button\u003e\n",
469"\n",
470"\u003cstyle\u003e\n",
471" .colab-df-quickchart {\n",
472" --bg-color: #E8F0FE;\n",
473" --fill-color: #1967D2;\n",
474" --hover-bg-color: #E2EBFA;\n",
475" --hover-fill-color: #174EA6;\n",
476" --disabled-fill-color: #AAA;\n",
477" --disabled-bg-color: #DDD;\n",
478" }\n",
479"\n",
480" [theme=dark] .colab-df-quickchart {\n",
481" --bg-color: #3B4455;\n",
482" --fill-color: #D2E3FC;\n",
483" --hover-bg-color: #434B5C;\n",
484" --hover-fill-color: #FFFFFF;\n",
485" --disabled-bg-color: #3B4455;\n",
486" --disabled-fill-color: #666;\n",
487" }\n",
488"\n",
489" .colab-df-quickchart {\n",
490" background-color: var(--bg-color);\n",
491" border: none;\n",
492" border-radius: 50%;\n",
493" cursor: pointer;\n",
494" display: none;\n",
495" fill: var(--fill-color);\n",
496" height: 32px;\n",
497" padding: 0;\n",
498" width: 32px;\n",
499" }\n",
500"\n",
501" .colab-df-quickchart:hover {\n",
502" background-color: var(--hover-bg-color);\n",
503" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
504" fill: var(--button-hover-fill-color);\n",
505" }\n",
506"\n",
507" .colab-df-quickchart-complete:disabled,\n",
508" .colab-df-quickchart-complete:disabled:hover {\n",
509" background-color: var(--disabled-bg-color);\n",
510" fill: var(--disabled-fill-color);\n",
511" box-shadow: none;\n",
512" }\n",
513"\n",
514" .colab-df-spinner {\n",
515" border: 2px solid var(--fill-color);\n",
516" border-color: transparent;\n",
517" border-bottom-color: var(--fill-color);\n",
518" animation:\n",
519" spin 1s steps(1) infinite;\n",
520" }\n",
521"\n",
522" @keyframes spin {\n",
523" 0% {\n",
524" border-color: transparent;\n",
525" border-bottom-color: var(--fill-color);\n",
526" border-left-color: var(--fill-color);\n",
527" }\n",
528" 20% {\n",
529" border-color: transparent;\n",
530" border-left-color: var(--fill-color);\n",
531" border-top-color: var(--fill-color);\n",
532" }\n",
533" 30% {\n",
534" border-color: transparent;\n",
535" border-left-color: var(--fill-color);\n",
536" border-top-color: var(--fill-color);\n",
537" border-right-color: var(--fill-color);\n",
538" }\n",
539" 40% {\n",
540" border-color: transparent;\n",
541" border-right-color: var(--fill-color);\n",
542" border-top-color: var(--fill-color);\n",
543" }\n",
544" 60% {\n",
545" border-color: transparent;\n",
546" border-right-color: var(--fill-color);\n",
547" }\n",
548" 80% {\n",
549" border-color: transparent;\n",
550" border-right-color: var(--fill-color);\n",
551" border-bottom-color: var(--fill-color);\n",
552" }\n",
553" 90% {\n",
554" border-color: transparent;\n",
555" border-bottom-color: var(--fill-color);\n",
556" }\n",
557" }\n",
558"\u003c/style\u003e\n",
559"\n",
560" \u003cscript\u003e\n",
561" async function quickchart(key) {\n",
562" const quickchartButtonEl =\n",
563" document.querySelector('#' + key + ' button');\n",
564" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
565" quickchartButtonEl.classList.add('colab-df-spinner');\n",
566" try {\n",
567" const charts = await google.colab.kernel.invokeFunction(\n",
568" 'suggestCharts', [key], {});\n",
569" } catch (error) {\n",
570" console.error('Error during call to suggestCharts:', error);\n",
571" }\n",
572" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
573" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
574" }\n",
575" (() =\u003e {\n",
576" let quickchartButtonEl =\n",
577" document.querySelector('#df-8a9791fc-b9df-4610-8642-586a6e5bc7a7 button');\n",
578" quickchartButtonEl.style.display =\n",
579" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
580" })();\n",
581" \u003c/script\u003e\n",
582"\u003c/div\u003e\n",
583"\n",
584" \u003cdiv id=\"id_e94f5bb9-d5ca-4407-b2f1-4d751d982b8a\"\u003e\n",
585" \u003cstyle\u003e\n",
586" .colab-df-generate {\n",
587" background-color: #E8F0FE;\n",
588" border: none;\n",
589" border-radius: 50%;\n",
590" cursor: pointer;\n",
591" display: none;\n",
592" fill: #1967D2;\n",
593" height: 32px;\n",
594" padding: 0 0 0 0;\n",
595" width: 32px;\n",
596" }\n",
597"\n",
598" .colab-df-generate:hover {\n",
599" background-color: #E2EBFA;\n",
600" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
601" fill: #174EA6;\n",
602" }\n",
603"\n",
604" [theme=dark] .colab-df-generate {\n",
605" background-color: #3B4455;\n",
606" fill: #D2E3FC;\n",
607" }\n",
608"\n",
609" [theme=dark] .colab-df-generate:hover {\n",
610" background-color: #434B5C;\n",
611" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
612" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
613" fill: #FFFFFF;\n",
614" }\n",
615" \u003c/style\u003e\n",
616" \u003cbutton class=\"colab-df-generate\" onclick=\"generateWithVariable('dataframe')\"\n",
617" title=\"Generate code using this dataframe.\"\n",
618" style=\"display:none;\"\u003e\n",
619"\n",
620" \u003csvg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
621" width=\"24px\"\u003e\n",
622" \u003cpath d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/\u003e\n",
623" \u003c/svg\u003e\n",
624" \u003c/button\u003e\n",
625" \u003cscript\u003e\n",
626" (() =\u003e {\n",
627" const buttonEl =\n",
628" document.querySelector('#id_e94f5bb9-d5ca-4407-b2f1-4d751d982b8a button.colab-df-generate');\n",
629" buttonEl.style.display =\n",
630" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
631"\n",
632" buttonEl.onclick = () =\u003e {\n",
633" google.colab.notebook.generateWithVariable('dataframe');\n",
634" }\n",
635" })();\n",
636" \u003c/script\u003e\n",
637" \u003c/div\u003e\n",
638"\n",
639" \u003c/div\u003e\n",
640" \u003c/div\u003e\n"
641],
642"text/plain": [
643" method elo p99Low p99Hi bpp \\\n",
644"0 jpegli-q55-yuv444 1616.2178 1570.1244 1662.3113 0.896926 \n",
645"1 jpegli-q60-yuv444 1656.4395 1611.1019 1701.7771 0.963380 \n",
646"2 jpegli-q65-yuv420 1600.8348 1554.3654 1647.3044 0.874811 \n",
647"3 jpegli-q65-yuv444 1738.0724 1695.7542 1780.3906 1.029448 \n",
648"4 jpegli-q70-yuv420 1692.4553 1648.4811 1736.4296 0.953669 \n",
649"5 jpegli-q70-yuv444 1864.5178 1824.3069 1904.7288 1.123597 \n",
650"6 jpegli-q75-yuv420 1823.9264 1782.0206 1865.8322 1.051037 \n",
651"7 jpegli-q75-yuv444 2022.0585 1980.5918 2063.5254 1.227468 \n",
652"8 jpegli-q80-yuv420 1980.5387 1935.3760 2025.7014 1.176039 \n",
653"9 jpegli-q80-yuv444 2139.4082 2096.1480 2182.6687 1.374517 \n",
654"10 jpegli-q85-yuv420 2135.3962 2088.1436 2182.6487 1.361384 \n",
655"11 jpegli-q85-yuv444 2293.2693 2247.1530 2339.3857 1.591872 \n",
656"12 jpegli-q90-yuv420 2296.9397 2247.5278 2346.3516 1.698086 \n",
657"13 jpegli-q90-yuv444 2440.6377 2388.3870 2492.8887 1.971755 \n",
658"14 jpegli-q95-yuv420 2481.9868 2425.2605 2538.7131 2.409262 \n",
659"15 jpegli-q95-yuv444 2634.0227 2568.2780 2699.7676 2.782914 \n",
660"16 libjpeg-turbo-q55-yuv420 1417.7186 1359.5063 1475.9309 0.890062 \n",
661"17 libjpeg-turbo-q60-yuv420 1522.5587 1472.4467 1572.6708 0.954096 \n",
662"18 libjpeg-turbo-q65-yuv420 1572.9736 1525.9553 1619.9918 1.033683 \n",
663"19 libjpeg-turbo-q70-yuv420 1685.1305 1642.5930 1727.6680 1.129677 \n",
664"20 libjpeg-turbo-q75-yuv420 1757.0505 1714.4518 1799.6492 1.239587 \n",
665"21 libjpeg-turbo-q80-yuv422 1989.6469 1946.9990 2032.2948 1.540141 \n",
666"22 libjpeg-turbo-q85-yuv422 2150.5596 2107.5012 2193.6177 1.804783 \n",
667"23 libjpeg-turbo-q90-yuv444 2392.5342 2341.0535 2444.0150 2.622631 \n",
668"24 libjpeg-turbo-q95-yuv444 2608.0166 2546.6313 2669.4019 3.774330 \n",
669"25 mozjpeg-q70-yuv420 1662.1260 1619.2194 1705.0326 0.914854 \n",
670"26 mozjpeg-q75-yuv420 1760.7078 1719.5176 1801.8980 1.024720 \n",
671"27 mozjpeg-q80-yuv422 1958.4712 1916.8787 2000.0637 1.357939 \n",
672"28 mozjpeg-q85-yuv422 2136.8660 2093.9138 2179.8180 1.590558 \n",
673"29 mozjpeg-q90-yuv444 2360.3062 2312.1338 2408.4785 2.495490 \n",
674"30 mozjpeg-q95-yuv444 2608.6120 2546.6934 2670.5308 3.502980 \n",
675"\n",
676" label \n",
677"0 jpegli \n",
678"1 jpegli \n",
679"2 jpegli-420 \n",
680"3 jpegli \n",
681"4 jpegli-420 \n",
682"5 jpegli \n",
683"6 jpegli-420 \n",
684"7 jpegli \n",
685"8 jpegli-420 \n",
686"9 jpegli \n",
687"10 jpegli-420 \n",
688"11 jpegli \n",
689"12 jpegli-420 \n",
690"13 jpegli \n",
691"14 jpegli-420 \n",
692"15 jpegli \n",
693"16 libjpeg-turbo \n",
694"17 libjpeg-turbo \n",
695"18 libjpeg-turbo \n",
696"19 libjpeg-turbo \n",
697"20 libjpeg-turbo \n",
698"21 libjpeg-turbo \n",
699"22 libjpeg-turbo \n",
700"23 libjpeg-turbo \n",
701"24 libjpeg-turbo \n",
702"25 mozjpeg \n",
703"26 mozjpeg \n",
704"27 mozjpeg \n",
705"28 mozjpeg \n",
706"29 mozjpeg \n",
707"30 mozjpeg "
708]
709},
710"execution_count": 29,
711"metadata": {},
712"output_type": "execute_result"
713}
714],
715"source": [
716"dataframe = pd.read_csv('elo.csv')\n",
717"dataframe"
718]
719},
720{
721"cell_type": "code",
722"execution_count": null,
723"metadata": {
724"colab": {
725"base_uri": "https://localhost:8080/"
726},
727"executionInfo": {
728"elapsed": 11,
729"status": "ok",
730"timestamp": 1707225325228,
731"user": {
732"displayName": "Martin Bruse",
733"userId": "11653897382912197853"
734},
735"user_tz": -60
736},
737"id": "7of7RihWJjil",
738"outputId": "8679f624-85a7-4ac0-9ae9-56702a8edfdc"
739},
740"outputs": [
741{
742"name": "stdout",
743"output_type": "stream",
744"text": [
745"libjpeg_turbo_equivalent_quality,elo,libjpeg_turbo_bitrate,mozjpeg_bitrate,jpegli_bitrate\n",
746"libjpeg-turbo-q70-yuv420,1685.1304931640625,1.1296766996383667,0.940491951974611,0.986600255931497\n",
747"libjpeg-turbo-q75-yuv420,1757.050537109375,1.2395873069763184,1.0206446804441114,1.0435789756588576\n",
748"libjpeg-turbo-q80-yuv422,1989.6468505859375,1.5401406288146973,1.3985910069922816,1.2060982872396786\n",
749"libjpeg-turbo-q85-yuv422,2150.5595703125,1.8047833442687988,1.6460170723784693,1.3902699242484242\n",
750"libjpeg-turbo-q90-yuv444,2392.5341796875,2.622631549835205,2.6262534131392052,1.8477547233536156\n",
751"libjpeg-turbo-q95-yuv444,2608.0166015625,3.774329900741577,3.5005639449528534,2.6738307925538596\n"
752]
753}
754],
755"source": [
756"data = dataframe.values\n",
757"methods = np.unique(data[:, -1])\n",
758"elos = {\n",
759" method: data[data[:, -1] == method][:, 1].astype(np.float32)\n",
760" for method in methods\n",
761"}\n",
762"bitrates = {\n",
763" method: data[data[:, -1] == method][:, 4].astype(np.float32)\n",
764" for method in methods\n",
765"}\n",
766"turbo_names = data[data[:, -1] == 'libjpeg-turbo'][:, 0]\n",
767"elos_to_compare = []\n",
768"turbo_equivalent_qualities = []\n",
769"for index, elo in enumerate(elos['libjpeg-turbo']):\n",
770" if (\n",
771" elo \u003e= min(elos['jpegli'])\n",
772" and elo \u003e= min(elos['mozjpeg'])\n",
773" and elo \u003c= max(elos['jpegli'])\n",
774" and elo \u003c= max(elos['mozjpeg'])\n",
775" ):\n",
776" elos_to_compare.append(elo)\n",
777" turbo_equivalent_qualities.append(turbo_names[index])\n",
778"\n",
779"\n",
780"def bitrate_at_elo(method, elo):\n",
781" return np.interp(elo, elos[method], bitrates[method])\n",
782"\n",
783"\n",
784"def elo_at_bitrate(method, bitrate):\n",
785" return np.interp(bitrate, bitrates[method], elos[method])\n",
786"\n",
787"\n",
788"print(\n",
789" f'libjpeg_turbo_equivalent_quality,elo,libjpeg_turbo_bitrate,mozjpeg_bitrate,jpegli_bitrate'\n",
790")\n",
791"for i in range(len(elos_to_compare)):\n",
792" elo = elos_to_compare[i]\n",
793" name = turbo_equivalent_qualities[i]\n",
794" print(\n",
795" f\"{name},{elo},{bitrate_at_elo('libjpeg-turbo', elo)},{bitrate_at_elo('mozjpeg', elo)},{bitrate_at_elo('jpegli', elo)}\"\n",
796" )"
797]
798},
799{
800"cell_type": "code",
801"execution_count": null,
802"metadata": {
803"colab": {
804"base_uri": "https://localhost:8080/"
805},
806"executionInfo": {
807"elapsed": 8,
808"status": "ok",
809"timestamp": 1707225325228,
810"user": {
811"displayName": "Martin Bruse",
812"userId": "11653897382912197853"
813},
814"user_tz": -60
815},
816"id": "QR4hBQQUtNVu",
817"outputId": "fe8f268c-a961-477f-ae8b-a27f3880e0c8"
818},
819"outputs": [
820{
821"name": "stdout",
822"output_type": "stream",
823"text": [
824"turbo_bitrate_at_elo_2_1=2237.9045500597854\n",
825"bitrate_at_elo(\"jpegli\", turbo_bitrate_at_elo_2_1)=1.5136595319075263\n"
826]
827}
828],
829"source": [
830"turbo_bitrate_at_elo_2_1 = elo_at_bitrate('libjpeg-turbo', 2.1)\n",
831"print(f'{turbo_bitrate_at_elo_2_1=}')\n",
832"print(f'{bitrate_at_elo(\"jpegli\", turbo_bitrate_at_elo_2_1)=}')"
833]
834}
835],
836"metadata": {
837"colab": {
838"last_runtime": {
839"build_target": "//learning/grp/tools/ml_python:ml_notebook",
840"kind": "private"
841},
842"provenance": [
843{
844"file_id": "17gbYbsEwG2G3n8gcVwOHdmv8vb6v_cqL",
845"timestamp": 1707225365477
846},
847{
848"file_id": "1hYb8c5oOumv1yVLbbscsrxBImaUyipyt",
849"timestamp": 1706791703210
850}
851]
852},
853"kernelspec": {
854"display_name": "Python 3",
855"name": "python3"
856},
857"language_info": {
858"name": "python"
859}
860},
861"nbformat": 4,
862"nbformat_minor": 0
863}
864