Unit 04.03: Where classical segmentation stops working
Classical segmentation encodes an assumption. Knowing which assumption tells you where it will stop working.
Consistent, describable appearance
Six scenarios sorted by whether the assumption holds.
The code lists them with a verdict each.
SCENARIOS = [
("high-contrast parts on a plain conveyor", "classical works well"),
("printed labels under even light", "classical works well"),
("cats in living rooms", "classical fails: no consistent edge"),
("damage on a textured carton", "classical fails: texture reads as edges"),
("one product, one fixed camera, fixed light", "classical works well"),
("anything where 'the object' varies in appearance", "needs a learned model"),
]
print(f"{'scenario':46} verdict")
for scenario, verdict in SCENARIOS:
print(f"{scenario:46} {verdict}")
print("""
Classical methods encode an assumption: the thing you want has a consistent,
describable appearance. Where that holds they are fast, free, and completely
inspectable.
Where it does not, no amount of parameter tuning fixes it -- the assumption is
wrong, not the numbers.
""")
Where the assumption holds - fixed camera, fixed lighting, one product - classical methods are fast, free, and completely inspectable. You can point at the line that made the decision.
Where it does not, parameter tuning cannot fix it. "Cats in living rooms" has no consistent edge, colour or texture, so there is no setting of a threshold that finds cats.
The mistake this prevents
The mistake is concluding from a failure that the parameters need more work. Ask instead whether the thing you want has a consistent describable appearance. If it does not, more tuning is time spent on an assumption that is wrong.
Takeaway
Classical methods assume a consistent describable appearance. Where that holds they are excellent; where it does not, no amount of tuning substitutes for a learned model.
