deeplake 0.3.25 → 0.3.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/browser/client.d.ts +4 -0
- package/dist/browser/browser/client.d.ts.map +1 -1
- package/dist/browser/browser/client.js +31 -6
- package/dist/browser/browser/client.js.map +1 -1
- package/dist/browser/shared/credentials.d.ts.map +1 -1
- package/dist/browser/shared/credentials.js +4 -6
- package/dist/browser/shared/credentials.js.map +1 -1
- package/dist/browser/shared/database.d.ts +3 -1
- package/dist/browser/shared/database.d.ts.map +1 -1
- package/dist/browser/shared/dlref.d.ts +3 -0
- package/dist/browser/shared/dlref.d.ts.map +1 -1
- package/dist/browser/shared/dlref.js +3 -0
- package/dist/browser/shared/dlref.js.map +1 -1
- package/dist/browser/shared/schema.d.ts.map +1 -1
- package/dist/browser/shared/schema.js +31 -20
- package/dist/browser/shared/schema.js.map +1 -1
- package/dist/browser/shared/token.d.ts.map +1 -1
- package/dist/browser/shared/token.js +1 -17
- package/dist/browser/shared/token.js.map +1 -1
- package/dist/browser/shared/wasm-common.d.ts.map +1 -1
- package/dist/browser/shared/wasm-common.js +24 -12
- package/dist/browser/shared/wasm-common.js.map +1 -1
- package/dist/node/node/client.d.ts +60 -2
- package/dist/node/node/client.d.ts.map +1 -1
- package/dist/node/node/client.js +139 -116
- package/dist/node/node/client.js.map +1 -1
- package/dist/node/node/formats/coco.d.ts +38 -0
- package/dist/node/node/formats/coco.d.ts.map +1 -1
- package/dist/node/node/formats/coco.js +94 -8
- package/dist/node/node/formats/coco.js.map +1 -1
- package/dist/node/node/formats/coco_panoptic.d.ts.map +1 -1
- package/dist/node/node/formats/coco_panoptic.js +1 -0
- package/dist/node/node/formats/coco_panoptic.js.map +1 -1
- package/dist/node/node/formats/lerobot.d.ts +42 -0
- package/dist/node/node/formats/lerobot.d.ts.map +1 -1
- package/dist/node/node/formats/lerobot.js +60 -1
- package/dist/node/node/formats/lerobot.js.map +1 -1
- package/dist/node/node/normalizers/binary.js +1 -1
- package/dist/node/node/normalizers/binary.js.map +1 -1
- package/dist/node/node/normalizers/huggingface.d.ts +20 -0
- package/dist/node/node/normalizers/huggingface.d.ts.map +1 -1
- package/dist/node/node/normalizers/huggingface.js +29 -0
- package/dist/node/node/normalizers/huggingface.js.map +1 -1
- package/dist/node/node/normalizers/image.js +1 -1
- package/dist/node/node/normalizers/image.js.map +1 -1
- package/dist/node/node/normalizers/pdf.js +2 -2
- package/dist/node/node/normalizers/pdf.js.map +1 -1
- package/dist/node/node/normalizers/text.js +1 -1
- package/dist/node/node/normalizers/text.js.map +1 -1
- package/dist/node/node/normalizers/video.js +2 -2
- package/dist/node/node/normalizers/video.js.map +1 -1
- package/dist/node/node/storage.d.ts +5 -0
- package/dist/node/node/storage.d.ts.map +1 -1
- package/dist/node/node/storage.js +141 -27
- package/dist/node/node/storage.js.map +1 -1
- package/dist/node/node/wasm.d.ts.map +1 -1
- package/dist/node/node/wasm.js +2 -1
- package/dist/node/node/wasm.js.map +1 -1
- package/dist/node/shared/credentials.d.ts.map +1 -1
- package/dist/node/shared/credentials.js +4 -6
- package/dist/node/shared/credentials.js.map +1 -1
- package/dist/node/shared/database.d.ts +3 -1
- package/dist/node/shared/database.d.ts.map +1 -1
- package/dist/node/shared/dlref.d.ts +3 -0
- package/dist/node/shared/dlref.d.ts.map +1 -1
- package/dist/node/shared/dlref.js +3 -0
- package/dist/node/shared/dlref.js.map +1 -1
- package/dist/node/shared/schema.d.ts.map +1 -1
- package/dist/node/shared/schema.js +31 -20
- package/dist/node/shared/schema.js.map +1 -1
- package/dist/node/shared/token.d.ts.map +1 -1
- package/dist/node/shared/token.js +1 -17
- package/dist/node/shared/token.js.map +1 -1
- package/dist/node/shared/wasm-common.d.ts.map +1 -1
- package/dist/node/shared/wasm-common.js +24 -12
- package/dist/node/shared/wasm-common.js.map +1 -1
- package/package.json +2 -1
- package/wasm/browser/deeplake_browser.js +1 -1
- package/wasm/browser/deeplake_browser.wasm +0 -0
- package/wasm/node/deeplake_node.js +1 -1
- package/wasm/node/deeplake_node.wasm +0 -0
|
@@ -1,4 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* COCO (Common Objects in Context) detection/captions format normalizer.
|
|
4
|
+
*
|
|
5
|
+
* Reads a COCO dataset directory and yields column-oriented batches
|
|
6
|
+
* suitable for `ManagedClient.ingest()`. Works with both train and val splits.
|
|
7
|
+
*
|
|
8
|
+
* Expected directory layout:
|
|
9
|
+
*
|
|
10
|
+
* coco_root/
|
|
11
|
+
* ├── train2017/ (or val2017/)
|
|
12
|
+
* │ ├── 000000000009.jpg
|
|
13
|
+
* │ └── ...
|
|
14
|
+
* └── annotations/
|
|
15
|
+
* ├── instances_train2017.json
|
|
16
|
+
* └── captions_train2017.json [optional]
|
|
17
|
+
*
|
|
18
|
+
* Columns produced per image (one row per image):
|
|
19
|
+
*
|
|
20
|
+
* coco_image_id - COCO image ID (int)
|
|
21
|
+
* image - Source image file bytes (IMAGE)
|
|
22
|
+
* mask - Segmentation mask PNG (SEGMENT_MASK)
|
|
23
|
+
* width - Image width in pixels
|
|
24
|
+
* height - Image height in pixels
|
|
25
|
+
* filename - Original image filename
|
|
26
|
+
* captions - JSON-encoded list of caption strings
|
|
27
|
+
* annotations - JSON-encoded list of annotation dicts
|
|
28
|
+
* categories - JSON-encoded category list (same for all rows)
|
|
29
|
+
* num_objects - Number of object annotations for this image
|
|
30
|
+
*
|
|
31
|
+
* No external dependencies — uses built-in Node.js `zlib` for PNG encoding
|
|
32
|
+
* and a pure JS scanline polygon rasterizer for mask rendering.
|
|
33
|
+
*/
|
|
2
34
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
35
|
if (k2 === undefined) k2 = k;
|
|
4
36
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -37,6 +69,7 @@ exports.Coco = void 0;
|
|
|
37
69
|
const fs = __importStar(require("fs"));
|
|
38
70
|
const path = __importStar(require("path"));
|
|
39
71
|
const zlib = __importStar(require("zlib"));
|
|
72
|
+
// ---- Format class ----
|
|
40
73
|
class Coco {
|
|
41
74
|
imagesDir;
|
|
42
75
|
batchSize;
|
|
@@ -49,13 +82,17 @@ class Coco {
|
|
|
49
82
|
this.imagesDir = options.imagesDir;
|
|
50
83
|
this.batchSize = options.batchSize ?? 100;
|
|
51
84
|
this.maxImages = options.maxImages ?? null;
|
|
85
|
+
// Detect split name from directory (e.g. "train2017", "val2017")
|
|
52
86
|
this._split = path.basename(this.imagesDir);
|
|
87
|
+
// Annotations directory
|
|
53
88
|
this._annDir =
|
|
54
89
|
options.annotationsDir ??
|
|
55
90
|
path.join(path.dirname(this.imagesDir), 'annotations');
|
|
91
|
+
// Instances JSON
|
|
56
92
|
this._instancesJson =
|
|
57
93
|
options.instancesJson ??
|
|
58
94
|
path.join(this._annDir, `instances_${this._split}.json`);
|
|
95
|
+
// Captions JSON
|
|
59
96
|
if (options.captionsJson === false) {
|
|
60
97
|
this._captionsJson = null;
|
|
61
98
|
}
|
|
@@ -91,6 +128,7 @@ class Coco {
|
|
|
91
128
|
}
|
|
92
129
|
const instances = JSON.parse(fs.readFileSync(this._instancesJson, 'utf-8'));
|
|
93
130
|
const categoriesJson = JSON.stringify(instances.categories ?? []);
|
|
131
|
+
// Build lookup: image_id -> list of annotation dicts
|
|
94
132
|
const annsByImage = new Map();
|
|
95
133
|
for (const ann of instances.annotations ?? []) {
|
|
96
134
|
let list = annsByImage.get(ann.image_id);
|
|
@@ -100,6 +138,7 @@ class Coco {
|
|
|
100
138
|
}
|
|
101
139
|
list.push(ann);
|
|
102
140
|
}
|
|
141
|
+
// Load captions if available
|
|
103
142
|
const capsByImage = new Map();
|
|
104
143
|
if (this._captionsJson && fs.existsSync(this._captionsJson)) {
|
|
105
144
|
const captionsData = JSON.parse(fs.readFileSync(this._captionsJson, 'utf-8'));
|
|
@@ -126,6 +165,7 @@ class Coco {
|
|
|
126
165
|
const imgAnns = annsByImage.get(imageId) ?? [];
|
|
127
166
|
const imgCaps = capsByImage.get(imageId) ?? [];
|
|
128
167
|
const maskPng = renderMask(imgAnns, h, w);
|
|
168
|
+
// Build simplified annotation dicts for JSON column
|
|
129
169
|
const annDicts = imgAnns.map((a) => ({
|
|
130
170
|
id: a.id,
|
|
131
171
|
bbox: a.bbox,
|
|
@@ -157,26 +197,40 @@ class Coco {
|
|
|
157
197
|
}
|
|
158
198
|
}
|
|
159
199
|
exports.Coco = Coco;
|
|
200
|
+
// =====================================================================
|
|
201
|
+
// Mask rendering — pure JS polygon rasterizer + PNG encoder
|
|
202
|
+
// =====================================================================
|
|
203
|
+
/**
|
|
204
|
+
* Render a combined segmentation mask for one image.
|
|
205
|
+
* Each pixel is set to the `category_id` of the last annotation covering it.
|
|
206
|
+
* Background = 0. Returns PNG bytes as a Buffer.
|
|
207
|
+
*/
|
|
160
208
|
function renderMask(annotations, height, width) {
|
|
161
209
|
if (height === 0 || width === 0) {
|
|
162
210
|
return encodePng(Buffer.alloc(0), 0, 0);
|
|
163
211
|
}
|
|
164
|
-
const mask = Buffer.alloc(height * width);
|
|
212
|
+
const mask = Buffer.alloc(height * width); // uint8, zero-filled
|
|
165
213
|
for (const ann of annotations) {
|
|
166
214
|
const seg = ann.segmentation;
|
|
167
215
|
if (!seg)
|
|
168
216
|
continue;
|
|
169
217
|
if (Array.isArray(seg)) {
|
|
218
|
+
// Polygon format: array of [x1,y1,x2,y2,...] arrays
|
|
170
219
|
for (const poly of seg) {
|
|
171
220
|
fillPolygon(mask, width, height, poly, ann.category_id);
|
|
172
221
|
}
|
|
173
222
|
}
|
|
174
223
|
else if (seg.counts != null && seg.size != null) {
|
|
224
|
+
// RLE format
|
|
175
225
|
decodeRleToMask(mask, width, height, seg, ann.category_id);
|
|
176
226
|
}
|
|
177
227
|
}
|
|
178
228
|
return encodePng(mask, width, height);
|
|
179
229
|
}
|
|
230
|
+
/**
|
|
231
|
+
* Scanline polygon fill.
|
|
232
|
+
* `coords` is a flat array: [x0, y0, x1, y1, ...].
|
|
233
|
+
*/
|
|
180
234
|
function fillPolygon(mask, width, height, coords, value) {
|
|
181
235
|
const n = Math.floor(coords.length / 2);
|
|
182
236
|
if (n < 3)
|
|
@@ -199,12 +253,14 @@ function fillPolygon(mask, width, height, coords, value) {
|
|
|
199
253
|
for (let y = scanMin; y <= scanMax; y++) {
|
|
200
254
|
nodeX.length = 0;
|
|
201
255
|
const yf = y + 0.5;
|
|
256
|
+
// Build sorted list of x-intersections for this scanline
|
|
202
257
|
for (let i = 0, j = n - 1; i < n; j = i++) {
|
|
203
258
|
if ((ys[i] <= yf && ys[j] > yf) || (ys[j] <= yf && ys[i] > yf)) {
|
|
204
259
|
nodeX.push(xs[i] + ((yf - ys[i]) / (ys[j] - ys[i])) * (xs[j] - xs[i]));
|
|
205
260
|
}
|
|
206
261
|
}
|
|
207
262
|
nodeX.sort((a, b) => a - b);
|
|
263
|
+
// Fill between pairs
|
|
208
264
|
for (let i = 0; i < nodeX.length - 1; i += 2) {
|
|
209
265
|
const xStart = Math.max(0, Math.ceil(nodeX[i]));
|
|
210
266
|
const xEnd = Math.min(width - 1, Math.floor(nodeX[i + 1]));
|
|
@@ -215,21 +271,31 @@ function fillPolygon(mask, width, height, coords, value) {
|
|
|
215
271
|
}
|
|
216
272
|
}
|
|
217
273
|
}
|
|
274
|
+
/**
|
|
275
|
+
* Decode COCO RLE (Run-Length Encoding) segmentation to mask.
|
|
276
|
+
*
|
|
277
|
+
* COCO RLE can be:
|
|
278
|
+
* - Uncompressed: { counts: number[], size: [h, w] }
|
|
279
|
+
* - Compressed (string): { counts: string, size: [h, w] }
|
|
280
|
+
*/
|
|
218
281
|
function decodeRleToMask(mask, width, height, rle, value) {
|
|
219
282
|
let counts;
|
|
220
283
|
if (typeof rle.counts === 'string') {
|
|
284
|
+
// Compressed RLE — decode the string to run lengths
|
|
221
285
|
counts = decodeCompressedRle(rle.counts);
|
|
222
286
|
}
|
|
223
287
|
else {
|
|
224
288
|
counts = rle.counts;
|
|
225
289
|
}
|
|
290
|
+
// RLE is column-major (Fortran order) in COCO
|
|
226
291
|
const rleH = rle.size[0];
|
|
227
292
|
const rleW = rle.size[1];
|
|
228
293
|
let pixel = 0;
|
|
229
|
-
let on = false;
|
|
294
|
+
let on = false; // first run is background (zeros)
|
|
230
295
|
for (const count of counts) {
|
|
231
296
|
if (on) {
|
|
232
297
|
for (let i = 0; i < count; i++) {
|
|
298
|
+
// Convert column-major index to row-major
|
|
233
299
|
const col = Math.floor(pixel / rleH);
|
|
234
300
|
const row = pixel % rleH;
|
|
235
301
|
if (row < height && col < width) {
|
|
@@ -244,6 +310,10 @@ function decodeRleToMask(mask, width, height, rle, value) {
|
|
|
244
310
|
on = !on;
|
|
245
311
|
}
|
|
246
312
|
}
|
|
313
|
+
/**
|
|
314
|
+
* Decode COCO compressed RLE string to run-length counts array.
|
|
315
|
+
* Uses the same encoding as pycocotools maskUtils.
|
|
316
|
+
*/
|
|
247
317
|
function decodeCompressedRle(s) {
|
|
248
318
|
const counts = [];
|
|
249
319
|
let i = 0;
|
|
@@ -258,12 +328,14 @@ function decodeCompressedRle(s) {
|
|
|
258
328
|
shift += 5;
|
|
259
329
|
more = (c & 0x20) !== 0;
|
|
260
330
|
}
|
|
331
|
+
// Zigzag decode
|
|
261
332
|
if (x & 1) {
|
|
262
333
|
x = -(x >> 1) - 1;
|
|
263
334
|
}
|
|
264
335
|
else {
|
|
265
336
|
x = x >> 1;
|
|
266
337
|
}
|
|
338
|
+
// Counts are relative after the first
|
|
267
339
|
if (counts.length > 2) {
|
|
268
340
|
x += counts[counts.length - 2];
|
|
269
341
|
}
|
|
@@ -271,14 +343,23 @@ function decodeCompressedRle(s) {
|
|
|
271
343
|
}
|
|
272
344
|
return counts;
|
|
273
345
|
}
|
|
346
|
+
// =====================================================================
|
|
347
|
+
// Minimal PNG encoder (grayscale 8-bit)
|
|
348
|
+
// =====================================================================
|
|
349
|
+
/**
|
|
350
|
+
* Encode a grayscale 8-bit image as PNG using Node.js built-in zlib.
|
|
351
|
+
* No external dependencies required.
|
|
352
|
+
*/
|
|
274
353
|
function encodePng(pixels, width, height) {
|
|
275
354
|
if (width === 0 || height === 0) {
|
|
355
|
+
// Return a valid 0x0 PNG
|
|
276
356
|
return createMinimalPng(0, 0, Buffer.alloc(0));
|
|
277
357
|
}
|
|
358
|
+
// Build raw scanlines: each row is prefixed with filter byte 0 (None)
|
|
278
359
|
const rawData = Buffer.alloc(height * (1 + width));
|
|
279
360
|
for (let y = 0; y < height; y++) {
|
|
280
361
|
const rowOffset = y * (1 + width);
|
|
281
|
-
rawData[rowOffset] = 0;
|
|
362
|
+
rawData[rowOffset] = 0; // filter: None
|
|
282
363
|
pixels.copy(rawData, rowOffset + 1, y * width, (y + 1) * width);
|
|
283
364
|
}
|
|
284
365
|
const compressed = zlib.deflateSync(rawData);
|
|
@@ -286,14 +367,15 @@ function encodePng(pixels, width, height) {
|
|
|
286
367
|
}
|
|
287
368
|
function createMinimalPng(width, height, compressedData) {
|
|
288
369
|
const signature = Buffer.from([137, 80, 78, 71, 13, 10, 26, 10]);
|
|
370
|
+
// IHDR: width(4) + height(4) + bitDepth(1) + colorType(1) + compression(1) + filter(1) + interlace(1) = 13 bytes
|
|
289
371
|
const ihdrData = Buffer.alloc(13);
|
|
290
372
|
ihdrData.writeUInt32BE(width, 0);
|
|
291
373
|
ihdrData.writeUInt32BE(height, 4);
|
|
292
|
-
ihdrData[8] = 8;
|
|
293
|
-
ihdrData[9] = 0;
|
|
294
|
-
ihdrData[10] = 0;
|
|
295
|
-
ihdrData[11] = 0;
|
|
296
|
-
ihdrData[12] = 0;
|
|
374
|
+
ihdrData[8] = 8; // bit depth
|
|
375
|
+
ihdrData[9] = 0; // color type: grayscale
|
|
376
|
+
ihdrData[10] = 0; // compression
|
|
377
|
+
ihdrData[11] = 0; // filter
|
|
378
|
+
ihdrData[12] = 0; // interlace
|
|
297
379
|
const ihdr = pngChunk('IHDR', ihdrData);
|
|
298
380
|
const idat = pngChunk('IDAT', compressedData);
|
|
299
381
|
const iend = pngChunk('IEND', Buffer.alloc(0));
|
|
@@ -308,6 +390,7 @@ function pngChunk(type, data) {
|
|
|
308
390
|
crc.writeUInt32BE(crc32(crcData) >>> 0, 0);
|
|
309
391
|
return Buffer.concat([length, typeBuffer, data, crc]);
|
|
310
392
|
}
|
|
393
|
+
// CRC-32 lookup table
|
|
311
394
|
const CRC_TABLE = (() => {
|
|
312
395
|
const table = new Uint32Array(256);
|
|
313
396
|
for (let n = 0; n < 256; n++) {
|
|
@@ -331,6 +414,9 @@ function crc32(buf) {
|
|
|
331
414
|
}
|
|
332
415
|
return crc ^ 0xffffffff;
|
|
333
416
|
}
|
|
417
|
+
// =====================================================================
|
|
418
|
+
// Helpers
|
|
419
|
+
// =====================================================================
|
|
334
420
|
function rowsToBatch(rows) {
|
|
335
421
|
const keys = Object.keys(rows[0]);
|
|
336
422
|
const result = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coco.js","sourceRoot":"","sources":["../../../../src/node/formats/coco.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coco.js","sourceRoot":"","sources":["../../../../src/node/formats/coco.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coco_panoptic.d.ts","sourceRoot":"","sources":["../../../../src/node/formats/coco_panoptic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAqBnE,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,YAAa,YAAW,MAAM;IACzC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,SAAS,CAAS;gBAEd,OAAO,EAAE,mBAAmB;IAOxC,MAAM,IAAI,SAAS;IAOnB,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAOnC,aAAa,IAAI,MAAM,EAAE;IAIxB,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"coco_panoptic.d.ts","sourceRoot":"","sources":["../../../../src/node/formats/coco_panoptic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAqBnE,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,YAAa,YAAW,MAAM;IACzC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,SAAS,CAAS;gBAEd,OAAO,EAAE,mBAAmB;IAOxC,MAAM,IAAI,SAAS;IAOnB,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAOnC,aAAa,IAAI,MAAM,EAAE;IAIxB,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC;CA4D/B"}
|
|
@@ -74,6 +74,7 @@ class CocoPanoptic {
|
|
|
74
74
|
}
|
|
75
75
|
const raw = fs.readFileSync(this.annotationsPath, 'utf-8');
|
|
76
76
|
const coco = JSON.parse(raw);
|
|
77
|
+
// Build lookup: image_id -> annotation
|
|
77
78
|
const annByImage = new Map();
|
|
78
79
|
for (const ann of coco.annotations ?? []) {
|
|
79
80
|
annByImage.set(ann.image_id, ann);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coco_panoptic.js","sourceRoot":"","sources":["../../../../src/node/formats/coco_panoptic.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"coco_panoptic.js","sourceRoot":"","sources":["../../../../src/node/formats/coco_panoptic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LeRobot dataset format classes for DeepLake managed ingestion.
|
|
3
|
+
*
|
|
4
|
+
* Implements the normalized 3-table design:
|
|
5
|
+
* - LeRobotTasks: task_index + task description (from tasks.jsonl)
|
|
6
|
+
* - LeRobotEpisodes: episode metadata + 3 camera videos (from episodes.jsonl + mp4s)
|
|
7
|
+
* - LeRobotFrames: per-frame state/action scalars (from parquet files)
|
|
8
|
+
*
|
|
9
|
+
* LeRobotTasks and LeRobotEpisodes use only Node.js built-ins.
|
|
10
|
+
* LeRobotFrames requires an optional parquet reader (e.g. `parquetjs`).
|
|
11
|
+
*/
|
|
1
12
|
import type { Batch, Format, SchemaMap } from '../../shared/types';
|
|
2
13
|
export interface LeRobotTasksOptions {
|
|
14
|
+
/** Root directory of the LeRobot dataset. */
|
|
3
15
|
datasetDir: string;
|
|
4
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Format for LeRobot tasks.jsonl — one row per task.
|
|
19
|
+
*
|
|
20
|
+
* Columns: task_index (int), task (string)
|
|
21
|
+
*/
|
|
5
22
|
export declare class LeRobotTasks implements Format {
|
|
6
23
|
private tasksFile;
|
|
7
24
|
constructor(options: LeRobotTasksOptions);
|
|
@@ -9,10 +26,23 @@ export declare class LeRobotTasks implements Format {
|
|
|
9
26
|
normalize(): Generator<Batch>;
|
|
10
27
|
}
|
|
11
28
|
export interface LeRobotFramesOptions {
|
|
29
|
+
/** Root directory of the LeRobot dataset. */
|
|
12
30
|
datasetDir: string;
|
|
31
|
+
/** First chunk index (inclusive, default 0). */
|
|
13
32
|
chunkStart?: number;
|
|
33
|
+
/** Last chunk index (inclusive, default 10). */
|
|
14
34
|
chunkEnd?: number;
|
|
15
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Format for LeRobot parquet files — one row per frame with unpacked scalars.
|
|
38
|
+
*
|
|
39
|
+
* Reads parquet files for the specified chunk range and unpacks
|
|
40
|
+
* observation.state[8] and action[7] into individual float columns.
|
|
41
|
+
*
|
|
42
|
+
* Requires a parquet reader. Tries to use `@duckdb/node-bindings` first,
|
|
43
|
+
* then falls back to `parquetjs`. If neither is available, throws an error
|
|
44
|
+
* with installation instructions.
|
|
45
|
+
*/
|
|
16
46
|
export declare class LeRobotFrames implements Format {
|
|
17
47
|
private datasetDir;
|
|
18
48
|
private chunkStart;
|
|
@@ -22,10 +52,22 @@ export declare class LeRobotFrames implements Format {
|
|
|
22
52
|
normalize(): Generator<Batch>;
|
|
23
53
|
}
|
|
24
54
|
export interface LeRobotEpisodesOptions {
|
|
55
|
+
/** Root directory of the LeRobot dataset. */
|
|
25
56
|
datasetDir: string;
|
|
57
|
+
/** First chunk index (inclusive, default 0). */
|
|
26
58
|
chunkStart?: number;
|
|
59
|
+
/** Last chunk index (inclusive, default 10). */
|
|
27
60
|
chunkEnd?: number;
|
|
28
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Format for LeRobot episodes — one row per episode with video data.
|
|
64
|
+
*
|
|
65
|
+
* Pulls video files lazily per-chunk via git-lfs to manage disk space.
|
|
66
|
+
* After processing each chunk's videos, restores LFS pointers.
|
|
67
|
+
*
|
|
68
|
+
* Columns: episode_index (int), task (str), length (int),
|
|
69
|
+
* exterior_1_video (bytes), exterior_2_video (bytes), wrist_video (bytes)
|
|
70
|
+
*/
|
|
29
71
|
export declare class LeRobotEpisodes implements Format {
|
|
30
72
|
private datasetDir;
|
|
31
73
|
private chunkStart;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lerobot.d.ts","sourceRoot":"","sources":["../../../../src/node/formats/lerobot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lerobot.d.ts","sourceRoot":"","sources":["../../../../src/node/formats/lerobot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAMnE,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,qBAAa,YAAa,YAAW,MAAM;IACzC,OAAO,CAAC,SAAS,CAAS;gBAEd,OAAO,EAAE,mBAAmB;IAIxC,MAAM,IAAI,SAAS;IAIlB,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC;CA0B/B;AAkBD,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,qBAAa,aAAc,YAAW,MAAM;IAC1C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,oBAAoB;IAMzC,MAAM,IAAI,SAAS;IAIlB,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC;CAgE/B;AAeD,MAAM,WAAW,sBAAsB;IACrC,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,qBAAa,eAAgB,YAAW,MAAM;IAC5C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAuC;gBAE5C,OAAO,EAAE,sBAAsB;IA8B3C,MAAM,IAAI,SAAS;IAQnB,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQlC,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC;IAyF9B,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,qBAAqB;CAmC9B"}
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* LeRobot dataset format classes for DeepLake managed ingestion.
|
|
4
|
+
*
|
|
5
|
+
* Implements the normalized 3-table design:
|
|
6
|
+
* - LeRobotTasks: task_index + task description (from tasks.jsonl)
|
|
7
|
+
* - LeRobotEpisodes: episode metadata + 3 camera videos (from episodes.jsonl + mp4s)
|
|
8
|
+
* - LeRobotFrames: per-frame state/action scalars (from parquet files)
|
|
9
|
+
*
|
|
10
|
+
* LeRobotTasks and LeRobotEpisodes use only Node.js built-ins.
|
|
11
|
+
* LeRobotFrames requires an optional parquet reader (e.g. `parquetjs`).
|
|
12
|
+
*/
|
|
2
13
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
14
|
if (k2 === undefined) k2 = k;
|
|
4
15
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -37,6 +48,11 @@ exports.LeRobotEpisodes = exports.LeRobotFrames = exports.LeRobotTasks = void 0;
|
|
|
37
48
|
const fs = __importStar(require("fs"));
|
|
38
49
|
const path = __importStar(require("path"));
|
|
39
50
|
const child_process_1 = require("child_process");
|
|
51
|
+
/**
|
|
52
|
+
* Format for LeRobot tasks.jsonl — one row per task.
|
|
53
|
+
*
|
|
54
|
+
* Columns: task_index (int), task (string)
|
|
55
|
+
*/
|
|
40
56
|
class LeRobotTasks {
|
|
41
57
|
tasksFile;
|
|
42
58
|
constructor(options) {
|
|
@@ -82,6 +98,16 @@ const ACTION_NAMES = [
|
|
|
82
98
|
'action_roll', 'action_pitch', 'action_yaw',
|
|
83
99
|
'action_gripper',
|
|
84
100
|
];
|
|
101
|
+
/**
|
|
102
|
+
* Format for LeRobot parquet files — one row per frame with unpacked scalars.
|
|
103
|
+
*
|
|
104
|
+
* Reads parquet files for the specified chunk range and unpacks
|
|
105
|
+
* observation.state[8] and action[7] into individual float columns.
|
|
106
|
+
*
|
|
107
|
+
* Requires a parquet reader. Tries to use `@duckdb/node-bindings` first,
|
|
108
|
+
* then falls back to `parquetjs`. If neither is available, throws an error
|
|
109
|
+
* with installation instructions.
|
|
110
|
+
*/
|
|
85
111
|
class LeRobotFrames {
|
|
86
112
|
datasetDir;
|
|
87
113
|
chunkStart;
|
|
@@ -122,10 +148,12 @@ class LeRobotFrames {
|
|
|
122
148
|
batch['frame_index'].push(row.frame_index);
|
|
123
149
|
batch['task_index'].push(row.task_index);
|
|
124
150
|
batch['timestamp'].push(row.timestamp);
|
|
151
|
+
// Unpack observation.state[8]
|
|
125
152
|
const state = row['observation.state'] ?? [];
|
|
126
153
|
for (let i = 0; i < STATE_NAMES.length; i++) {
|
|
127
154
|
batch[STATE_NAMES[i]].push(state[i] ?? 0);
|
|
128
155
|
}
|
|
156
|
+
// Unpack action[7]
|
|
129
157
|
const action = row['action'] ?? [];
|
|
130
158
|
for (let i = 0; i < ACTION_NAMES.length; i++) {
|
|
131
159
|
batch[ACTION_NAMES[i]].push(action[i] ?? 0);
|
|
@@ -158,6 +186,15 @@ const VIDEO_KEYS = [
|
|
|
158
186
|
];
|
|
159
187
|
const COL_NAMES = ['exterior_1_video', 'exterior_2_video', 'wrist_video'];
|
|
160
188
|
const EPISODE_COLUMNS = ['episode_index', 'task', 'length', ...COL_NAMES];
|
|
189
|
+
/**
|
|
190
|
+
* Format for LeRobot episodes — one row per episode with video data.
|
|
191
|
+
*
|
|
192
|
+
* Pulls video files lazily per-chunk via git-lfs to manage disk space.
|
|
193
|
+
* After processing each chunk's videos, restores LFS pointers.
|
|
194
|
+
*
|
|
195
|
+
* Columns: episode_index (int), task (str), length (int),
|
|
196
|
+
* exterior_1_video (bytes), exterior_2_video (bytes), wrist_video (bytes)
|
|
197
|
+
*/
|
|
161
198
|
class LeRobotEpisodes {
|
|
162
199
|
datasetDir;
|
|
163
200
|
chunkStart;
|
|
@@ -168,6 +205,7 @@ class LeRobotEpisodes {
|
|
|
168
205
|
this.datasetDir = options.datasetDir;
|
|
169
206
|
this.chunkStart = options.chunkStart ?? 0;
|
|
170
207
|
this.chunkEnd = options.chunkEnd ?? 10;
|
|
208
|
+
// Load tasks for denormalization
|
|
171
209
|
const tasksFile = path.join(this.datasetDir, 'meta', 'tasks.jsonl');
|
|
172
210
|
this._tasks = new Map();
|
|
173
211
|
if (fs.existsSync(tasksFile)) {
|
|
@@ -179,6 +217,7 @@ class LeRobotEpisodes {
|
|
|
179
217
|
this._tasks.set(rec.task_index, rec.task);
|
|
180
218
|
}
|
|
181
219
|
}
|
|
220
|
+
// Load episodes metadata
|
|
182
221
|
const episodesFile = path.join(this.datasetDir, 'meta', 'episodes.jsonl');
|
|
183
222
|
this._episodes = new Map();
|
|
184
223
|
if (fs.existsSync(episodesFile)) {
|
|
@@ -208,10 +247,12 @@ class LeRobotEpisodes {
|
|
|
208
247
|
*normalize() {
|
|
209
248
|
for (let chunkIdx = this.chunkStart; chunkIdx <= this.chunkEnd; chunkIdx++) {
|
|
210
249
|
const chunk = `chunk-${String(chunkIdx).padStart(3, '0')}`;
|
|
250
|
+
// Pull this chunk's videos
|
|
211
251
|
this._pullChunkVideos(chunkIdx);
|
|
212
252
|
const chunkDir = path.join(this.datasetDir, 'videos', chunk);
|
|
213
253
|
if (!fs.existsSync(chunkDir))
|
|
214
254
|
continue;
|
|
255
|
+
// Find episodes from the first camera dir
|
|
215
256
|
const firstCam = path.join(chunkDir, VIDEO_KEYS[0]);
|
|
216
257
|
if (!fs.existsSync(firstCam))
|
|
217
258
|
continue;
|
|
@@ -233,8 +274,10 @@ class LeRobotEpisodes {
|
|
|
233
274
|
const epMeta = this._episodes.get(epIdx);
|
|
234
275
|
if (!epMeta)
|
|
235
276
|
continue;
|
|
277
|
+
// Read task text
|
|
236
278
|
const taskList = epMeta.tasks ?? [];
|
|
237
279
|
const taskText = taskList.filter(Boolean).join('; ');
|
|
280
|
+
// Read all 3 camera videos
|
|
238
281
|
const videos = [];
|
|
239
282
|
let skip = false;
|
|
240
283
|
for (const vkey of VIDEO_KEYS) {
|
|
@@ -245,6 +288,7 @@ class LeRobotEpisodes {
|
|
|
245
288
|
}
|
|
246
289
|
const stat = fs.statSync(vpath);
|
|
247
290
|
if (stat.size < 200) {
|
|
291
|
+
// Still an LFS pointer, not real data
|
|
248
292
|
skip = true;
|
|
249
293
|
break;
|
|
250
294
|
}
|
|
@@ -260,14 +304,17 @@ class LeRobotEpisodes {
|
|
|
260
304
|
}
|
|
261
305
|
if (batch.episode_index.length >= 50) {
|
|
262
306
|
yield batch;
|
|
307
|
+
// Reset using known columns only.
|
|
263
308
|
for (const key of EPISODE_COLUMNS) {
|
|
264
309
|
batch[key] = [];
|
|
265
310
|
}
|
|
266
311
|
}
|
|
267
312
|
}
|
|
313
|
+
// Yield remaining
|
|
268
314
|
if (batch.episode_index.length > 0) {
|
|
269
315
|
yield batch;
|
|
270
316
|
}
|
|
317
|
+
// Free disk: restore LFS pointers
|
|
271
318
|
this._restoreChunkPointers(chunkIdx);
|
|
272
319
|
}
|
|
273
320
|
}
|
|
@@ -281,7 +328,7 @@ class LeRobotEpisodes {
|
|
|
281
328
|
});
|
|
282
329
|
}
|
|
283
330
|
catch {
|
|
284
|
-
// Non-fatal
|
|
331
|
+
// Non-fatal — may not be a git-lfs repo
|
|
285
332
|
}
|
|
286
333
|
}
|
|
287
334
|
_restoreChunkPointers(chunkIdx) {
|
|
@@ -322,14 +369,25 @@ exports.LeRobotEpisodes = LeRobotEpisodes;
|
|
|
322
369
|
// =====================================================================
|
|
323
370
|
// Parquet reading helper
|
|
324
371
|
// =====================================================================
|
|
372
|
+
/**
|
|
373
|
+
* Read a parquet file and return rows as plain objects.
|
|
374
|
+
* Tries `parquetjs` (pure JS). Returns null if no reader is available.
|
|
375
|
+
*/
|
|
325
376
|
function readParquetFile(filePath) {
|
|
377
|
+
// Try parquetjs (synchronous via parquet-wasm or similar)
|
|
378
|
+
// For now, use a simple approach: try to require parquetjs-lite
|
|
379
|
+
// which provides a synchronous reader
|
|
326
380
|
try {
|
|
381
|
+
// Dynamic require to avoid hard dependency
|
|
327
382
|
const { ParquetReader } = require('parquetjs-lite');
|
|
383
|
+
// parquetjs is async-only, so we use a sync wrapper approach
|
|
384
|
+
// This is a simplified fallback — real usage should use the async API
|
|
328
385
|
throw new Error('parquetjs requires async reading — use LeRobotFrames with async normalize');
|
|
329
386
|
}
|
|
330
387
|
catch {
|
|
331
388
|
// No parquet reader available
|
|
332
389
|
}
|
|
390
|
+
// Fallback: try reading with duckdb CLI if available
|
|
333
391
|
try {
|
|
334
392
|
const result = (0, child_process_1.execFileSync)('duckdb', ['-json', '-c', `SELECT * FROM read_parquet('${filePath}')`], { timeout: 30_000, stdio: ['pipe', 'pipe', 'pipe'], maxBuffer: 100 * 1024 * 1024 });
|
|
335
393
|
return JSON.parse(result.toString('utf-8'));
|
|
@@ -337,6 +395,7 @@ function readParquetFile(filePath) {
|
|
|
337
395
|
catch {
|
|
338
396
|
// duckdb not available
|
|
339
397
|
}
|
|
398
|
+
// Fallback: try python one-liner
|
|
340
399
|
try {
|
|
341
400
|
const pyScript = `import pandas,json,sys;df=pandas.read_parquet("${filePath}");print(json.dumps([{k:v if not hasattr(v,'tolist') else v.tolist() for k,v in r.items()} for _,r in df.iterrows()]))`;
|
|
342
401
|
const result = (0, child_process_1.execFileSync)('python3', ['-c', pyScript], { timeout: 30_000, stdio: ['pipe', 'pipe', 'pipe'], maxBuffer: 100 * 1024 * 1024 });
|