-
Notifications
You must be signed in to change notification settings - Fork 86
Add turbo color map #1055
Add turbo color map #1055
Changes from 16 commits
d66314d
551d906
78763f9
e5f0753
5575a8a
7409446
c6a15d8
af60f92
53b92f5
e3c5d24
7adde5a
c6f29ff
cae7235
a0ab393
70ca9b4
0b733f1
9f81c44
8fdbcbb
cc2eb9b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,8 +16,11 @@ | |
from __future__ import division | ||
|
||
import math | ||
import numpy as np | ||
from enum import Enum | ||
|
||
from blueoil.turbo_color_map import TURBO_CMAP_DATA | ||
|
||
|
||
class Tasks(Enum): | ||
CLASSIFICATION = "IMAGE.CLASSIFICATION" | ||
|
@@ -57,3 +60,45 @@ def get_color_map(length): | |
# This function generate arbitrary length color map. | ||
color_map = COLOR_MAP * int(math.ceil(length / len(COLOR_MAP))) | ||
return color_map[:length] | ||
|
||
|
||
# For replacing the Matplotlib Jet colormap, we use the Turbo color map | ||
# https://ai.googleblog.com/2019/08/turbo-improved-rainbow-colormap-for.html | ||
# The colormap allows for a large number of quantization levels: | ||
# https://github.com/blue-oil/blueoil/tree/master/docs/_static/turbo_cmap.png | ||
|
||
# Referred from the following gist: | ||
# https://gist.github.com/mikhailov-work/ee72ba4191942acecc03fe6da94fc73f | ||
# Copyright 2019 Google LLC. | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
# Changes: | ||
# 1. Vectorized the implementation using numpy | ||
# 2. Use numpy.modf to get integer and float parts | ||
# 3. Provided an example in comments | ||
|
||
def apply_color_map(image): | ||
turbo_cmap_data = np.asarray(TURBO_CMAP_DATA) | ||
x = np.asarray(image) | ||
x = x.clip(0., 1.) | ||
|
||
# Use numpy.modf to get the integer and decimal parts of feature values | ||
# in the input feature map (or heatmap) that has to be colored. | ||
# Example: | ||
# >>> import numpy as np | ||
# >>> x = np.array([1.2, 2.3, 4.5, 20.45, 6.75, 8.88]) | ||
# >>> f, i = np.modf(x) # returns a tuple of length 2 | ||
# >>> print(i.shape, f.shape) | ||
# >>> (6,) (6,) | ||
# >>> print(i) | ||
# >>> [ 1. 2. 4. 20. 6. 8.] | ||
# >>> print(f) | ||
# >>> [0.2 0.3 0.5 0.45 0.75 0.88] | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. some lines wouldn't have There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Got it. Will update that. |
||
f, a = np.modf(x * 255.0) | ||
a = a.astype(int) | ||
b = (a + 1).clip(max=255) | ||
image_colored = ( | ||
turbo_cmap_data[a] | ||
+ (turbo_cmap_data[b] - turbo_cmap_data[a]) * f[..., None] | ||
) | ||
return image_colored |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,279 @@ | ||
# -*- coding: utf-8 -*- | ||
# Copyright 2020 The Blueoil Authors. All Rights Reserved. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
# ============================================================================= | ||
|
||
# Colormap table taken from the following gist: | ||
# https://gist.github.com/mikhailov-work/ee72ba4191942acecc03fe6da94fc73f | ||
# Copyright 2019 Google LLC. | ||
# SPDX-License-Identifier: Apache-2.0 | ||
Comment on lines
+17
to
+20
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. so what's the license of this file? I feel it's weird having two license claims on this file. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Okay, I will remove the Blueoil LICENSE header, as the table in the file is from the gist so I'll put these four lines at the top. |
||
|
||
TURBO_CMAP_DATA = [ | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe we need to set symlink to here There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ah, I get it. That will make sure the tests will pass (the ones that have failed, because the symlinks are missing there). Thank you!! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same as above. |
||
[0.18995, 0.07176, 0.23217], | ||
[0.19483, 0.08339, 0.26149], | ||
[0.19956, 0.09498, 0.29024], | ||
[0.20415, 0.10652, 0.31844], | ||
[0.20860, 0.11802, 0.34607], | ||
[0.21291, 0.12947, 0.37314], | ||
[0.21708, 0.14087, 0.39964], | ||
[0.22111, 0.15223, 0.42558], | ||
[0.22500, 0.16354, 0.45096], | ||
[0.22875, 0.17481, 0.47578], | ||
[0.23236, 0.18603, 0.50004], | ||
[0.23582, 0.19720, 0.52373], | ||
[0.23915, 0.20833, 0.54686], | ||
[0.24234, 0.21941, 0.56942], | ||
[0.24539, 0.23044, 0.59142], | ||
[0.24830, 0.24143, 0.61286], | ||
[0.25107, 0.25237, 0.63374], | ||
[0.25369, 0.26327, 0.65406], | ||
[0.25618, 0.27412, 0.67381], | ||
[0.25853, 0.28492, 0.69300], | ||
[0.26074, 0.29568, 0.71162], | ||
[0.26280, 0.30639, 0.72968], | ||
[0.26473, 0.31706, 0.74718], | ||
[0.26652, 0.32768, 0.76412], | ||
[0.26816, 0.33825, 0.78050], | ||
[0.26967, 0.34878, 0.79631], | ||
[0.27103, 0.35926, 0.81156], | ||
[0.27226, 0.36970, 0.82624], | ||
[0.27334, 0.38008, 0.84037], | ||
[0.27429, 0.39043, 0.85393], | ||
[0.27509, 0.40072, 0.86692], | ||
[0.27576, 0.41097, 0.87936], | ||
[0.27628, 0.42118, 0.89123], | ||
[0.27667, 0.43134, 0.90254], | ||
[0.27691, 0.44145, 0.91328], | ||
[0.27701, 0.45152, 0.92347], | ||
[0.27698, 0.46153, 0.93309], | ||
[0.27680, 0.47151, 0.94214], | ||
[0.27648, 0.48144, 0.95064], | ||
[0.27603, 0.49132, 0.95857], | ||
[0.27543, 0.50115, 0.96594], | ||
[0.27469, 0.51094, 0.97275], | ||
[0.27381, 0.52069, 0.97899], | ||
[0.27273, 0.53040, 0.98461], | ||
[0.27106, 0.54015, 0.98930], | ||
[0.26878, 0.54995, 0.99303], | ||
[0.26592, 0.55979, 0.99583], | ||
[0.26252, 0.56967, 0.99773], | ||
[0.25862, 0.57958, 0.99876], | ||
[0.25425, 0.58950, 0.99896], | ||
[0.24946, 0.59943, 0.99835], | ||
[0.24427, 0.60937, 0.99697], | ||
[0.23874, 0.61931, 0.99485], | ||
[0.23288, 0.62923, 0.99202], | ||
[0.22676, 0.63913, 0.98851], | ||
[0.22039, 0.64901, 0.98436], | ||
[0.21382, 0.65886, 0.97959], | ||
[0.20708, 0.66866, 0.97423], | ||
[0.20021, 0.67842, 0.96833], | ||
[0.19326, 0.68812, 0.96190], | ||
[0.18625, 0.69775, 0.95498], | ||
[0.17923, 0.70732, 0.94761], | ||
[0.17223, 0.71680, 0.93981], | ||
[0.16529, 0.72620, 0.93161], | ||
[0.15844, 0.73551, 0.92305], | ||
[0.15173, 0.74472, 0.91416], | ||
[0.14519, 0.75381, 0.90496], | ||
[0.13886, 0.76279, 0.89550], | ||
[0.13278, 0.77165, 0.88580], | ||
[0.12698, 0.78037, 0.87590], | ||
[0.12151, 0.78896, 0.86581], | ||
[0.11639, 0.79740, 0.85559], | ||
[0.11167, 0.80569, 0.84525], | ||
[0.10738, 0.81381, 0.83484], | ||
[0.10357, 0.82177, 0.82437], | ||
[0.10026, 0.82955, 0.81389], | ||
[0.09750, 0.83714, 0.80342], | ||
[0.09532, 0.84455, 0.79299], | ||
[0.09377, 0.85175, 0.78264], | ||
[0.09287, 0.85875, 0.77240], | ||
[0.09267, 0.86554, 0.76230], | ||
[0.09320, 0.87211, 0.75237], | ||
[0.09451, 0.87844, 0.74265], | ||
[0.09662, 0.88454, 0.73316], | ||
[0.09958, 0.89040, 0.72393], | ||
[0.10342, 0.89600, 0.71500], | ||
[0.10815, 0.90142, 0.70599], | ||
[0.11374, 0.90673, 0.69651], | ||
[0.12014, 0.91193, 0.68660], | ||
[0.12733, 0.91701, 0.67627], | ||
[0.13526, 0.92197, 0.66556], | ||
[0.14391, 0.92680, 0.65448], | ||
[0.15323, 0.93151, 0.64308], | ||
[0.16319, 0.93609, 0.63137], | ||
[0.17377, 0.94053, 0.61938], | ||
[0.18491, 0.94484, 0.60713], | ||
[0.19659, 0.94901, 0.59466], | ||
[0.20877, 0.95304, 0.58199], | ||
[0.22142, 0.95692, 0.56914], | ||
[0.23449, 0.96065, 0.55614], | ||
[0.24797, 0.96423, 0.54303], | ||
[0.26180, 0.96765, 0.52981], | ||
[0.27597, 0.97092, 0.51653], | ||
[0.29042, 0.97403, 0.50321], | ||
[0.30513, 0.97697, 0.48987], | ||
[0.32006, 0.97974, 0.47654], | ||
[0.33517, 0.98234, 0.46325], | ||
[0.35043, 0.98477, 0.45002], | ||
[0.36581, 0.98702, 0.43688], | ||
[0.38127, 0.98909, 0.42386], | ||
[0.39678, 0.99098, 0.41098], | ||
[0.41229, 0.99268, 0.39826], | ||
[0.42778, 0.99419, 0.38575], | ||
[0.44321, 0.99551, 0.37345], | ||
[0.45854, 0.99663, 0.36140], | ||
[0.47375, 0.99755, 0.34963], | ||
[0.48879, 0.99828, 0.33816], | ||
[0.50362, 0.99879, 0.32701], | ||
[0.51822, 0.99910, 0.31622], | ||
[0.53255, 0.99919, 0.30581], | ||
[0.54658, 0.99907, 0.29581], | ||
[0.56026, 0.99873, 0.28623], | ||
[0.57357, 0.99817, 0.27712], | ||
[0.58646, 0.99739, 0.26849], | ||
[0.59891, 0.99638, 0.26038], | ||
[0.61088, 0.99514, 0.25280], | ||
[0.62233, 0.99366, 0.24579], | ||
[0.63323, 0.99195, 0.23937], | ||
[0.64362, 0.98999, 0.23356], | ||
[0.65394, 0.98775, 0.22835], | ||
[0.66428, 0.98524, 0.22370], | ||
[0.67462, 0.98246, 0.21960], | ||
[0.68494, 0.97941, 0.21602], | ||
[0.69525, 0.97610, 0.21294], | ||
[0.70553, 0.97255, 0.21032], | ||
[0.71577, 0.96875, 0.20815], | ||
[0.72596, 0.96470, 0.20640], | ||
[0.73610, 0.96043, 0.20504], | ||
[0.74617, 0.95593, 0.20406], | ||
[0.75617, 0.95121, 0.20343], | ||
[0.76608, 0.94627, 0.20311], | ||
[0.77591, 0.94113, 0.20310], | ||
[0.78563, 0.93579, 0.20336], | ||
[0.79524, 0.93025, 0.20386], | ||
[0.80473, 0.92452, 0.20459], | ||
[0.81410, 0.91861, 0.20552], | ||
[0.82333, 0.91253, 0.20663], | ||
[0.83241, 0.90627, 0.20788], | ||
[0.84133, 0.89986, 0.20926], | ||
[0.85010, 0.89328, 0.21074], | ||
[0.85868, 0.88655, 0.21230], | ||
[0.86709, 0.87968, 0.21391], | ||
[0.87530, 0.87267, 0.21555], | ||
[0.88331, 0.86553, 0.21719], | ||
[0.89112, 0.85826, 0.21880], | ||
[0.89870, 0.85087, 0.22038], | ||
[0.90605, 0.84337, 0.22188], | ||
[0.91317, 0.83576, 0.22328], | ||
[0.92004, 0.82806, 0.22456], | ||
[0.92666, 0.82025, 0.22570], | ||
[0.93301, 0.81236, 0.22667], | ||
[0.93909, 0.80439, 0.22744], | ||
[0.94489, 0.79634, 0.22800], | ||
[0.95039, 0.78823, 0.22831], | ||
[0.95560, 0.78005, 0.22836], | ||
[0.96049, 0.77181, 0.22811], | ||
[0.96507, 0.76352, 0.22754], | ||
[0.96931, 0.75519, 0.22663], | ||
[0.97323, 0.74682, 0.22536], | ||
[0.97679, 0.73842, 0.22369], | ||
[0.98000, 0.73000, 0.22161], | ||
[0.98289, 0.72140, 0.21918], | ||
[0.98549, 0.71250, 0.21650], | ||
[0.98781, 0.70330, 0.21358], | ||
[0.98986, 0.69382, 0.21043], | ||
[0.99163, 0.68408, 0.20706], | ||
[0.99314, 0.67408, 0.20348], | ||
[0.99438, 0.66386, 0.19971], | ||
[0.99535, 0.65341, 0.19577], | ||
[0.99607, 0.64277, 0.19165], | ||
[0.99654, 0.63193, 0.18738], | ||
[0.99675, 0.62093, 0.18297], | ||
[0.99672, 0.60977, 0.17842], | ||
[0.99644, 0.59846, 0.17376], | ||
[0.99593, 0.58703, 0.16899], | ||
[0.99517, 0.57549, 0.16412], | ||
[0.99419, 0.56386, 0.15918], | ||
[0.99297, 0.55214, 0.15417], | ||
[0.99153, 0.54036, 0.14910], | ||
[0.98987, 0.52854, 0.14398], | ||
[0.98799, 0.51667, 0.13883], | ||
[0.98590, 0.50479, 0.13367], | ||
[0.98360, 0.49291, 0.12849], | ||
[0.98108, 0.48104, 0.12332], | ||
[0.97837, 0.46920, 0.11817], | ||
[0.97545, 0.45740, 0.11305], | ||
[0.97234, 0.44565, 0.10797], | ||
[0.96904, 0.43399, 0.10294], | ||
[0.96555, 0.42241, 0.09798], | ||
[0.96187, 0.41093, 0.09310], | ||
[0.95801, 0.39958, 0.08831], | ||
[0.95398, 0.38836, 0.08362], | ||
[0.94977, 0.37729, 0.07905], | ||
[0.94538, 0.36638, 0.07461], | ||
[0.94084, 0.35566, 0.07031], | ||
[0.93612, 0.34513, 0.06616], | ||
[0.93125, 0.33482, 0.06218], | ||
[0.92623, 0.32473, 0.05837], | ||
[0.92105, 0.31489, 0.05475], | ||
[0.91572, 0.30530, 0.05134], | ||
[0.91024, 0.29599, 0.04814], | ||
[0.90463, 0.28696, 0.04516], | ||
[0.89888, 0.27824, 0.04243], | ||
[0.89298, 0.26981, 0.03993], | ||
[0.88691, 0.26152, 0.03753], | ||
[0.88066, 0.25334, 0.03521], | ||
[0.87422, 0.24526, 0.03297], | ||
[0.86760, 0.23730, 0.03082], | ||
[0.86079, 0.22945, 0.02875], | ||
[0.85380, 0.22170, 0.02677], | ||
[0.84662, 0.21407, 0.02487], | ||
[0.83926, 0.20654, 0.02305], | ||
[0.83172, 0.19912, 0.02131], | ||
[0.82399, 0.19182, 0.01966], | ||
[0.81608, 0.18462, 0.01809], | ||
[0.80799, 0.17753, 0.01660], | ||
[0.79971, 0.17055, 0.01520], | ||
[0.79125, 0.16368, 0.01387], | ||
[0.78260, 0.15693, 0.01264], | ||
[0.77377, 0.15028, 0.01148], | ||
[0.76476, 0.14374, 0.01041], | ||
[0.75556, 0.13731, 0.00942], | ||
[0.74617, 0.13098, 0.00851], | ||
[0.73661, 0.12477, 0.00769], | ||
[0.72686, 0.11867, 0.00695], | ||
[0.71692, 0.11268, 0.00629], | ||
[0.70680, 0.10680, 0.00571], | ||
[0.69650, 0.10102, 0.00522], | ||
[0.68602, 0.09536, 0.00481], | ||
[0.67535, 0.08980, 0.00449], | ||
[0.66449, 0.08436, 0.00424], | ||
[0.65345, 0.07902, 0.00408], | ||
[0.64223, 0.07380, 0.00401], | ||
[0.63082, 0.06868, 0.00401], | ||
[0.61923, 0.06367, 0.00410], | ||
[0.60746, 0.05878, 0.00427], | ||
[0.59550, 0.05399, 0.00453], | ||
[0.58336, 0.04931, 0.00486], | ||
[0.57103, 0.04474, 0.00529], | ||
[0.55852, 0.04028, 0.00579], | ||
[0.54583, 0.03593, 0.00638], | ||
[0.53295, 0.03169, 0.00705], | ||
[0.51989, 0.02756, 0.00780], | ||
[0.50664, 0.02354, 0.00863], | ||
[0.49321, 0.01963, 0.00955], | ||
[0.47960, 0.01583, 0.01055] | ||
] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
../../../blueoil/turbo_color_map.py |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing link. Do you have plan to add image to the documentation?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@iizukak Yes, I will add that image and upload to the commit.