KarolyArmin/Hand_tools
KarolyArmin/Hand_tools Growing multi-task RGB-D collection generated with the Label Factory workflow. Every capture is stored in its own zero-padded directory (0000, 0001, 0002, ...). Uploading a new capture appends it to the collection without replacing earlier directories. Task configurations aggregate compatible Parquet shards from every numbered directory. Training configurations depth_estimation: RGB input, metric depth target, intrinsics and depth units… See the full description on the dataset page: https://huggingface.co/datasets/KarolyArmin/Hand_tools.
KarolyArmin/Hand_tools
Growing multi-task RGB-D collection generated with the Label Factory workflow. Every capture is stored in its own zero-padded directory (0000, 0001, 0002, ...). Uploading a new capture appends it to the collection without replacing earlier directories. Task configurations aggregate compatible Parquet shards from every numbered directory.
Training configurations
depth_estimation: RGB input, metric depth target, intrinsics and depth unitsinstance_segmentation: RGB input, instance-mask target, boxes and annotationsobject_pose_estimation: RGB-D input, masks, camera transforms and object posesobject_pose_models: one STL payload per object type and numbered dataset
Every configuration provides deterministic train, validation, and test splits. Adding another numbered capture appends rows through the wildcard paths; it does not replace earlier datasets.
Loading all or several numbered datasets
The configuration automatically combines every uploaded directory (0000, 0001, 0002, ...). Filter dataset_id to use selected captures:
from datasets import load_dataset
poses = load_dataset("KarolyArmin/Hand_tools", "object_pose_estimation")
selected_ids = set(["0000", "0001", "0004"])
for split_name in poses:
poses[split_name] = poses[split_name].filter(
lambda row: row["dataset_id"] in selected_ids
)Depth-estimation example
from datasets import load_dataset
import numpy as np
depth_dataset = load_dataset("KarolyArmin/Hand_tools", "depth_estimation")
sample = depth_dataset["train"][0]
rgb = sample["image"].convert("RGB")
depth_native = np.asarray(sample["depth"])
depth_mm = depth_native.astype(np.float32) * sample["depth_scale"]
depth_m = depth_mm / 1000.0
intrinsics_3x3 = np.asarray(sample["camera_intrinsics"]).reshape(3, 3)Instance-segmentation example
from datasets import load_dataset
import json
import numpy as np
instances = load_dataset("KarolyArmin/Hand_tools", "instance_segmentation")
sample = instances["validation"][0]
rgb = sample["image"].convert("RGB")
instance_mask = np.asarray(sample["instance_mask"])
annotations = json.loads(sample["annotations_json"])
boxes_xywh = np.asarray(sample["boxes_xywh"])
instance_names = sample["instance_names"]Object-pose-estimation example
from datasets import load_dataset
import numpy as np
poses = load_dataset("KarolyArmin/Hand_tools", "object_pose_estimation")
sample = poses["test"][0]
rgb = sample["image"].convert("RGB")
depth = np.asarray(sample["depth"])
instance_mask = np.asarray(sample["instance_mask"])
world_from_camera = np.asarray(sample["world_from_camera"]).reshape(4, 4)
camera_from_world = np.asarray(sample["camera_from_world"]).reshape(4, 4)
world_from_objects = np.asarray(sample["world_from_objects"]).reshape(-1, 4, 4)
camera_from_objects = np.asarray(sample["camera_from_objects"]).reshape(-1, 4, 4)
object_names = sample["object_names"]
# Resolve the STL models referenced by this pose sample.
models = load_dataset("KarolyArmin/Hand_tools", "object_pose_models")["train"]
required_keys = set(sample["object_model_keys"])
models = models.filter(lambda row: row["object_model_key"] in required_keys)
first_model = models[0]
with open(first_model["stl_file_name"], "wb") as file:
file.write(first_model["stl"])Collection contents
Each numbered directory contributes:
- RGB images and aligned 16-bit metric depth maps
- camera intrinsics and metric world-coordinate camera poses
- instance masks, boxes, RLE annotations and visualization overlays
- per-frame and consolidated object poses
- metric scene reconstruction and object STL models
- task-specific train, validation and test Parquet shards
Latest generated contribution
- Directory:
0002/ - RGB-D frames: 147
- Annotated object instances: 4
- Selected upload files: 922
Depth images are stored in millimetres. Pose conventions and coordinate-system metadata are recorded in 0002/sam6d_scene/annotations.json and 0002/reconstruction/metric_alignment/camera_poses_metric.json.
Limitations
Annotations are automatically generated and must be independently reviewed for the intended downstream use. Reconstruction, depth-alignment, segmentation and pose-estimation errors may remain.
