DinoV3 compatible with transformers version 4 and 5
This commit is contained in:
@@ -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" |
|
||||
|
||||
@@ -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:])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user