Hello team,
While studying the Gold-YOLO neck implementations, I noticed a structural difference in the forward pass between GDNeck2 and the other neck variants (GDNeck / RepGDNeck).
I would like to kindly request a clarification on whether this is an intentional design choice or a potential typo in the feature routing logic.
Details
In GDNeck and RepGDNeck, the bottom-up information flow sequentially aggregates features from n4 into n5:
## inject low-level global info to n5
n5_adjacent_info = self.LAF_n5(n4, c5_half) # Uses n4
n5 = self.Inject_n5(n5_adjacent_info, high_global_info[1])
However, in GDNeck2, the first argument passes p4 instead of n4:
## inject low-level global info to n5
n5_adjacent_info = self.LAF_n5(p4, c5_half) # Uses p4
n5 = self.Inject_n5(n5_adjacent_info, high_global_info[1])
What I want to confirm
Since I noticed that the official implementation applies different necks based on model scales (e.g., RepGDNeck for n/s, GDNeck for m, and GDNeck2 for l), I highly suspect this might be a specialized design for larger models.
Could you please help clarify:
- Is this shortcutting behavior in GDNeck2 (bypassing
n4 and reaching back to p4 for the n5 layer aggregation) an intentional architectural scaling strategy designed specifically to balance latency/accuracy or prevent feature degradation in Large models?
- Or is it a minor typo that accidentally diverged from the baseline
GDNeck routing?
Thank you for your time and for sharing this great work!
Hello team,
While studying the Gold-YOLO neck implementations, I noticed a structural difference in the
forwardpass betweenGDNeck2and the other neck variants (GDNeck/RepGDNeck).I would like to kindly request a clarification on whether this is an intentional design choice or a potential typo in the feature routing logic.
Details
In
GDNeckandRepGDNeck, the bottom-up information flow sequentially aggregates features fromn4inton5:However, in
GDNeck2, the first argument passes p4 instead of n4:What I want to confirm
Since I noticed that the official implementation applies different necks based on model scales (e.g.,
RepGDNeckfor n/s,GDNeckfor m, andGDNeck2for l), I highly suspect this might be a specialized design for larger models.Could you please help clarify:
n4and reaching back top4for then5layer aggregation) an intentional architectural scaling strategy designed specifically to balance latency/accuracy or prevent feature degradation in Large models?GDNeckrouting?Thank you for your time and for sharing this great work!