Skip to content

Commit 9f986d1

Browse files
committed
Update HuggingFace inference demo and support for RT-DETR v2 models
- Update Hugging Face demo notebook with RT-DETR v2 model support - Add token support for model loading - Modify HuggingFace detection model to handle RT-DETR v2 specific requirements - Update test cases to use RT-DETR v2 model - Remove unused YOLONas utility module - Improve model loading and inference flexibility
1 parent be3b58a commit 9f986d1

File tree

5 files changed

+386
-483
lines changed

5 files changed

+386
-483
lines changed

demo/inference_for_huggingface.ipynb

Lines changed: 100 additions & 150 deletions
Large diffs are not rendered by default.

sahi/models/huggingface.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,11 @@ def __init__(
2929
category_remapping: Optional[Dict] = None,
3030
load_at_init: bool = True,
3131
image_size: Optional[int] = None,
32+
token: Optional[str] = None,
3233
):
3334
self._processor = processor
3435
self._image_shapes = []
36+
self._token = token
3537
super().__init__(
3638
model_path,
3739
model,
@@ -47,7 +49,7 @@ def __init__(
4749

4850
def check_dependencies(self):
4951
check_requirements(["torch", "transformers"])
50-
ensure_package_minimum_version("transformers", "4.25.1")
52+
ensure_package_minimum_version("transformers", "4.42.0")
5153

5254
@property
5355
def processor(self):
@@ -67,13 +69,18 @@ def num_categories(self) -> int:
6769
def load_model(self):
6870
from transformers import AutoModelForObjectDetection, AutoProcessor
6971

70-
model = AutoModelForObjectDetection.from_pretrained(self.model_path)
72+
model = AutoModelForObjectDetection.from_pretrained(self.model_path, token=self._token)
7173
if self.image_size is not None:
74+
if model.base_model_prefix == "rt_detr_v2":
75+
size = {"height": self.image_size, "width": self.image_size}
76+
else:
77+
size = {"shortest_edge": self.image_size, "longest_edge": None}
78+
# use_fast=True raises error: AttributeError: 'SizeDict' object has no attribute 'keys'
7279
processor = AutoProcessor.from_pretrained(
73-
self.model_path, size={"shortest_edge": self.image_size, "longest_edge": None}, do_resize=True
80+
self.model_path, size=size, do_resize=True, use_fast=False, token=self._token
7481
)
7582
else:
76-
processor = AutoProcessor.from_pretrained(self.model_path)
83+
processor = AutoProcessor.from_pretrained(self.model_path, use_fast=False, token=self._token)
7784
self.set_model(model, processor)
7885

7986
def set_model(self, model: Any, processor: Any = None):

sahi/utils/huggingface.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
class HuggingfaceTestConstants:
22
YOLOS_TINY_MODEL_PATH = "hustvl/yolos-tiny"
3+
RTDETRV2_MODEL_PATH = "PekingU/rtdetr_v2_r18vd"

sahi/utils/yolonas.py

Lines changed: 0 additions & 54 deletions
This file was deleted.

0 commit comments

Comments
 (0)