Safetensors
FineGrasp / README.md
yun01.du
[update] update finegrasp_pipeline_sim and README
f09bb0e
---
license: apache-2.0
---
# FineGrasp: Towards Robust Grasping for Delicate Objects
<div align="center" class="authors">
<a href="https://scholar.google.com/citations?user=Ke5SamYAAAAJ&hl=en" target="_blank">Yun Du*</a>,
<a href="https://scholar.google.com/citations?hl=en&user=aB02FDEAAAAJ" target="_blank">Mengao Zhao*</a>,
<a href="https://wzmsltw.github.io/" target="_blank">Tianwei Lin</a>,
<a href="" target="_blank">Yiwei Jin</a>,
<a href="" target="_blank">Chaodong Huang</a>,
<a href="https://scholar.google.com/citations?user=HQfc8TEAAAAJ&hl=en" target="_blank">Zhizhong Su</a>
</div>
<div align="center" style="line-height: 3;">
</a>
<a href="https://horizonrobotics.github.io/robot_lab/finegrasp/index.html" target="_blank" style="margin: 2px;">
<img alt="Project" src="https://img.shields.io/badge/Project-Website-blue" style="display: inline-block; vertical-align: middle;"/>
</a>
<a href="https://github.com/HorizonRobotics/robo_orchard_lab/tree/master/projects/finegrasp_graspnet1b" target="_blank" style="margin: 2px;">
<img alt="FineGrasp Code" src="https://img.shields.io/badge/FineGrasp_Code-Github-bule" style="display: inline-block; vertical-align: middle;"/>
</a>
</a>
<a href="https://github.com/HorizonRobotics/robo_orchard_grasp_label" target="_blank" style="margin: 2px;">
<img alt="Grasp Label Code" src="https://img.shields.io/badge/Grasp Label Code-Github-bule" style="display: inline-block; vertical-align: middle;"/>
</a>
<a href="https://arxiv.org/abs/2507.05978" target="_blank" style="margin: 2px;">
<img alt="Paper" src="https://img.shields.io/badge/Paper-arXiv-red" style="display: inline-block; vertical-align: middle;"/>
</a>
<a href="https://huggingface.co/HorizonRobotics/Finegrasp" target="_blank" style="margin: 2px;">
<img alt="Model" src="https://img.shields.io/badge/Model-HuggingFace-red" style="display: inline-block; vertical-align: middle;"/>
</a>
</div>
## 1. Grasp performance in GraspNet-1Billion dataset.
| Method | ckpt | Camera | Seen (AP) | Similar (AP) | Novel (AP) | Average (AP) |
| --------- | ---- | --------- | --------- | ------------ | ---------- | ---------- |
| FineGrasp | finegrasp_pipeline/model.safetensors | Realsense | 71.67 | 62.83 | 27.40 | 53.97 |
| FineGrasp + CD | finegrasp_pipeline/model.safetensors | Realsense | 73.71 | 64.56 | 28.14 | 55.47 |
| FineGrasp + Simulation Data | finegrasp_pipeline_sim/model.safetensors | Realsense | 70.21 | 61.98 | 26.18 | 52.79 |
We also provide a grasp-based baseline for [Challenge Cup](https://developer.d-robotics.cc/tiaozhanbei-2025), please refer to this [code](https://github.com/HorizonRobotics/robo_orchard_lab/tree/master/projects/pick_place_agent)
> Notice: finegrasp_pipeline_sim/model.safetensors is trained for [Challenge Cup](https://developer.d-robotics.cc/tiaozhanbei-2025) RoboTwin simulation benchmark.
## 2. Example Infer Code
```Python
import os
import numpy as np
import scipy.io as scio
from PIL import Image
from robo_orchard_lab.models.finegrasp.processor import GraspInput
from huggingface_hub import snapshot_download
from robo_orchard_lab.inference import InferencePipelineMixin
file_path = snapshot_download(
repo_id="HorizonRobotics/FineGrasp",
allow_patterns=[
"finegrasp_pipeline/**",
"data_example/**"
],
)
loaded_pipeline = InferencePipelineMixin.load(
os.path.join(file_path, "finegrasp_pipeline")
)
rgb_image_path = os.path.join(file_path, "data_example/0000_rgb.png")
depth_image_path = os.path.join(file_path, "data_example/0000_depth.png")
intrinsic_file = os.path.join(file_path, "data_example/0000.mat")
depth_image = np.array(Image.open(depth_image_path), dtype=np.float32)
rgb_image = np.array(Image.open(rgb_image_path), dtype=np.float32) / 255.0
intrinsic_matrix = scio.loadmat(intrinsic_file)["intrinsic_matrix"]
workspace = [-1, 1, -1, 1, 0.0, 2.0]
depth_scale = 1000.0
input_data = GraspInput(
rgb_image=rgb_image,
depth_image=depth_image,
depth_scale=depth_scale,
intrinsic_matrix=intrinsic_matrix,
workspace=workspace,
)
loaded_pipeline.to("cuda")
loaded_pipeline.model.eval()
output = loaded_pipeline(input_data)
print(f"Best grasp pose: {output.grasp_poses[0]}")
```
## Citation
```
@misc{du2025finegrasp,
title={FineGrasp: Towards Robust Grasping for Delicate Objects},
author={Yun Du and Mengao Zhao and Tianwei Lin and Yiwei Jin and Chaodong Huang and Zhizhong Su},
year={2025},
eprint={2507.05978},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2507.05978},
}
```