Instructions to use sangramrout/AIC_Challenge with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- ultralytics
How to use sangramrout/AIC_Challenge with ultralytics:
from ultralytics import YOLOvv8 model = YOLOvv8.from_pretrained("sangramrout/AIC_Challenge") source = 'http://images.cocodataset.org/val2017/000000039769.jpg' model.predict(source=source, save=True) - Notebooks
- Google Colab
- Kaggle
AIC port detector β fine-tuned YOLOv8m (sfp_port / sc_port)
Fine-tuned YOLOv8m that detects the two connector ports on the task board of the AI for Industry Challenge cable-insertion task (UR5e inserts a cable plug into a randomised task-board port).
This is the only learned component in our solution. Everything downstream of it β board pose, port lock, approach, and the force-controlled seat β is geometric.
Classes
| id | name | description |
|---|---|---|
| 0 | sfp_port |
SFP cage opening on a NIC card (two per card, 21.8 mm apart) |
| 1 | sc_port |
SC fibre port on an SC rail module |
Note the base yolov8m.pt has an 80-class COCO head; this checkpoint has a custom
2-class head and is not interchangeable with a stock checkpoint.
Training
| base | yolov8m.pt (stock ultralytics) |
| data | sangramrout/AIC_Challenge β 11,452 train / 905 val |
| epochs | 50 |
| ultralytics | 8.4.90 |
Training data is synthetic β rendered from the challenge's Gazebo simulation (RGB from the left/center/right scene cameras), not real photographs.
Usage
from ultralytics import YOLO
model = YOLO("best_final.pt")
res = model.predict(image_bgr, conf=0.25)[0] # image at native 1024x1152
for cls, xywh in zip(res.boxes.cls.int().tolist(), res.boxes.xywh.tolist()):
print(["sfp_port", "sc_port"][cls], xywh) # box centre -> back-project to the board plane
In our pipeline the box centre is back-projected onto the board's CAD z-plane, then gated to the target module before averaging β see Known pitfall below.
Known pitfall β gate before you average
The detector fires on every port on the board, not just the target. The eval scene spawns three SC modules and multiple NIC cards, so taking a median over all detections of a class averages across distractor modules and lands the estimate tens of millimetres from the true port (we measured 58 mm on SC this way).
Select the target module first (we gate by board-frame Y), then take the robust median of the survivors. That single change took our SC port lock from 58 mm β 2 mm, with no change to the detector.
Links
- Code: https://github.com/skr3178/aic
- Dataset: https://huggingface.co/datasets/sangramrout/AIC_Challenge
License
AGPL-3.0, inherited from Ultralytics YOLOv8.
- Downloads last month
- 12