--- base_model: facebook/detr-resnet-50 base_model_relation: finetune license: mit library_name: transformers pipeline_tag: object-detection tags: - spheres - photogrammetry - calibration widget: - src: examples/chevaux.jpg example_title: Chevaux - src: examples/mammouths.jpg example_title: Mammouths - src: examples/synth.png example_title: Synth --- # Model card for REVA-QCAV A DEtection TRansformer (DETR) model with a ResNet-50 backbone ([facebook/detr-resnet-50](https://huggingface.co/facebook/detr-resnet-50)) finetuned on a custom photogrammetry calibration sphere dataset. ![](https://github.com/facebookresearch/detr/blob/main/.github/DETR.png?raw=true) ## Model Usage ### Object Detection (using `transformers`) ```python from transformers import AutoImageProcessor, AutoModelForObjectDetection from huggingface_hub import hf_hub_download from PIL import Image import torch # download example image img_path = hf_hub_download(repo_id="1aurent/REVA-QCAV", filename="examples/chevaux.jpg") img = Image.open(img_path) # transform image using image_processor image_processor = AutoImageProcessor.from_pretrained("1aurent/REVA-QCAV") data = image_processor(img, return_tensors="pt") # get outputs from the model model = AutoModelForObjectDetection.from_pretrained("1aurent/REVA-QCAV") with torch.no_grad(): output = model(**data) # use image_processor post processing img_CHW = torch.tensor([img.height, img.width]).unsqueeze(0) output_processed = image_processor.post_process_object_detection(output, threshold=0.9, target_sizes=img_CHW) ``` ### Object Detection (using `onnxruntime`) ```python from transformers.models.detr.modeling_detr import DetrObjectDetectionOutput from transformers import AutoImageProcessor from huggingface_hub import hf_hub_download import onnxruntime as ort from PIL import Image import torch # download onnx and start inference session onnx_path = hf_hub_download(repo_id="1aurent/REVA-QCAV", filename="model.onnx") session = ort.InferenceSession(onnx_path) # download example image img_path = hf_hub_download(repo_id="1aurent/REVA-QCAV", filename="examples/chevaux.jpg") img = Image.open(img_path) # transform image using image_processor image_processor = AutoImageProcessor.from_pretrained("1aurent/REVA-QCAV") data = image_processor(img, return_tensors="np").data # get logits and bbox predictions using onnx session logits, pred_boxes = session.run( output_names=["logits", "pred_boxes"], input_feed=data, ) # wrap outputs inside DetrObjectDetectionOutput output = DetrObjectDetectionOutput( logits=torch.tensor(logits), pred_boxes=torch.tensor(pred_boxes), ) # use image_processor post processing img_CHW = torch.tensor([img.height, img.width]).unsqueeze(0) output_processed = image_processor.post_process_object_detection(output, threshold=0.9, target_sizes=img_CHW) ``` ## Citation ```bibtex @article{reva-qcav, author = {Laurent Fainsin and Jean Mélou and Lilian Calvet and Antoine Laurent and Axel Carlier and Jean-Denis Durou}, title = {Neural sphere detection in images for lighting calibration}, journal = {QCAV}, year = {2023}, url = {https://hal.science/hal-04160733} } ```