library("rplatypus")
separation_rim(width = 2)$name
[1] "rim"
$width
[1] 2
separation_flows(mode = "diffusion")$name
[1] "flows"
$mode
[1] "diffusion"
One per model, and it decides the head’s width and which losses are admissible - both derived by the engine rather than stated here, so there is no channel count to get wrong. Pass the result as a model’s separation; see u_net().
separation_rim(width = NULL)
separation_flows(mode = NULL, loss = NULL, weight = NULL)
width
|
For rim, how many pixels wide the rim is, in the model’s input resolution. Unset uses the engine’s default, which is 2 and stands on an argument rather than on a measurement: the published sweep peaked at 3 pixels of source resolution, which on a 520-pixel case read at 256 is about 1.5 pixels of model input, and a sweep in model pixels has not been run.
|
mode
|
For flows, “diffusion” or “centroid”. Unset uses the engine’s default of “diffusion”, which stands on a measurement: decoded against the truth it reaches 0.9924 where “centroid” reaches 0.9478, because a straight line to a centroid leaves a crescent-shaped object.
|
loss
|
For flows, the objective for the vector channels, which has to be one defined over numbers rather than over classes. Unset uses the engine’s default.
|
weight
|
For flows, how much of the total objective the vector half provides.
|
separation_rim() trains three classes - background, object interior, object rim - and the rim is what separates two touching objects. separation_flows() trains a vector field pointing at each object’s own sink, so every foreground pixel carries a value and none of them is spent on being a boundary.
What this is worth was measured and it is not flattering. On the Data Science Bowl’s held-out cases the flow route is worth +0.0680 of instance average precision over decode_connected_components(), which ignores the signal entirely, and the rim route +0.0640 - while substituting a perfect mask is worth +0.2398. So the mask is the limit by a factor of 3.6, and a run that beats the published weights’ 0.4888 without reaching 0.7655 has improved its mask and said nothing about separation.
There is no hv. Its markers lose to a one-pixel erosion on perfect inputs, 0.9382 against 0.9807, so naming it would promise a mechanism that was measured as absent.
A separation block, to be passed as a model’s separation.
decodings, instance_data()
library("rplatypus")
separation_rim(width = 2)$name
[1] "rim"
$width
[1] 2
separation_flows(mode = "diffusion")$name
[1] "flows"
$mode
[1] "diffusion"