Industries · 7 min read
Hog ring inspection on the seat line with object detection under the fabric
Every hog ring boxed and its closure read among wires and clips, the count checked against the build order, and the ring under the fabric is a labeling rule.
Summary
This post puts a camera over an automotive seat assembly station and works through boxing each hog ring among the listing wires, clips and springs that look like it, reading whether each ring is closed, and checking the count against the seat's design. It concludes that a ring half hidden by fabric is a written labeling rule and a review, rather than something to retrain around, and that the expected count has to come from the build order. It is for seat and trim line engineers.
Esdras Ntuyenabo · Engineer · Sep 25, 2026

Assembly bench with a housing, tray and wiring laid out, generated scene with detections from our model
The seat cushion at station 4 is fixed to its frame with hog rings, small C-shaped steel clips that a pneumatic tool closes around the listing wire in the fabric and the wire on the frame. A cushion takes a few dozen of them. A ring that was never fitted, or was fitted and did not close, is a cushion that will pull loose over a year of use and come back as a warranty claim with the fabric sagging off the bolster. The operator counts them by eye at the end of the cycle, on a cushion where half the rings are under fabric.
A camera over the station sees the cushion at the end of the cycle, and the two things it is asked are how many rings, and how many of them are closed.
Object detection has to tell a hog ring from everything else made of wire
A seat frame is a thicket of steel. Listing wires, border wires, springs, clips, the tool's own jaws at the edge of the frame. A model that learns "small shiny metal thing" boxes all of it, and a count that includes the springs is worse than no count. So the class is the hog ring, and only the hog ring, and the model has to learn the difference between a ring closed around two wires and the wire it is closed around.
The labeling is boxes on rings, from the station camera at its mount over the cushion, with the fabric and the wires and the tool in the frame. You type "hog ring" once, Lexi proposes a box on every ring in every frame, and a person checks the proposals. Most of the attention goes on the rings that sit against a spring, because a ring on a spring is the one a first-week labeler boxes as spring or misses. The assembly verification use case says why a box is the right label here: presence, position and orientation are all read from the box, and there is no measurement of extent that a mask would add.
Frames with every ring correctly fitted are the bulk of the footage, and frames with a missing or open ring are rare, so the rare frames are kept at a higher share than they occur. In our manufacturing work the inspection models hold 99%+ accuracy maintained in production, and on a seat line that is the count agreeing with the operator's on the cushions the operator counted twice.
Closed or open is a second class on the same box
A ring that was fitted and did not close looks, from above, like a ring with a gap in it. So the class carries the closure state: closed ring, open ring. An open ring is a defect whatever the count says, since the count of fitted rings is right and the cushion is still wrong. Deformed rings, crushed by the tool, get their own class if the line sees enough of them to matter and are otherwise labeled open, by a rule written before labeling starts.
The distinction is small in pixels. A closed ring is a closed C; an open one has a gap of a millimetre or two. That is only visible at the resolution of a camera mounted close enough, and a station that wants closure state needs the camera lower than a station that only wants a count. Deciding which of the two the station is comes before the camera is mounted.
The count is checked against the build order, and the build order changes
A cushion for one seat variant takes a different number of rings from the next. The expected count is a runtime input rather than a number in the rule: it comes from the build order for the seat on the fixture, or from the variant code the station already scans, and the rule compares the boxes counted against it. Detected equals expected passes. Fewer stops the cushion. More is a detection error, since the tool cannot fit rings that were not in the design, and goes for review rather than out of the door.
The stop is a rule written as a sentence, with a severity and a cooldown, approved before it goes live. Ring count under the build order at station 4, high, to the station screen and the line lead in Slack. An open ring is the same rule with a different message. What arrives is the frame with the rings boxed and the empty position marked, so the operator goes to the gap rather than recounting the cushion.
One aside from the line. The operators at station 4 still count the rings on the first cushion of every variant change by hand. The count on the build order is what the model's count gets checked against when the two disagree, which is how the line found out the build order was wrong for one variant.
The ring the fabric hides is a labeling rule and a review rather than a retrain
Half the rings on a cushion are under the fabric edge, and on some cushions the fabric folds over a ring completely. The camera cannot see it. No version of the model will see it, and retraining on more frames of the fold will teach the model to guess. The drift catalog calls this something is now in the way: part of the view is quietly gone, and the model reports what it can see.
The right answer is written down before labeling. A ring is boxed when its closure is visible; a ring under fabric is not boxed, and the count on that cushion is a count of visible rings. Then the rule compares the visible count against the expected count, and a shortfall on a cushion with fabric over the listing edge is a review rather than a stop. The operator lifts the edge, looks, and the verdict is recorded. A cushion where the fabric always hides the same three rings gets a written expected-visible count for that variant.
What the model does learn from is the frames it was unsure of.
LexData takes the seat model through its whole life. You type what to look for, Lexi puts a box on every ring in every frame, and a person checks each label before anything trains on it. The model then watches the station camera, in the cloud, on your servers, or on a runner beside the recorder. Frames it is unsure of come back to a person, the corrections retrain it, and the new version replaces the old one with no downtime. On a seat line the doubted frames are the rings on springs and the rings at the fabric edge, and the operator's verdicts on those are what the next version learns.
The correction rate says when the fabric or the rings changed
A new fabric supplier ships a cover in March with a wider listing hem, and the hem hides two more rings per cushion. A new ring supplier ships rings with a darker finish. Each shows up first as the operator overriding the count more often than last week, and the override rate is the signal to read before any accuracy figure moves.
The first is an occlusion change and the fix is the expected-visible count for that fabric. The second is a change in what a ring looks like, and the fix is a short window of frames from the new rings, labeled and folded in, which is an afternoon if the change is known about. My own view is that the seat line's change log and the review queue should be the same screen. A step in the override rate is almost always a line on the change log, and an engineer who can see both needs no further explanation. How the labels get checked before training is in the labeling doc.
See it on your own footage.
Start with your footageMore in Industries

Industries · 7 min read
Counting the screws in a kit with object detection over the bench
A camera over the kitting bench counts every screw and bottle one box at a time. Exact for kits, a band for cases, and a half-hidden item is a written rule.
Rajiya Sultana · Sep 25, 2026

Industries · 7 min read
Automated water meter reading with a camera in the vault
Ten digit classes in a fixed row turn a truck roll into a frame. A rolling digit and condensation on the glass are the frames that come back to a person.
Stephen Biswas · Sep 25, 2026

Industries · 7 min read
Body-in-white inspection with a station camera on unpainted steel
Dents on a bare body shell hide in the reflections. Masks give the extent, a second pass decides reportable, and a tightened tolerance is a spec change.
Finn Ellingwood · Sep 25, 2026