Update one-class segmentation category mask behavior on GPU to match latest API
PiperOrigin-RevId: 529853658
This commit is contained in:
parent
f6d0a5e03a
commit
3562a7f7dc
|
@ -188,7 +188,7 @@ void main() {
|
||||||
// Special argmax shader for N=1 classes. We don't need to worry about softmax
|
// Special argmax shader for N=1 classes. We don't need to worry about softmax
|
||||||
// activation (it is assumed softmax requires N > 1 classes), but this should
|
// activation (it is assumed softmax requires N > 1 classes), but this should
|
||||||
// occur after SIGMOID activation if specified. Instead of a true argmax, we
|
// occur after SIGMOID activation if specified. Instead of a true argmax, we
|
||||||
// simply use 0.5 as the cutoff, assigning 1 (foreground) or 0 (background)
|
// simply use 0.5 as the cutoff, assigning 0 (foreground) or 255 (background)
|
||||||
// based on whether the confidence value reaches this cutoff or not,
|
// based on whether the confidence value reaches this cutoff or not,
|
||||||
// respectively.
|
// respectively.
|
||||||
static constexpr char kArgmaxOneClassShader[] = R"(
|
static constexpr char kArgmaxOneClassShader[] = R"(
|
||||||
|
@ -199,12 +199,12 @@ uniform sampler2D input_texture;
|
||||||
void main() {
|
void main() {
|
||||||
float input_val = texture2D(input_texture, sample_coordinate).x;
|
float input_val = texture2D(input_texture, sample_coordinate).x;
|
||||||
// Category is just value rounded to nearest integer; then we map to either
|
// Category is just value rounded to nearest integer; then we map to either
|
||||||
// 0 or 1/255 accordingly. If the input has been activated properly, then the
|
// 0 or 1 accordingly. If the input has been activated properly, then the
|
||||||
// values should always be in the range [0, 1]. But just in case it hasn't, to
|
// values should always be in the range [0, 1]. But just in case it hasn't, to
|
||||||
// avoid category overflow issues when the activation function is not properly
|
// avoid category overflow issues when the activation function is not properly
|
||||||
// chosen, we add an extra clamp here, as performance hit is minimal.
|
// chosen, we add an extra clamp here, as performance hit is minimal.
|
||||||
float category = clamp(floor(input_val + 0.5), 0.0, 1.0);
|
float category = clamp(floor(1.5 - input_val), 0.0, 1.0);
|
||||||
gl_FragColor = vec4(category / 255.0, 0.0, 0.0, 1.0);
|
gl_FragColor = vec4(category, 0.0, 0.0, 1.0);
|
||||||
})";
|
})";
|
||||||
|
|
||||||
// Softmax is in 3 steps:
|
// Softmax is in 3 steps:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user