DinoV3 compatible with transformers version 4 and 5

This commit is contained in:
Bruno Fargnoli
2026-04-20 15:01:56 +02:00
parent 23511e028c
commit 450c4c58e4
3 changed files with 31 additions and 11 deletions
+1 -1
View File
@@ -14,7 +14,7 @@
| Date | Description |
| --- | --- |
| **2026-04-20** | Added node "Fill Holes Nicely with Meshlib" |
| **2026-04-20** | Added node "Fill Holes Nicely with Meshlib"<br>Fixed DinoV3 Features Extractor |
| **2026-04-06** | Added new "DINO-Lock" functionality<br>New fill_holes in Sparse Generator<br>Thanks to Easymode on Discord |
| **2026-04-05** | Added node "Extract Images from Video"<br>Can be used with "Sparse Generator with ReconViaGen" |
| **2026-04-04** | Added node "Sparse Generator with ReconViaGen" |
+15 -5
View File
@@ -83,11 +83,21 @@ class DinoV3FeatureExtractor:
hidden_states = self.model.embeddings(image, bool_masked_pos=None)
position_embeddings = self.model.rope_embeddings(image)
for i, layer_module in enumerate(self.model.layer):
hidden_states = layer_module(
hidden_states,
position_embeddings=position_embeddings,
)
# transformers < 5
if hasattr(self.model,'layer'):
for i, layer_module in enumerate(self.model.layer):
hidden_states = layer_module(
hidden_states,
position_embeddings=position_embeddings,
)
elif hasattr(self.model,'model') and hasattr(self.model.model,'layer'): # transformers >= 5
for i, layer_module in enumerate(self.model.model.layer):
hidden_states = layer_module(
hidden_states,
position_embeddings=position_embeddings,
)
else:
raise Exception("Cannot extract features")
return F.layer_norm(hidden_states, hidden_states.shape[-1:])
@@ -85,11 +85,21 @@ class DinoV3FeatureExtractor:
hidden_states = self.model.embeddings(image, bool_masked_pos=None)
position_embeddings = self.model.rope_embeddings(image)
for i, layer_module in enumerate(self.model.layer):
hidden_states = layer_module(
hidden_states,
position_embeddings=position_embeddings,
)
# transformers < 5
if hasattr(self.model,'layer'):
for i, layer_module in enumerate(self.model.layer):
hidden_states = layer_module(
hidden_states,
position_embeddings=position_embeddings,
)
elif hasattr(self.model,'model') and hasattr(self.model.model,'layer'): # transformers >= 5
for i, layer_module in enumerate(self.model.model.layer):
hidden_states = layer_module(
hidden_states,
position_embeddings=position_embeddings,
)
else:
raise Exception("Cannot extract features")
return F.layer_norm(hidden_states, hidden_states.shape[-1:])