🐦 Twitter Post Details

Viewing enriched Twitter post

@strickvl

I've been building panlabel — a fast Rust CLI that converts between dataset annotation formats — and I'm a few releases behind on sharing updates. Here's a quick catch-up. v0.3.0 added Hugging Face ImageFolder support, including remote Hub import via --hf-repo. You can point it at a HF dataset repo and it figures out the layout (metadata.jsonl, parquet shards, even zip-style splits that contain YOLO or COCO inside). v0.4.0 overhauled auto-detection so it gives you concrete evidence when format detection is ambiguous ("found YOLO labels/ but missing images/") instead of a generic error. Also added Docker images. v0.5.0 brought split-aware YOLO reading for Roboflow/Ultralytics Hub exports and conversion report explainability — every adapter now explains its deterministic policies so you know exactly what happens to your data. v0.6.0 is the big one. Five new format adapters: → LabelMe JSON (per-image, with polygon-to-bbox envelope) → Apple CreateML JSON (center-based coords) → KITTI (autonomous driving standard — 15 fields per line) → VGG Image Annotator (VIA) JSON → RetinaNet Keras CSV That brings panlabel to 13 supported formats with full read, write, and auto-detection. Also in v0.6.0: YOLO confidence token support, dry-run mode for previewing conversions, and content-based CSV detection. Single binary, no Python dependencies. Install via pip, brew, cargo, or grab a pre-built binary from GitHub releases. This is the kind of project I enjoy just steadily plodding away at — ticking off one format at a time until every common object detection annotation format is covered. Still sticking with detection bboxes for now, but the format list keeps growing. #ObjectDetection #Rust #MachineLearning #ComputerVision #OpenSource

šŸ“Š Media Metadata

{
  "score": 0.42,
  "score_components": {
    "author": 0.09,
    "engagement": 0.0,
    "quality": 0.12,
    "source": 0.135,
    "nlp": 0.05,
    "recency": 0.025
  },
  "scored_at": "2026-03-15T13:32:06.606958",
  "import_source": "api_import",
  "source_tagged_at": "2026-03-15T13:32:06.606971",
  "enriched": true,
  "enriched_at": "2026-03-15T13:32:06.606974"
}

šŸ”§ Raw API Response

{
  "type": "tweet",
  "id": "2033161206870282353",
  "url": "https://x.com/strickvl/status/2033161206870282353",
  "twitterUrl": "https://twitter.com/strickvl/status/2033161206870282353",
  "text": "I've been building panlabel — a fast Rust CLI that converts between dataset annotation formats — and I'm a few releases behind on sharing updates. Here's a quick catch-up.\n\nv0.3.0 added Hugging Face ImageFolder support, including remote Hub import via --hf-repo. You can point it at a HF dataset repo and it figures out the layout (metadata.jsonl, parquet shards, even zip-style splits that contain YOLO or COCO inside).\n\nv0.4.0 overhauled auto-detection so it gives you concrete evidence when format detection is ambiguous (\"found YOLO labels/ but missing images/\") instead of a generic error. Also added Docker images.\n\nv0.5.0 brought split-aware YOLO reading for Roboflow/Ultralytics Hub exports and conversion report explainability — every adapter now explains its deterministic policies so you know exactly what happens to your data.\n\nv0.6.0 is the big one. Five new format adapters:\n\n→ LabelMe JSON (per-image, with polygon-to-bbox envelope)\n→ Apple CreateML JSON (center-based coords)\n→ KITTI (autonomous driving standard — 15 fields per line)\n→ VGG Image Annotator (VIA) JSON\n→ RetinaNet Keras CSV\n\nThat brings panlabel to 13 supported formats with full read, write, and auto-detection. Also in v0.6.0: YOLO confidence token support, dry-run mode for previewing conversions, and content-based CSV detection.\n\nSingle binary, no Python dependencies. Install via pip, brew, cargo, or grab a pre-built binary from GitHub releases.\n\nThis is the kind of project I enjoy just steadily plodding away at — ticking off one format at a time until every common object detection annotation format is covered. Still sticking with detection bboxes for now, but the format list keeps growing.\n\n#ObjectDetection #Rust #MachineLearning #ComputerVision #OpenSource",
  "source": "Twitter for iPhone",
  "retweetCount": 1,
  "replyCount": 1,
  "likeCount": 1,
  "quoteCount": 0,
  "viewCount": 41,
  "createdAt": "Sun Mar 15 12:39:40 +0000 2026",
  "lang": "en",
  "bookmarkCount": 0,
  "isReply": false,
  "inReplyToId": null,
  "conversationId": "2033161206870282353",
  "displayTextRange": [
    0,
    279
  ],
  "inReplyToUserId": null,
  "inReplyToUsername": null,
  "author": {
    "type": "user",
    "userName": "strickvl",
    "url": "https://x.com/strickvl",
    "twitterUrl": "https://twitter.com/strickvl",
    "id": "244511094",
    "name": "Alex Strick van Linschoten",
    "isVerified": false,
    "isBlueVerified": true,
    "verifiedType": null,
    "profilePicture": "https://pbs.twimg.com/profile_images/1769259889459691520/87SAOSFo_normal.jpg",
    "coverPicture": "",
    "description": "ML Engineer (@zenml_io), researcher (& author of a few books). 🐘: @strickvl@mathstodon.xyz and šŸ¦‹: @strickvl.bsky.social. Created https://t.co/fLFfPSwIx8",
    "location": "Delft, The Netherlands",
    "followers": 3144,
    "following": 465,
    "status": "",
    "canDm": true,
    "canMediaTag": false,
    "createdAt": "Sat Jan 29 13:38:59 +0000 2011",
    "entities": {
      "description": {
        "urls": [
          {
            "display_url": "geminibyexample.com",
            "expanded_url": "http://geminibyexample.com",
            "indices": [
              129,
              152
            ],
            "url": "https://t.co/fLFfPSwIx8"
          }
        ]
      },
      "url": {
        "urls": [
          {
            "display_url": "mlops.systems",
            "expanded_url": "https://mlops.systems",
            "indices": [
              0,
              23
            ],
            "url": "https://t.co/27SnsA37Bu"
          }
        ]
      }
    },
    "fastFollowersCount": 0,
    "favouritesCount": 7477,
    "hasCustomTimelines": true,
    "isTranslator": false,
    "mediaCount": 258,
    "statusesCount": 3054,
    "withheldInCountries": [],
    "affiliatesHighlightedLabel": {},
    "possiblySensitive": false,
    "pinnedTweetIds": [
      "2000518579200938188"
    ],
    "profile_bio": {},
    "isAutomated": false,
    "automatedBy": null
  },
  "extendedEntities": {},
  "card": null,
  "place": {},
  "entities": {
    "hashtags": [
      {
        "indices": [
          1686,
          1702
        ],
        "text": "ObjectDetection"
      },
      {
        "indices": [
          1703,
          1708
        ],
        "text": "Rust"
      },
      {
        "indices": [
          1709,
          1725
        ],
        "text": "MachineLearning"
      },
      {
        "indices": [
          1726,
          1741
        ],
        "text": "ComputerVision"
      },
      {
        "indices": [
          1742,
          1753
        ],
        "text": "OpenSource"
      }
    ],
    "symbols": [],
    "urls": [],
    "user_mentions": []
  },
  "quoted_tweet": null,
  "retweeted_tweet": null,
  "article": null
}