stereoid commited on
Commit
8d4c62c
·
verified ·
1 Parent(s): dfc2ee6

Add files using upload-large-folder tool

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. approach/ovod/APE/.gitignore +53 -0
  2. approach/ovod/APE/LICENSE +201 -0
  3. approach/ovod/APE/README.md +315 -0
  4. approach/ovod/APE/__init__.py +0 -0
  5. approach/ovod/APE/configs/ADE20k_PanopticSegmentation/ape_deta/ape_deta_r50_160k.py +46 -0
  6. approach/ovod/APE/configs/ADE20k_PanopticSegmentation/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024.py +101 -0
  7. approach/ovod/APE/configs/ADE20k_PanopticSegmentation/ape_deta/ape_deta_vitl_eva02_lsj1024.py +22 -0
  8. approach/ovod/APE/configs/ADE20k_PanopticSegmentation/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024.py +47 -0
  9. approach/ovod/APE/configs/COCO_REFCOCO/ape_deta/ape_deta_r50_12ep.py +29 -0
  10. approach/ovod/APE/configs/COCO_REFCOCO/ape_deta/ape_deta_r50_24ep.py +12 -0
  11. approach/ovod/APE/configs/COCO_REFCOCO/ape_deta/ape_deta_r50_36ep.py +12 -0
  12. approach/ovod/APE/configs/COCO_REFCOCO/ape_deta/ape_deta_r50_vlf_12ep.py +52 -0
  13. approach/ovod/APE/configs/COCO_REFCOCO/ape_deta/ape_deta_r50_vlf_36ep.py +12 -0
  14. approach/ovod/APE/configs/COCO_REFCOCO/ape_deta/ape_deta_r50_vlf_bert_36ep.py +21 -0
  15. approach/ovod/APE/configs/COCO_REFCOCO/ape_deta/ape_deta_vitl_eva02_lsj1024_12ep.py +118 -0
  16. approach/ovod/APE/configs/COCO_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_36ep.py +118 -0
  17. approach/ovod/APE/configs/COCO_REFCOCO/ape_deta/ape_deta_vitl_lsj1024_12ep.py +114 -0
  18. approach/ovod/APE/configs/GQA_VisualGrounding/ape_deta/ape_deta_r50_12ep.py +20 -0
  19. approach/ovod/APE/configs/GQA_VisualGrounding/ape_deta/ape_deta_r50_12ep_eval_odinw13.py +10 -0
  20. approach/ovod/APE/configs/GQA_VisualGrounding/ape_deta/ape_deta_r50_12ep_eval_odinw35.py +10 -0
  21. approach/ovod/APE/configs/GQA_VisualGrounding/ape_deta/ape_deta_r50_vlf_12ep.py +46 -0
  22. approach/ovod/APE/configs/GQA_VisualGrounding/ape_deta/ape_deta_r50_vlf_12ep_eval_odinw13.py +10 -0
  23. approach/ovod/APE/configs/GQA_VisualGrounding/ape_deta/ape_deta_r50_vlf_12ep_eval_odinw35.py +10 -0
  24. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_REFCOCO/ape_deta/ape_deta_vitl_eva02_lsj1024_cp_180k.py +21 -0
  25. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_REFCOCO/ape_deta/ape_deta_vitl_eva02_lsj1024_cp_720k.py +83 -0
  26. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_1080k.py +27 -0
  27. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_180k.py +27 -0
  28. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_720k.py +47 -0
  29. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_08x8x270k.py +228 -0
  30. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_1080k.py +225 -0
  31. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4_1080k.py +227 -0
  32. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4_1080k_mdl.py +230 -0
  33. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4_1080k_mdl_llama2.py +235 -0
  34. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4x270k.py +227 -0
  35. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4x270k_mdl.py +230 -0
  36. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4x270k_mdl_llama2.py +235 -0
  37. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4x337k_mdl.py +230 -0
  38. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_32x2x270k.py +228 -0
  39. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_48x2x270k.py +225 -0
  40. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_64x1x270k.py +228 -0
  41. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1536_cp_08x8x270k.py +225 -0
  42. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1536_cp_32x2x270k.py +222 -0
  43. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1536_cp_64x270k.py +222 -0
  44. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_1080k.py +173 -0
  45. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_PanopticSegmentation/ape_deta/ape_deta_r50_lsj1024_cp_50ep.py +36 -0
  46. approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_PanopticSegmentation/ape_deta/ape_deta_vitl_eva02_lsj1024_cp_24ep.py +20 -0
  47. approach/ovod/APE/configs/LVISCOCO_COCOSTUFF_O365_OID_VG_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_180k.py +27 -0
  48. approach/ovod/APE/configs/LVISCOCO_COCOSTUFF_O365_OID_VG_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_720k.py +120 -0
  49. approach/ovod/APE/configs/LVIS_SA1B_InstanceSegmentation/ape_deta/ape_deta_r50_50ep.py +29 -0
  50. approach/ovod/APE/configs/LVIS_SA1B_InstanceSegmentation/ape_deta/ape_deta_r50_50ep_eval_odinw13.py +10 -0
approach/ovod/APE/.gitignore ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # output dir
2
+ output
3
+ instant_test_output
4
+ inference_test_output
5
+
6
+
7
+ *.png
8
+ *.json
9
+ *.diff
10
+ *.jpg
11
+ !/projects/DensePose/doc/images/*.jpg
12
+
13
+ # compilation and distribution
14
+ __pycache__
15
+ _ext
16
+ *.pyc
17
+ *.pyd
18
+ *.so
19
+ *.dll
20
+ *.egg-info/
21
+ build/
22
+ dist/
23
+ wheels/
24
+
25
+ # pytorch/python/numpy formats
26
+ *.pth
27
+ *.pkl
28
+ *.npy
29
+ *.ts
30
+ model_ts*.txt
31
+
32
+ # ipython/jupyter notebooks
33
+ *.ipynb
34
+ **/.ipynb_checkpoints/
35
+
36
+ # Editor temporaries
37
+ *.swn
38
+ *.swo
39
+ *.swp
40
+ *~
41
+
42
+ # editor settings
43
+ .idea
44
+ .vscode
45
+ _darcs
46
+
47
+ # project dirs
48
+ /ape/model_zoo/configs
49
+ /datasets/*
50
+ !/datasets/*.*
51
+ /projects/*/datasets
52
+ /models
53
+ /snippet
approach/ovod/APE/LICENSE ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [yyyy] [name of copyright owner]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
approach/ovod/APE/README.md ADDED
@@ -0,0 +1,315 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # APE: Aligning and Prompting Everything All at Once for Universal Visual Perception
2
+
3
+
4
+ <!--
5
+ <a href='https://github.com/shenyunhang/APE'><img src='https://img.shields.io/badge/Project-Page-Green'></a>
6
+ <a href='https://arxiv.org/abs/2312.02153'><img src='https://img.shields.io/badge/Paper-Arxiv-red'></a>
7
+ <a href='https://huggingface.co/spaces/shenyunhang/APE'><img src='https://img.shields.io/badge/%F0%9F%A4%97-Demo-yellow'></a>
8
+ <a href='https://huggingface.co/shenyunhang/APE'><img src='https://img.shields.io/badge/%F0%9F%A4%97-Model-yellow'></a>
9
+ [![Code License](https://img.shields.io/badge/Code%20License-Apache_2.0-green.svg)](https://github.com/tatsu-lab/stanford_alpaca/blob/main/LICENSE)
10
+ -->
11
+
12
+ <p align="center">
13
+ <img src="./.asset/ape.png" width="96%" height="96%">
14
+ </p>
15
+
16
+
17
+ <font size=7><div align='center' > :grapes: \[[Read our arXiv Paper](https://arxiv.org/abs/2312.02153)\] &nbsp; :apple: \[[Try our Online Demo](https://huggingface.co/spaces/shenyunhang/APE)\] </div></font>
18
+
19
+
20
+ ---
21
+
22
+ <p align="center">
23
+ <img src="./.asset/example_1.png" width="96%" height="96%">
24
+ </p>
25
+
26
+
27
+ ## :bulb: Highlight
28
+
29
+ - **High Performance.** SotA (or competitive) performance on **160** datasets with only one model.
30
+ - **Perception in the Wild.** Detect and segment **everything** with thousands of vocabularies or language descriptions all at once.
31
+ - **Flexible.** Support both foreground objects and background stuff for instance segmentation and semantic segmentation.
32
+
33
+ ## :fire: News
34
+ * **`2024.02.27`** APE has been accepted to CVPR 2024!
35
+ * **`2023.12.05`** Release training codes!
36
+ * **`2023.12.05`** Release checkpoints!
37
+ * **`2023.12.05`** Release inference codes and demo!
38
+
39
+ ## :label: TODO
40
+
41
+ - [x] Release inference code and demo.
42
+ - [x] Release checkpoints.
43
+ - [x] Release training codes.
44
+ - [ ] Add clean docs.
45
+
46
+
47
+ ## :hammer_and_wrench: Install
48
+
49
+ 1. Clone the APE repository from GitHub:
50
+
51
+ ```bash
52
+ git clone https://github.com/shenyunhang/APE
53
+ cd APE
54
+ ```
55
+
56
+ 2. Install the required dependencies and APE:
57
+
58
+ ```bash
59
+ pip3 install -r requirements.txt
60
+ python3 -m pip install -e .
61
+ ```
62
+
63
+
64
+ ## :arrow_forward: Demo Localy
65
+
66
+ **Web UI demo**
67
+ ```
68
+ pip3 install gradio
69
+ cd APE/demo
70
+ python3 app.py
71
+ ```
72
+ This demo will detect GPUs and use one GPU if you have GPUs.
73
+
74
+ Please feel free to try our [Online Demo](https://huggingface.co/spaces/shenyunhang/APE)!
75
+
76
+ <p align="center">
77
+ <img src="./.asset/demo.png" width="96%" height="96%">
78
+ </p>
79
+
80
+
81
+ ## :books: Data Prepare
82
+ Following [here](https://github.com/shenyunhang/APE/blob/main/datasets/README.md) to prepare the following datasets:
83
+
84
+ | | COCO | LVIS | Objects365 | Openimages | VisualGenome | SA-1B | RefCOCO | GQA | PhraseCut | Flickr30k | ODinW | SegInW | Roboflow100 | ADE20k | ADE-full | BDD10k | Cityscapes | PC459 | PC59 | VOC | D3 |
85
+ |:-----:|:-------:|:-------:|:----------:|:----------:|:------------:|:-------:|:-------:|:-------:|:---------:|:---------:|:-------:|:-------:|:-----------:|:-------:|:--------:|:-------:|:----------:|:-------:|:-------:|:-------:|:-------:|
86
+ | Train | &check; | &check; | &check; | &check; | &check; | &check; | &check; | &check; | &check; | &check; | &cross; | &cross; | &cross; | &cross; | &cross; | &cross; | &cross; | &cross; | &cross; | &cross; | &cross; |
87
+ | Test | &check; | &check; | &check; | &check; | &cross; | &cross; | &check; | &cross; | &cross; | &cross; | &check; | &check; | &check; | &check; | &check; | &check; | &check; | &check; | &check; | &check; | &check; |
88
+
89
+ Noted we do not use `coco_2017_train` for training.
90
+
91
+ Instead, we augment `lvis_v1_train` with annotations from coco, and keep the image set unchanged.
92
+
93
+ And we register it as `lvis_v1_train+coco` for instance segmentation and `lvis_v1_train+coco_panoptic_separated` for panoptic segmentation.
94
+
95
+
96
+ ## :test_tube: Inference
97
+
98
+ ### Infer on 160+ dataset
99
+ We provide several scripts to evaluate all models.
100
+
101
+ It is necessary to adjust the checkpoint location and GPU number in the scripts before running them.
102
+
103
+ ```bash
104
+ scripts/eval_all_D.sh
105
+ scripts/eval_all_C.sh
106
+ scripts/eval_all_B.sh
107
+ scripts/eval_all_A.sh
108
+ ```
109
+
110
+ ### Infer on images or videos
111
+
112
+ APE-D
113
+ ```
114
+ python3.9 demo/demo_lazy.py \
115
+ --config-file configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4_1080k.py \
116
+ --input image1.jpg image2.jpg image3.jpg \
117
+ --output /path/to/output/dir \
118
+ --confidence-threshold 0.1 \
119
+ --text-prompt 'person,car,chess piece of horse head' \
120
+ --with-box \
121
+ --with-mask \
122
+ --with-sseg \
123
+ --opts \
124
+ train.init_checkpoint=/path/to/APE-D/checkpoint \
125
+ model.model_language.cache_dir="" \
126
+ model.model_vision.select_box_nums_for_evaluation=500 \
127
+ model.model_vision.text_feature_bank_reset=True \
128
+ ```
129
+
130
+ To disable `xformers`, add the following option:
131
+ ```
132
+ model.model_vision.backbone.net.xattn=False \
133
+ ```
134
+
135
+ To use `pytorch` version of `MultiScaleDeformableAttention`, add the following option:
136
+ ```
137
+ model.model_vision.transformer.encoder.pytorch_attn=True \
138
+ model.model_vision.transformer.decoder.pytorch_attn=True \
139
+ ```
140
+
141
+
142
+ ## :train: Training
143
+
144
+ ### Prepare backbone and language models
145
+ ```bash
146
+ git lfs install
147
+ git clone https://huggingface.co/QuanSun/EVA-CLIP models/QuanSun/EVA-CLIP/
148
+ git clone https://huggingface.co/BAAI/EVA models/BAAI/EVA/
149
+ git clone https://huggingface.co/Yuxin-CV/EVA-02 models/Yuxin-CV/EVA-02/
150
+ ```
151
+
152
+ Resize patch size:
153
+ ```bash
154
+ python3.9 tools/eva_interpolate_patch_14to16.py --input models/QuanSun/EVA-CLIP/EVA02_CLIP_E_psz14_plus_s9B.pt --output models/QuanSun/EVA-CLIP/EVA02_CLIP_E_psz14to16_plus_s9B.pt --image_size 224
155
+ python3.9 tools/eva_interpolate_patch_14to16.py --input models/QuanSun/EVA-CLIP/EVA01_CLIP_g_14_plus_psz14_s11B.pt --output models/QuanSun/EVA-CLIP/EVA01_CLIP_g_14_plus_psz14to16_s11B.pt --image_size 224
156
+ python3.9 tools/eva_interpolate_patch_14to16.py --input models/QuanSun/EVA-CLIP/EVA02_CLIP_L_336_psz14_s6B.pt --output models/QuanSun/EVA-CLIP/EVA02_CLIP_L_336_psz14to16_s6B.pt --image_size 336
157
+ ```
158
+
159
+ ### Train APE-D
160
+
161
+ Single node:
162
+ ```bash
163
+ python3.9 tools/train_net.py \
164
+ --num-gpus 8 \
165
+ --resume \
166
+ --config-file configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4_1080k_mdl.py \
167
+ train.output_dir=output/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4_1080k_mdl_`date +'%Y%m%d_%H%M%S'`
168
+ ```
169
+
170
+ Multiple nodes:
171
+ ```bash
172
+ python3.9 tools/train_net.py \
173
+ --dist-url="tcp://${MASTER_IP}:${MASTER_PORT}" \
174
+ --num-gpus ${HOST_GPU_NUM} \
175
+ --num-machines ${HOST_NUM} \
176
+ --machine-rank ${INDEX} \
177
+ --resume \
178
+ --config-file configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4_1080k_mdl.py \
179
+ train.output_dir=output/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4_1080k_mdl_`date +'%Y%m%d_%H'`0000
180
+ ```
181
+
182
+ ### Train APE-C
183
+
184
+ Single node:
185
+ ```bash
186
+ python3.9 tools/train_net.py \
187
+ --num-gpus 8 \
188
+ --resume \
189
+ --config-file configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_1080k.py \
190
+ train.output_dir=output/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_1080k_`date +'%Y%m%d_%H%M%S'`
191
+ ```
192
+
193
+ Multiple nodes:
194
+ ```bash
195
+ python3.9 tools/train_net.py \
196
+ --dist-url="tcp://${MASTER_IP}:${MASTER_PORT}" \
197
+ --num-gpus ${HOST_GPU_NUM} \
198
+ --num-machines ${HOST_NUM} \
199
+ --machine-rank ${INDEX} \
200
+ --resume \
201
+ --config-file configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_1080k.py \
202
+ train.output_dir=output/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_1080k_`date +'%Y%m%d_%H'`0000
203
+ ```
204
+
205
+ ### Train APE-B
206
+
207
+ Single node:
208
+ ```bash
209
+ python3.9 tools/train_net.py \
210
+ --num-gpus 8 \
211
+ --resume \
212
+ --config-file configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_1080k.py \
213
+ train.output_dir=output/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_1080k_`date +'%Y%m%d_%H%M%S'`
214
+ ```
215
+
216
+ Multiple nodes:
217
+ ```bash
218
+ python3.9 tools/train_net.py \
219
+ --dist-url="tcp://${MASTER_IP}:${MASTER_PORT}" \
220
+ --num-gpus ${HOST_GPU_NUM} \
221
+ --num-machines ${HOST_NUM} \
222
+ --machine-rank ${INDEX} \
223
+ --resume \
224
+ --config-file configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_1080k.py \
225
+ train.output_dir=output/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_1080k_`date +'%Y%m%d_%H'`0000
226
+ ```
227
+
228
+ ### Train APE-A
229
+
230
+ Single node:
231
+ ```bash
232
+ python3.9 tools/train_net.py \
233
+ --num-gpus 8 \
234
+ --resume \
235
+ --config-file configs/LVISCOCOCOCOSTUFF_O365_OID_VG/ape_deta/ape_deta_vitl_eva02_lsj1024_cp_720k.py \
236
+ train.output_dir=output/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VG/ape_deta/ape_deta_vitl_eva02_lsj1024_cp_720k_`date +'%Y%m%d_%H%M%S'`
237
+ ```
238
+
239
+ Multiple nodes:
240
+ ```bash
241
+ python3.9 tools/train_net.py \
242
+ --dist-url="tcp://${MASTER_IP}:${MASTER_PORT}" \
243
+ --num-gpus ${HOST_GPU_NUM} \
244
+ --num-machines ${HOST_NUM} \
245
+ --machine-rank ${INDEX} \
246
+ --resume \
247
+ --config-file configs/LVISCOCOCOCOSTUFF_O365_OID_VG/ape_deta/ape_deta_vitl_eva02_lsj1024_cp_720k.py \
248
+ train.output_dir=output/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VG/ape_deta/ape_deta_vitl_eva02_lsj1024_cp_720k_`date +'%Y%m%d_%H'`0000
249
+ ```
250
+
251
+
252
+
253
+ ## :luggage: Checkpoints
254
+
255
+ ```
256
+ git lfs install
257
+ git clone https://huggingface.co/shenyunhang/APE
258
+ ```
259
+
260
+ <!-- insert a table -->
261
+ <table>
262
+ <thead>
263
+ <tr style="text-align: right;">
264
+ <th></th>
265
+ <th>name</th>
266
+ <th>Checkpoint</th>
267
+ <th>Config</th>
268
+ </tr>
269
+ </thead>
270
+ <tbody>
271
+ <tr>
272
+ <th>1</th>
273
+ <td>APE-A</td>
274
+ <td><a href="https://huggingface.co/shenyunhang/APE/blob/main/configs/LVISCOCOCOCOSTUFF_O365_OID_VG/ape_deta/ape_deta_vitl_eva02_lsj_cp_720k_20230504_002019/model_final.pth">HF link</a></td>
275
+ <td><a href="https://github.com/shenyunhang/APE/blob/main/configs/LVISCOCOCOCOSTUFF_O365_OID_VG/ape_deta/ape_deta_vitl_eva02_lsj1024_cp_720k.py">link</a></td>
276
+ </tr>
277
+ <tr>
278
+ <th>2</th>
279
+ <td>APE-B</td>
280
+ <td><a href="https://huggingface.co/shenyunhang/APE/blob/main/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj_cp_1080k_20230702_225418/model_final.pth">HF link</a>
281
+ <td><a href="https://github.com/shenyunhang/APE/blob/main/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_1080k.py">link</a></td>
282
+ </tr>
283
+ <tr>
284
+ <th>3</th>
285
+ <td>APE-C</td>
286
+ <td><a href="https://huggingface.co/shenyunhang/APE/blob/main/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj_cp_1080k_20230702_210950/model_final.pth">HF link</a>
287
+ <td><a href="https://github.com/shenyunhang/APE/blob/main/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_1080k.py">link</a></td>
288
+ </tr>
289
+ <tr>
290
+ <th>4</th>
291
+ <td>APE-D</td>
292
+ <td><a href="https://huggingface.co/shenyunhang/APE/blob/main/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4_1080k_mdl_20230829_162438/model_final.pth">HF link</a>
293
+ <td><a href="https://github.com/shenyunhang/APE/blob/main/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4_1080k_mdl.py">link</a></td>
294
+ </tr>
295
+ </tbody>
296
+ </table>
297
+
298
+
299
+ ## :medal_military: Results
300
+
301
+ <img src=".asset/radar.png" alt="radar" width="100%">
302
+
303
+
304
+ ## :black_nib: Citation
305
+
306
+ If you find our work helpful for your research, please consider citing the following BibTeX entry.
307
+
308
+ ```bibtex
309
+ @inproceedings{APE,
310
+ title={Aligning and Prompting Everything All at Once for Universal Visual Perception},
311
+ author={Shen, Yunhang and Fu, Chaoyou and Chen, Peixian and Zhang, Mengdan and Li, Ke and Sun, Xing and Wu, Yunsheng and Lin, Shaohui and Ji, Rongrong},
312
+ journal={CVPR},
313
+ year={2024}
314
+ }
315
+ ```
approach/ovod/APE/__init__.py ADDED
File without changes
approach/ovod/APE/configs/ADE20k_PanopticSegmentation/ape_deta/ape_deta_r50_160k.py ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from detectron2.config import LazyCall as L
2
+ from detectron2.solver import WarmupParamScheduler
3
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
4
+
5
+ from ...COCO_InstanceSegmentation.ape_deta.ape_deta_r50_12ep import (
6
+ lr_multiplier,
7
+ model,
8
+ optimizer,
9
+ train,
10
+ )
11
+ from ...common.data.ade20k_panoptic import dataloader
12
+
13
+ num_classes = 150
14
+ model.num_classes = num_classes
15
+ model.criterion.num_classes = num_classes
16
+ model.criterion.matcher_stage2.num_classes = num_classes
17
+
18
+ model.model_vision.dataset_prompts = ["name"]
19
+ model.model_vision.dataset_names = ["ade20k_panoptic"]
20
+ model.model_vision.dataset_metas = dataloader.train.dataset.names
21
+
22
+ model.model_vision.instance_on = True
23
+ model.model_vision.semantic_on = True
24
+ model.model_vision.panoptic_on = True
25
+
26
+ model.model_vision.stuff_prob_thing = -1.0
27
+
28
+ train.max_iter = 160000
29
+ train.eval_period = 5000
30
+
31
+ lr_multiplier = L(WarmupParamScheduler)(
32
+ scheduler=L(MultiStepParamScheduler)(
33
+ values=[1.0, 0.1, 0.01],
34
+ milestones=[135000, 150000],
35
+ num_updates=160000,
36
+ ),
37
+ warmup_length=1000 / 160000,
38
+ warmup_method="linear",
39
+ warmup_factor=0.001,
40
+ )
41
+
42
+ model.model_vision.semantic_post_nms = False
43
+ model.model_vision.panoptic_post_nms = True
44
+ model.model_vision.aux_mask = True
45
+
46
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/ADE20k_PanopticSegmentation/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024.py ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.nn as nn
2
+
3
+ from detectron2.config import LazyCall as L
4
+ from detectron2.layers import ShapeSpec
5
+ from detrex.modeling.neck import ChannelMapper
6
+ from ape.layers import VisionLanguageFusion
7
+ from ape.modeling.ape_deta import (
8
+ DeformableDETRSegmVL,
9
+ DeformableDetrTransformerDecoderVL,
10
+ DeformableDetrTransformerEncoderVL,
11
+ DeformableDetrTransformerVL,
12
+ )
13
+ from ape.modeling.text import EVA02CLIP
14
+
15
+ from ...common.backbone.vitl_eva02_clip import backbone
16
+ from .ape_deta_vitl_eva02_lsj1024 import dataloader, lr_multiplier, model, optimizer, train
17
+
18
+ model.model_vision.backbone = backbone
19
+
20
+ train.init_checkpoint = (
21
+ "models/QuanSun/EVA-CLIP/EVA02_CLIP_L_336_psz14to16_s6B.pt?matching_heuristics=True"
22
+ )
23
+
24
+ model.model_language = L(EVA02CLIP)(
25
+ clip_model="EVA02-CLIP-bigE-14-plus",
26
+ cache_dir="models/QuanSun/EVA-CLIP/EVA02_CLIP_E_psz14_plus_s9B.pt",
27
+ dtype="float16",
28
+ )
29
+ model.model_vision.embed_dim_language = 1024
30
+
31
+ model.model_vision.neck = L(ChannelMapper)(
32
+ input_shapes={
33
+ "p2": ShapeSpec(channels=256),
34
+ "p3": ShapeSpec(channels=256),
35
+ "p4": ShapeSpec(channels=256),
36
+ "p5": ShapeSpec(channels=256),
37
+ "p6": ShapeSpec(channels=256),
38
+ },
39
+ in_features=["p2", "p3", "p4", "p5", "p6"],
40
+ out_channels=256,
41
+ num_outs=5,
42
+ kernel_size=1,
43
+ norm_layer=L(nn.GroupNorm)(num_groups=32, num_channels=256),
44
+ )
45
+
46
+ model.model_vision.mask_in_features = ["p2"]
47
+ model.model_vision.input_shapes = {
48
+ "p2": ShapeSpec(channels=256),
49
+ "p3": ShapeSpec(channels=256),
50
+ "p4": ShapeSpec(channels=256),
51
+ "p5": ShapeSpec(channels=256),
52
+ "p6": ShapeSpec(channels=256),
53
+ }
54
+
55
+ model.model_vision.transformer.encoder.num_layers = 6
56
+ model.model_vision.transformer.decoder.num_layers = 6
57
+ model.model_vision.transformer.encoder.embed_dim = 256
58
+ model.model_vision.transformer.decoder.embed_dim = 256
59
+ model.model_vision.embed_dim = 256
60
+ model.model_vision.backbone.out_channels = 256
61
+
62
+ model.model_vision.update(
63
+ _target_=DeformableDETRSegmVL,
64
+ )
65
+ model.model_vision.transformer.update(
66
+ _target_=DeformableDetrTransformerVL,
67
+ )
68
+ model.model_vision.transformer.encoder.update(
69
+ _target_=DeformableDetrTransformerEncoderVL,
70
+ )
71
+ model.model_vision.transformer.decoder.update(
72
+ _target_=DeformableDetrTransformerDecoderVL,
73
+ )
74
+
75
+
76
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
77
+ v_dim="${....embed_dim}",
78
+ l_dim="${....embed_dim_language}",
79
+ embed_dim=2048,
80
+ num_heads=8,
81
+ dropout=0.1,
82
+ drop_path=0.0,
83
+ init_values=1.0 / 6,
84
+ stable_softmax_2d=True,
85
+ clamp_min_for_underflow=True,
86
+ clamp_max_for_overflow=True,
87
+ use_checkpoint=True,
88
+ )
89
+
90
+ model.model_vision.text_feature_bank = True
91
+ model.model_vision.text_feature_reduce_before_fusion = True
92
+ model.model_vision.text_feature_batch_repeat = True
93
+ model.model_vision.expression_cumulative_gt_class = True
94
+ model.model_vision.name_prompt_fusion_type = "zero"
95
+
96
+ model.model_vision.stuff_dataset_learn_thing = False
97
+ model.model_vision.stuff_prob_thing = -1.0
98
+ model.model_vision.transformer.proposal_ambiguous = 1
99
+
100
+ train.output_dir = "output/" + __file__[:-3]
101
+ model.model_vision.vis_period = 12800
approach/ovod/APE/configs/ADE20k_PanopticSegmentation/ape_deta/ape_deta_vitl_eva02_lsj1024.py ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from ...COCO_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_12ep import (
2
+ lr_multiplier,
3
+ model,
4
+ optimizer,
5
+ train,
6
+ )
7
+ from ...common.data.ade20k_panoptic_lsj1024 import dataloader
8
+
9
+ model.model_vision.dataset_prompts = ["name"]
10
+ model.model_vision.name_prompt_fusion_text = [False]
11
+ model.model_vision.dataset_names = ["ade20k"]
12
+ model.model_vision.dataset_metas = dataloader.train.dataset.names
13
+
14
+ model.model_vision.select_box_nums_for_evaluation = 300
15
+
16
+ model.model_vision.instance_on = True
17
+ model.model_vision.semantic_on = True
18
+ model.model_vision.panoptic_on = True
19
+
20
+ model.model_vision.stuff_prob_thing = -1.0
21
+
22
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/ADE20k_PanopticSegmentation/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024.py ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from detectron2.config import LazyCall as L
2
+ from ape.layers import VisionLanguageFusion
3
+ from ape.modeling.ape_deta import (
4
+ DeformableDETRSegmVL,
5
+ DeformableDetrTransformerDecoderVL,
6
+ DeformableDetrTransformerEncoderVL,
7
+ DeformableDetrTransformerVL,
8
+ )
9
+
10
+ from .ape_deta_vitl_eva02_lsj1024 import dataloader, lr_multiplier, model, optimizer, train
11
+
12
+ model.model_vision.update(
13
+ _target_=DeformableDETRSegmVL,
14
+ )
15
+ model.model_vision.transformer.update(
16
+ _target_=DeformableDetrTransformerVL,
17
+ )
18
+ model.model_vision.transformer.encoder.update(
19
+ _target_=DeformableDetrTransformerEncoderVL,
20
+ )
21
+ model.model_vision.transformer.decoder.update(
22
+ _target_=DeformableDetrTransformerDecoderVL,
23
+ )
24
+
25
+
26
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
27
+ v_dim="${....embed_dim}",
28
+ l_dim="${....embed_dim_language}",
29
+ embed_dim=2048,
30
+ num_heads=8,
31
+ dropout=0.1,
32
+ drop_path=0.0,
33
+ init_values=1.0 / 6,
34
+ stable_softmax_2d=True,
35
+ clamp_min_for_underflow=True,
36
+ clamp_max_for_overflow=True,
37
+ use_checkpoint=True,
38
+ )
39
+
40
+ model.model_vision.text_feature_bank = True
41
+ model.model_vision.text_feature_reduce_before_fusion = True
42
+ model.model_vision.text_feature_batch_repeat = True
43
+ model.model_vision.expression_cumulative_gt_class = True
44
+ model.model_vision.name_prompt_fusion_type = "zero"
45
+
46
+ train.output_dir = "output/" + __file__[:-3]
47
+ model.model_vision.vis_period = 12800
approach/ovod/APE/configs/COCO_REFCOCO/ape_deta/ape_deta_r50_12ep.py ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from detectron2.config import LazyCall as L
2
+ from detrex.config import get_config
3
+
4
+ from ...COCO_InstanceSegmentation.ape_deta.ape_deta_r50_12ep import (
5
+ lr_multiplier,
6
+ model,
7
+ optimizer,
8
+ train,
9
+ )
10
+ from ...common.data.coco_refcoco_instance import dataloader
11
+
12
+ model.model_vision.num_classes = 80
13
+ model.model_vision.select_box_nums_for_evaluation = 300
14
+
15
+ criterion = model.model_vision.criterion[0]
16
+ model.model_vision.criterion = [criterion for _ in range(2)]
17
+ for criterion, num_classes in zip(model.model_vision.criterion, [80, 1]):
18
+ criterion.num_classes = num_classes
19
+
20
+ model.model_vision.criterion[1].weight_dict["loss_class_enc"] = 0.0
21
+
22
+ dataloader.train.total_batch_size = 16
23
+ dataloader.train.total_batch_size_list = [16, 16]
24
+
25
+ model.model_vision.dataset_prompts = ["name", "expression"]
26
+ model.model_vision.dataset_names = ["coco_2017", "refcoco"]
27
+ model.model_vision.dataset_metas = dataloader.train.dataset.names
28
+
29
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/COCO_REFCOCO/ape_deta/ape_deta_r50_24ep.py ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from detrex.config import get_config
2
+
3
+ from .ape_deta_r50_12ep import dataloader, model, optimizer, train
4
+
5
+ lr_multiplier = get_config("common/coco_schedule.py").lr_multiplier_24ep
6
+
7
+ train.output_dir = "output/" + __file__[:-3]
8
+ model.model_vision.output_dir = train.output_dir
9
+
10
+ train.max_iter = 180000
11
+
12
+ train.eval_period = 10000
approach/ovod/APE/configs/COCO_REFCOCO/ape_deta/ape_deta_r50_36ep.py ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from detrex.config import get_config
2
+
3
+ from .ape_deta_r50_12ep import dataloader, model, optimizer, train
4
+
5
+ lr_multiplier = get_config("common/coco_schedule.py").lr_multiplier_36ep
6
+
7
+ train.output_dir = "output/" + __file__[:-3]
8
+ model.model_vision.output_dir = train.output_dir
9
+
10
+ train.max_iter = 270000
11
+
12
+ train.eval_period = 15000
approach/ovod/APE/configs/COCO_REFCOCO/ape_deta/ape_deta_r50_vlf_12ep.py ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from detectron2.config import LazyCall as L
2
+ from omegaconf import OmegaConf
3
+ from ape.layers import VisionLanguageFusion
4
+ from ape.modeling.ape_deta import (
5
+ DeformableDETRSegmVL,
6
+ DeformableDetrTransformerDecoderVL,
7
+ DeformableDetrTransformerEncoderVL,
8
+ DeformableDetrTransformerVL,
9
+ )
10
+
11
+ from .ape_deta_r50_12ep import dataloader, lr_multiplier, model, optimizer, train
12
+
13
+ model.model_vision.update(
14
+ _target_=DeformableDETRSegmVL,
15
+ )
16
+ model.model_vision.transformer.update(
17
+ _target_=DeformableDetrTransformerVL,
18
+ )
19
+ model.model_vision.transformer.encoder.update(
20
+ _target_=DeformableDetrTransformerEncoderVL,
21
+ )
22
+ model.model_vision.transformer.decoder.update(
23
+ _target_=DeformableDetrTransformerDecoderVL,
24
+ )
25
+
26
+
27
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
28
+ v_dim="${....embed_dim}",
29
+ l_dim="${....embed_dim_language}",
30
+ embed_dim=2048,
31
+ num_heads=8,
32
+ dropout=0.1,
33
+ drop_path=0.0,
34
+ init_values=1.0 / 6,
35
+ cfg=OmegaConf.from_dotlist(
36
+ [
37
+ "MODEL.DYHEAD.FUSE_CONFIG.STABLE_SOFTMAX_2D=False",
38
+ "MODEL.DYHEAD.FUSE_CONFIG.CLAMP_MIN_FOR_UNDERFLOW=True",
39
+ "MODEL.DYHEAD.FUSE_CONFIG.CLAMP_MAX_FOR_OVERFLOW=True",
40
+ "MODEL.VL_FUSION_USE_CHECKPOINT=True",
41
+ ],
42
+ ),
43
+ )
44
+
45
+
46
+ model.model_vision.text_feature_bank = False
47
+ model.model_vision.text_feature_reduce_before_fusion = False
48
+ model.model_vision.text_feature_batch_repeat = False
49
+ model.model_vision.expression_cumulative_gt_class = False
50
+
51
+ train.output_dir = "output/" + __file__[:-3]
52
+ model.model_vision.vis_period = 5120
approach/ovod/APE/configs/COCO_REFCOCO/ape_deta/ape_deta_r50_vlf_36ep.py ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from detrex.config import get_config
2
+
3
+ from .ape_deta_r50_vlf_12ep import dataloader, model, optimizer, train
4
+
5
+ lr_multiplier = get_config("common/coco_schedule.py").lr_multiplier_36ep
6
+
7
+ train.output_dir = "output/" + __file__[:-3]
8
+ model.model_vision.output_dir = train.output_dir
9
+
10
+ train.max_iter = 270000
11
+
12
+ train.eval_period = 15000
approach/ovod/APE/configs/COCO_REFCOCO/ape_deta/ape_deta_r50_vlf_bert_36ep.py ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from detectron2.config import LazyCall as L
2
+ from ape.modeling.text import Bert
3
+
4
+ from .ape_deta_r50_vlf_36ep import dataloader, lr_multiplier, model, optimizer, train
5
+
6
+ model.model_vision.criterion[1].num_classes = 1
7
+
8
+ model.model_language = L(Bert)(
9
+ pretrained_model_name_or_path="models/huggingface/bert-base-uncased/"
10
+ )
11
+ model.model_vision.embed_dim_language = 768
12
+ model.model_vision.text_feature_reduce_type = "average"
13
+
14
+ model.model_vision.text_feature_bank = False
15
+ model.model_vision.text_feature_reduce_before_fusion = False
16
+ model.model_vision.text_feature_batch_repeat = False
17
+ model.model_vision.expression_cumulative_gt_class = False
18
+
19
+
20
+ train.output_dir = "output/" + __file__[:-3]
21
+ model.model_vision.vis_period = 5120
approach/ovod/APE/configs/COCO_REFCOCO/ape_deta/ape_deta_vitl_eva02_lsj1024_12ep.py ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from functools import partial
2
+
3
+ import torch.nn as nn
4
+
5
+ from detectron2.config import LazyCall as L
6
+ from detectron2.layers import ShapeSpec
7
+ from detectron2.modeling.backbone.fpn import LastLevelMaxPool
8
+ from detrex.config import get_config
9
+ from ape.modeling.backbone.vit import get_vit_lr_decay_rate
10
+ from ape.modeling.backbone.vit_eva02 import SimpleFeaturePyramid, ViT
11
+ from ape.modeling.text import EVA01CLIP
12
+
13
+ from .....detectron2.configs.common.data.constants import constants
14
+ from ...common.data.coco_refcoco_instance_lsj1024 import dataloader
15
+ from .models.ape_deta_r50 import model
16
+
17
+ model.model_vision.pixel_mean = constants.imagenet_rgb256_mean
18
+ model.model_vision.pixel_std = constants.imagenet_rgb256_std
19
+ model.model_vision.input_format = "RGB"
20
+
21
+ model.model_vision.backbone = L(SimpleFeaturePyramid)(
22
+ net=L(ViT)( # Single-scale ViT backbone
23
+ img_size=1024,
24
+ patch_size=16,
25
+ embed_dim=1024,
26
+ depth=24,
27
+ num_heads=16,
28
+ drop_path_rate=0.4,
29
+ window_size=16,
30
+ mlp_ratio=4 * 2 / 3,
31
+ qkv_bias=True,
32
+ norm_layer=partial(nn.LayerNorm, eps=1e-6),
33
+ window_block_indexes=list(range(0, 5))
34
+ + list(range(6, 11))
35
+ + list(range(12, 17))
36
+ + list(range(18, 23)),
37
+ residual_block_indexes=[],
38
+ use_rel_pos=True,
39
+ out_feature="last_feat",
40
+ use_act_checkpoint=True,
41
+ xattn=True,
42
+ ),
43
+ in_feature="${.net.out_feature}",
44
+ out_channels=256,
45
+ scale_factors=(4.0, 2.0, 1.0, 0.5),
46
+ top_block=L(LastLevelMaxPool)(),
47
+ norm="LN",
48
+ square_pad=1024,
49
+ )
50
+
51
+ model.model_vision.neck = None
52
+
53
+ model.model_vision.mask_in_features = ["p2"]
54
+ model.model_vision.input_shapes = {
55
+ "p2": ShapeSpec(channels=256),
56
+ "p3": ShapeSpec(channels=256),
57
+ "p4": ShapeSpec(channels=256),
58
+ "p5": ShapeSpec(channels=256),
59
+ "p6": ShapeSpec(channels=256),
60
+ }
61
+
62
+ optimizer = get_config("common/optim.py").AdamW
63
+ optimizer.params.lr_factor_func = (
64
+ lambda module_name: 0.1
65
+ if "reference_points" in module_name or "sampling_offsets" in module_name
66
+ else get_vit_lr_decay_rate(module_name, lr_decay_rate=0.8, num_layers=24)
67
+ if "backbone.net" in module_name
68
+ else 1
69
+ )
70
+ optimizer.params.overrides = {"pos_embed": {"weight_decay": 0.0}}
71
+ optimizer.params.weight_decay_norm = None
72
+
73
+ optimizer.lr = 2e-4
74
+ optimizer.betas = (0.9, 0.999)
75
+ optimizer.weight_decay = 1e-4
76
+
77
+ train = get_config("common/train.py").train
78
+ train.max_iter = 90000
79
+ train.eval_period = 5000
80
+ train.log_period = 20
81
+
82
+ train.checkpointer.period = 5000
83
+ train.checkpointer.max_to_keep = 2
84
+
85
+ train.clip_grad.enabled = True
86
+ train.clip_grad.params.max_norm = 0.1
87
+ train.clip_grad.params.norm_type = 2
88
+
89
+ train.device = "cuda"
90
+
91
+ train.init_checkpoint = (
92
+ "models/Yunxin-CV/EVA-02/eva02/pt/eva02_L_pt_in21k_p14to16.pt?matching_heuristics=True"
93
+ )
94
+
95
+ train.amp.enabled = True
96
+ train.ddp.fp16_compression = True
97
+
98
+ lr_multiplier = get_config("common/coco_schedule.py").lr_multiplier_12ep
99
+ lr_multiplier.scheduler.milestones = [75000, 90000]
100
+ lr_multiplier.warmup_length = 1000 / train.max_iter
101
+
102
+ dataloader.train.num_workers = 16
103
+ dataloader.train.total_batch_size = 16
104
+ dataloader.train.total_batch_size_list = [16, 16]
105
+ dataloader.train.mapper.image_format = "RGB"
106
+ dataloader.train.mapper.use_instance_mask = True
107
+
108
+ model.model_vision.dataset_prompts = ["name", "expression"]
109
+ model.model_vision.dataset_names = ["coco_2017", "refcoco"]
110
+ model.model_vision.dataset_metas = dataloader.train.dataset.names
111
+
112
+ train.output_dir = "output/" + __file__[:-3]
113
+ model.model_vision.output_dir = train.output_dir
114
+
115
+ model.model_language = L(EVA01CLIP)(
116
+ clip_model="EVA_CLIP_g_14_X", cache_dir="models/BAAI/EVA/eva_clip_psz14.pt"
117
+ )
118
+ model.model_vision.embed_dim_language = 1024
approach/ovod/APE/configs/COCO_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_36ep.py ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from functools import partial
2
+
3
+ import torch.nn as nn
4
+
5
+ from detectron2.config import LazyCall as L
6
+ from detectron2.layers import ShapeSpec
7
+ from detectron2.modeling.backbone.fpn import LastLevelMaxPool
8
+ from detrex.config import get_config
9
+ from ape.modeling.backbone.vit import get_vit_lr_decay_rate
10
+ from ape.modeling.backbone.vit_eva02 import SimpleFeaturePyramid, ViT
11
+ from ape.modeling.text import EVA01CLIP
12
+
13
+ from .....detectron2.configs.common.data.constants import constants
14
+ from ...common.data.coco_refcoco_instance_lsj1024 import dataloader
15
+ from .models.ape_deta_r50_vlf import model
16
+
17
+ model.model_vision.pixel_mean = constants.imagenet_rgb256_mean
18
+ model.model_vision.pixel_std = constants.imagenet_rgb256_std
19
+ model.model_vision.input_format = "RGB"
20
+
21
+ model.model_vision.backbone = L(SimpleFeaturePyramid)(
22
+ net=L(ViT)( # Single-scale ViT backbone
23
+ img_size=1024,
24
+ patch_size=16,
25
+ embed_dim=1024,
26
+ depth=24,
27
+ num_heads=16,
28
+ drop_path_rate=0.4,
29
+ window_size=16,
30
+ mlp_ratio=4 * 2 / 3,
31
+ qkv_bias=True,
32
+ norm_layer=partial(nn.LayerNorm, eps=1e-6),
33
+ window_block_indexes=list(range(0, 5))
34
+ + list(range(6, 11))
35
+ + list(range(12, 17))
36
+ + list(range(18, 23)),
37
+ residual_block_indexes=[],
38
+ use_rel_pos=True,
39
+ out_feature="last_feat",
40
+ use_act_checkpoint=False,
41
+ xattn=True,
42
+ ),
43
+ in_feature="${.net.out_feature}",
44
+ out_channels=256,
45
+ scale_factors=(4.0, 2.0, 1.0, 0.5),
46
+ top_block=L(LastLevelMaxPool)(),
47
+ norm="LN",
48
+ square_pad=1024,
49
+ )
50
+
51
+ model.model_vision.neck = None
52
+
53
+ model.model_vision.mask_in_features = ["p2"]
54
+ model.model_vision.input_shapes = {
55
+ "p2": ShapeSpec(channels=256),
56
+ "p3": ShapeSpec(channels=256),
57
+ "p4": ShapeSpec(channels=256),
58
+ "p5": ShapeSpec(channels=256),
59
+ "p6": ShapeSpec(channels=256),
60
+ }
61
+
62
+ optimizer = get_config("common/optim.py").AdamW
63
+ optimizer.params.lr_factor_func = (
64
+ lambda module_name: 0.1
65
+ if "reference_points" in module_name or "sampling_offsets" in module_name
66
+ else get_vit_lr_decay_rate(module_name, lr_decay_rate=0.8, num_layers=24)
67
+ if "backbone.net" in module_name
68
+ else 1
69
+ )
70
+ optimizer.params.overrides = {"pos_embed": {"weight_decay": 0.0}}
71
+ optimizer.params.weight_decay_norm = None
72
+
73
+ optimizer.lr = 2e-4
74
+ optimizer.betas = (0.9, 0.999)
75
+ optimizer.weight_decay = 1e-4
76
+
77
+ train = get_config("common/train.py").train
78
+ train.max_iter = 270000
79
+ train.eval_period = 27000
80
+ train.log_period = 20
81
+
82
+ train.checkpointer.period = 5000
83
+ train.checkpointer.max_to_keep = 2
84
+
85
+ train.clip_grad.enabled = True
86
+ train.clip_grad.params.max_norm = 0.1
87
+ train.clip_grad.params.norm_type = 2
88
+
89
+ train.device = "cuda"
90
+
91
+ train.init_checkpoint = (
92
+ "models/Yunxin-CV/EVA-02/eva02/pt/eva02_L_pt_in21k_p14to16.pt?matching_heuristics=True"
93
+ )
94
+
95
+ train.amp.enabled = True
96
+ train.ddp.fp16_compression = True
97
+
98
+ lr_multiplier = get_config("common/coco_schedule.py").lr_multiplier_36ep
99
+ lr_multiplier.warmup_length = 1000 / train.max_iter
100
+
101
+ dataloader.train.num_workers = 16
102
+ dataloader.train.total_batch_size = 16
103
+ dataloader.train.total_batch_size_list = [16, 16]
104
+ dataloader.train.mapper.image_format = "RGB"
105
+ dataloader.train.mapper.use_instance_mask = True
106
+
107
+ model.model_vision.dataset_prompts = ["name", "expression"]
108
+ model.model_vision.dataset_names = ["coco_2017", "refcoco"]
109
+ model.model_vision.dataset_metas = dataloader.train.dataset.names
110
+
111
+ train.output_dir = "output/" + __file__[:-3]
112
+ model.model_vision.output_dir = train.output_dir
113
+
114
+ model.model_language = L(EVA01CLIP)(
115
+ clip_model="EVA_CLIP_g_14_X", cache_dir="models/BAAI/EVA/eva_clip_psz14.pt"
116
+ )
117
+ model.model_vision.embed_dim_language = 1024
118
+
approach/ovod/APE/configs/COCO_REFCOCO/ape_deta/ape_deta_vitl_lsj1024_12ep.py ADDED
@@ -0,0 +1,114 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from functools import partial
2
+
3
+ import torch.nn as nn
4
+
5
+ from detectron2.config import LazyCall as L
6
+ from detectron2.layers import ShapeSpec
7
+ from detectron2.modeling.backbone.fpn import LastLevelMaxPool
8
+ from detectron2.modeling.backbone.vit import SimpleFeaturePyramid, ViT, get_vit_lr_decay_rate
9
+ from detrex.config import get_config
10
+ from ape.modeling.text import EVA01CLIP
11
+
12
+ from .....detectron2.configs.common.data.constants import constants
13
+ from ...common.data.coco_refcoco_instance_lsj1024 import dataloader
14
+ from .models.ape_deta_r50 import model
15
+
16
+ model.model_vision.pixel_mean = constants.imagenet_rgb256_mean
17
+ model.model_vision.pixel_std = constants.imagenet_rgb256_std
18
+ model.model_vision.input_format = "RGB"
19
+
20
+ model.model_vision.backbone = L(SimpleFeaturePyramid)(
21
+ net=L(ViT)( # Single-scale ViT backbone
22
+ img_size=1024,
23
+ patch_size=16,
24
+ embed_dim=1024,
25
+ depth=24,
26
+ num_heads=16,
27
+ drop_path_rate=0.4,
28
+ window_size=14,
29
+ mlp_ratio=4,
30
+ norm_layer=partial(nn.LayerNorm, eps=1e-6),
31
+ window_block_indexes=list(range(0, 5))
32
+ + list(range(6, 11))
33
+ + list(range(12, 17))
34
+ + list(range(18, 23)),
35
+ residual_block_indexes=[],
36
+ use_rel_pos=True,
37
+ out_feature="last_feat",
38
+ use_act_checkpoint=True,
39
+ ),
40
+ in_feature="${.net.out_feature}",
41
+ out_channels=256,
42
+ scale_factors=(4.0, 2.0, 1.0, 0.5),
43
+ top_block=L(LastLevelMaxPool)(),
44
+ norm="LN",
45
+ square_pad=1024,
46
+ )
47
+
48
+ model.model_vision.neck = None
49
+
50
+ model.model_vision.mask_in_features = ["p2"]
51
+ model.model_vision.input_shapes = {
52
+ "p2": ShapeSpec(channels=256),
53
+ "p3": ShapeSpec(channels=256),
54
+ "p4": ShapeSpec(channels=256),
55
+ "p5": ShapeSpec(channels=256),
56
+ "p6": ShapeSpec(channels=256),
57
+ }
58
+
59
+ optimizer = get_config("common/optim.py").AdamW
60
+ optimizer.params.lr_factor_func = (
61
+ lambda module_name: 0.1
62
+ if "reference_points" in module_name or "sampling_offsets" in module_name
63
+ else get_vit_lr_decay_rate(module_name, lr_decay_rate=0.8, num_layers=24)
64
+ if "backbone" in module_name
65
+ else 1
66
+ )
67
+ optimizer.params.overrides = {"pos_embed": {"weight_decay": 0.0}}
68
+
69
+ optimizer.lr = 2e-4
70
+ optimizer.weight_decay = 0.05
71
+
72
+ train = get_config("common/train.py").train
73
+ train.max_iter = 90000
74
+ train.eval_period = 5000
75
+ train.log_period = 20
76
+
77
+ train.checkpointer.period = 5000
78
+ train.checkpointer.max_to_keep = 2
79
+
80
+ train.clip_grad.enabled = True
81
+ train.clip_grad.params.max_norm = 0.1
82
+ train.clip_grad.params.norm_type = 2
83
+
84
+ train.device = "cuda"
85
+
86
+ train.init_checkpoint = (
87
+ "detectron2://ImageNetPretrained/MAE/mae_pretrain_vit_large.pth?matching_heuristics=True"
88
+ )
89
+ train.init_checkpoint = "models/MAE/mae_pretrain_vit_large.pth?matching_heuristics=True"
90
+
91
+ train.amp.enabled = True
92
+ train.ddp.fp16_compression = True
93
+
94
+ lr_multiplier = get_config("common/coco_schedule.py").lr_multiplier_12ep
95
+ lr_multiplier.scheduler.milestones = [75000, 90000]
96
+ lr_multiplier.warmup_length = 1000 / train.max_iter
97
+
98
+ dataloader.train.num_workers = 16
99
+ dataloader.train.total_batch_size = 16
100
+ dataloader.train.total_batch_size_list = [16, 16]
101
+ dataloader.train.mapper.image_format = "RGB"
102
+ dataloader.train.mapper.use_instance_mask = True
103
+
104
+ model.model_vision.dataset_tasks = ["name", "expression"]
105
+ model.model_vision.dataset_names = ["coco_2017", "refcoco"]
106
+ model.model_vision.dataset_metas = dataloader.train.dataset.names
107
+
108
+ train.output_dir = "output/" + __file__[:-3]
109
+ model.model_vision.output_dir = train.output_dir
110
+
111
+ model.model_language = L(EVA01CLIP)(
112
+ clip_model="EVA_CLIP_g_14_X", cache_dir="models/BAAI/EVA/eva_clip_psz14.pt"
113
+ )
114
+ model.model_vision.embed_dim_language = 1024
approach/ovod/APE/configs/GQA_VisualGrounding/ape_deta/ape_deta_r50_12ep.py ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from ...COCO_InstanceSegmentation.ape_deta.ape_deta_r50_12ep import (
2
+ lr_multiplier,
3
+ model,
4
+ optimizer,
5
+ train,
6
+ )
7
+ from ...common.data.gqa_region_instance import dataloader
8
+
9
+ model.model_vision.num_classes = 200
10
+
11
+ model.model_vision.criterion[0].num_classes = 200
12
+
13
+ dataloader.train.mapper.max_num_phrase = 100
14
+
15
+ model.model_vision.dataset_prompts = ["phrase", "expression"]
16
+ model.model_vision.dataset_names = ["gqa", "refcoco"]
17
+ model.model_vision.dataset_metas = dataloader.train.dataset.names + ["refcoco-mixed"]
18
+
19
+ train.output_dir = "output/" + __file__[:-3]
20
+ model.model_vision.vis_period = 1280
approach/ovod/APE/configs/GQA_VisualGrounding/ape_deta/ape_deta_r50_12ep_eval_odinw13.py ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ from ...common.data.odinw13_instance import dataloader
2
+ from .ape_deta_r50_12ep import lr_multiplier, model, optimizer, train
3
+
4
+ model.model_vision.dataset_prompts = ["name" for _ in dataloader.tests]
5
+ model.model_vision.dataset_names = [
6
+ test.dataset.names.replace("_val", "") for test in dataloader.tests
7
+ ]
8
+ model.model_vision.dataset_metas = [test.dataset.names for test in dataloader.tests]
9
+
10
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/GQA_VisualGrounding/ape_deta/ape_deta_r50_12ep_eval_odinw35.py ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ from ...common.data.odinw35_instance import dataloader
2
+ from .ape_deta_r50_12ep import lr_multiplier, model, optimizer, train
3
+
4
+ model.model_vision.dataset_prompts = ["name" for _ in dataloader.tests]
5
+ model.model_vision.dataset_names = [
6
+ test.dataset.names.replace("_val", "") for test in dataloader.tests
7
+ ]
8
+ model.model_vision.dataset_metas = [test.dataset.names for test in dataloader.tests]
9
+
10
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/GQA_VisualGrounding/ape_deta/ape_deta_r50_vlf_12ep.py ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from detectron2.config import LazyCall as L
2
+ from omegaconf import OmegaConf
3
+ from ape.layers import VisionLanguageFusion
4
+ from ape.modeling.ape_deta import (
5
+ DeformableDETRSegmVL,
6
+ DeformableDetrTransformerDecoderVL,
7
+ DeformableDetrTransformerEncoderVL,
8
+ DeformableDetrTransformerVL,
9
+ )
10
+
11
+ from .ape_deta_r50_12ep import dataloader, lr_multiplier, model, optimizer, train
12
+
13
+ model.model_vision.update(
14
+ _target_=DeformableDETRSegmVL,
15
+ )
16
+ model.model_vision.transformer.update(
17
+ _target_=DeformableDetrTransformerVL,
18
+ )
19
+ model.model_vision.transformer.encoder.update(
20
+ _target_=DeformableDetrTransformerEncoderVL,
21
+ )
22
+ model.model_vision.transformer.decoder.update(
23
+ _target_=DeformableDetrTransformerDecoderVL,
24
+ )
25
+
26
+
27
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
28
+ v_dim="${....embed_dim}",
29
+ l_dim="${....embed_dim_language}",
30
+ embed_dim=2048,
31
+ num_heads=8,
32
+ dropout=0.1,
33
+ drop_path=0.0,
34
+ init_values=1.0 / 6,
35
+ cfg=OmegaConf.from_dotlist(
36
+ [
37
+ "MODEL.DYHEAD.FUSE_CONFIG.STABLE_SOFTMAX_2D=False",
38
+ "MODEL.DYHEAD.FUSE_CONFIG.CLAMP_MIN_FOR_UNDERFLOW=True",
39
+ "MODEL.DYHEAD.FUSE_CONFIG.CLAMP_MAX_FOR_OVERFLOW=True",
40
+ "MODEL.VL_FUSION_USE_CHECKPOINT=True",
41
+ ],
42
+ ),
43
+ )
44
+
45
+ train.output_dir = "output/" + __file__[:-3]
46
+ model.model_vision.vis_period = 1280
approach/ovod/APE/configs/GQA_VisualGrounding/ape_deta/ape_deta_r50_vlf_12ep_eval_odinw13.py ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ from ...common.data.odinw13_instance import dataloader
2
+ from .ape_deta_r50_vlf_12ep import lr_multiplier, model, optimizer, train
3
+
4
+ model.model_vision.dataset_prompts = ["name" for _ in dataloader.tests]
5
+ model.model_vision.dataset_names = [
6
+ test.dataset.names.replace("_val", "") for test in dataloader.tests
7
+ ]
8
+ model.model_vision.dataset_metas = [test.dataset.names for test in dataloader.tests]
9
+
10
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/GQA_VisualGrounding/ape_deta/ape_deta_r50_vlf_12ep_eval_odinw35.py ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ from ...common.data.odinw35_instance import dataloader
2
+ from .ape_deta_r50_vlf_12ep import lr_multiplier, model, optimizer, train
3
+
4
+ model.model_vision.dataset_prompts = ["name" for _ in dataloader.tests]
5
+ model.model_vision.dataset_names = [
6
+ test.dataset.names.replace("_val", "") for test in dataloader.tests
7
+ ]
8
+ model.model_vision.dataset_metas = [test.dataset.names for test in dataloader.tests]
9
+
10
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_REFCOCO/ape_deta/ape_deta_vitl_eva02_lsj1024_cp_180k.py ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from detectron2.config import LazyCall as L
2
+ from detectron2.solver import WarmupParamScheduler
3
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
4
+
5
+ from .ape_deta_vitl_eva02_lsj1024_cp_720k import dataloader, lr_multiplier, model, optimizer, train
6
+
7
+ train.max_iter = 180000
8
+ train.eval_period = 180000
9
+
10
+ lr_multiplier = L(WarmupParamScheduler)(
11
+ scheduler=L(MultiStepParamScheduler)(
12
+ values=[1.0, 0.1],
13
+ milestones=[150000],
14
+ num_updates=180000,
15
+ ),
16
+ warmup_length=1000 / 180000,
17
+ warmup_method="linear",
18
+ warmup_factor=0.001,
19
+ )
20
+
21
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_REFCOCO/ape_deta/ape_deta_vitl_eva02_lsj1024_cp_720k.py ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from detectron2.config import LazyCall as L
2
+ from detectron2.solver import WarmupParamScheduler
3
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
4
+
5
+ from ape.data.detection_utils import get_fed_loss_cls_weights
6
+
7
+ from ...common.data.lviscocococostuff_o365_oid_vgr_refcoco_group_by_image_panoptic_lsj1024_cp import (
8
+ dataloader,
9
+ )
10
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
11
+ model,
12
+ optimizer,
13
+ train,
14
+ )
15
+
16
+ model.model_vision.num_classes = 1256
17
+ model.model_vision.select_box_nums_for_evaluation = 300
18
+
19
+ criterion = model.model_vision.criterion[0]
20
+ del criterion.use_fed_loss
21
+ del criterion.get_fed_loss_cls_weights
22
+ del criterion.fed_loss_num_classes
23
+ model.model_vision.criterion = [criterion for _ in range(6)]
24
+ for criterion, num_classes in zip(model.model_vision.criterion, [1256, 365, 601, 200, 200, 200]):
25
+ criterion.num_classes = num_classes
26
+
27
+ dataloader.train.mapper.max_num_phrase = 100
28
+ dataloader.train.mapper.nms_thresh_phrase = 0.6
29
+
30
+ model.model_vision.criterion[0].use_fed_loss = True
31
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
32
+ dataloader.train.dataset.names[0], 0.5
33
+ )
34
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
35
+ model.model_vision.criterion[0].fed_loss_pad_type = "cat"
36
+
37
+ model.model_vision.criterion[3].weight_dict["loss_class_enc"] = 0.0
38
+ for k, v in model.model_vision.criterion[3].weight_dict.items():
39
+ if "_enc" in k:
40
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
41
+ if "_bbox" in k or "_giou" in k:
42
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
43
+
44
+ model.model_vision.criterion[4].weight_dict["loss_class_enc"] = 0.0
45
+
46
+ model.model_vision.stuff_dataset_learn_thing = False
47
+ model.model_vision.stuff_prob_thing = 0.9
48
+
49
+ model.model_vision.instance_on = True
50
+ model.model_vision.semantic_on = True
51
+ model.model_vision.panoptic_on = False
52
+
53
+ model.model_vision.neck = None
54
+
55
+ train.max_iter = 720000
56
+ train.eval_period = 720000
57
+
58
+ lr_multiplier = L(WarmupParamScheduler)(
59
+ scheduler=L(MultiStepParamScheduler)(
60
+ values=[1.0, 0.1],
61
+ milestones=[640000],
62
+ num_updates=720000,
63
+ ),
64
+ warmup_length=1000 / 720000,
65
+ warmup_method="linear",
66
+ warmup_factor=0.001,
67
+ )
68
+
69
+ dataloader.train.total_batch_size = 16
70
+ dataloader.train.total_batch_size_list = [16, 16, 16, 16, 16]
71
+
72
+ model.model_vision.dataset_prompts = ["name", "name", "name", "phrase", "phrase", "expression"]
73
+ model.model_vision.dataset_names = [
74
+ "lvis+stuffonly",
75
+ "objects365",
76
+ "openimages",
77
+ "vgregion",
78
+ "refcoco-mixed_group-by-image",
79
+ "refcoco",
80
+ ]
81
+ model.model_vision.dataset_metas = dataloader.train.dataset.names + ["refcoco-mixed"]
82
+
83
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_1080k.py ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from detectron2.config import LazyCall as L
2
+ from detectron2.solver import WarmupParamScheduler
3
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
4
+
5
+ from .ape_deta_vitl_eva02_vlf_lsj1024_cp_720k import (
6
+ dataloader,
7
+ lr_multiplier,
8
+ model,
9
+ optimizer,
10
+ train,
11
+ )
12
+
13
+ train.max_iter = 1080000
14
+ train.eval_period = 1080000
15
+
16
+ lr_multiplier = L(WarmupParamScheduler)(
17
+ scheduler=L(MultiStepParamScheduler)(
18
+ values=[1.0, 0.1],
19
+ milestones=[900000],
20
+ num_updates=1080000,
21
+ ),
22
+ warmup_length=2000 / 1080000,
23
+ warmup_method="linear",
24
+ warmup_factor=0.001,
25
+ )
26
+
27
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_180k.py ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from detectron2.config import LazyCall as L
2
+ from detectron2.solver import WarmupParamScheduler
3
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
4
+
5
+ from .ape_deta_vitl_eva02_vlf_lsj1024_cp_720k import (
6
+ dataloader,
7
+ lr_multiplier,
8
+ model,
9
+ optimizer,
10
+ train,
11
+ )
12
+
13
+ train.max_iter = 180000
14
+ train.eval_period = 180000
15
+
16
+ lr_multiplier = L(WarmupParamScheduler)(
17
+ scheduler=L(MultiStepParamScheduler)(
18
+ values=[1.0, 0.1],
19
+ milestones=[150000],
20
+ num_updates=180000,
21
+ ),
22
+ warmup_length=1000 / 180000,
23
+ warmup_method="linear",
24
+ warmup_factor=0.001,
25
+ )
26
+
27
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_720k.py ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from detectron2.config import LazyCall as L
2
+ from ape.layers import VisionLanguageFusion
3
+ from ape.modeling.ape_deta import (
4
+ DeformableDETRSegmVL,
5
+ DeformableDetrTransformerDecoderVL,
6
+ DeformableDetrTransformerEncoderVL,
7
+ DeformableDetrTransformerVL,
8
+ )
9
+
10
+ from .ape_deta_vitl_eva02_lsj1024_cp_720k import dataloader, lr_multiplier, model, optimizer, train
11
+
12
+ model.model_vision.update(
13
+ _target_=DeformableDETRSegmVL,
14
+ )
15
+ model.model_vision.transformer.update(
16
+ _target_=DeformableDetrTransformerVL,
17
+ )
18
+ model.model_vision.transformer.encoder.update(
19
+ _target_=DeformableDetrTransformerEncoderVL,
20
+ )
21
+ model.model_vision.transformer.decoder.update(
22
+ _target_=DeformableDetrTransformerDecoderVL,
23
+ )
24
+
25
+
26
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
27
+ v_dim="${....embed_dim}",
28
+ l_dim="${....embed_dim_language}",
29
+ embed_dim=2048,
30
+ num_heads=8,
31
+ dropout=0.1,
32
+ drop_path=0.0,
33
+ init_values=1.0 / 6,
34
+ stable_softmax_2d=True,
35
+ clamp_min_for_underflow=True,
36
+ clamp_max_for_overflow=True,
37
+ use_checkpoint=True,
38
+ )
39
+
40
+ model.model_vision.text_feature_bank = True
41
+ model.model_vision.text_feature_reduce_before_fusion = True
42
+ model.model_vision.text_feature_batch_repeat = True
43
+ model.model_vision.expression_cumulative_gt_class = True
44
+ model.model_vision.name_prompt_fusion_type = "zero"
45
+
46
+ train.output_dir = "output/" + __file__[:-3]
47
+ model.model_vision.vis_period = 12800
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_08x8x270k.py ADDED
@@ -0,0 +1,228 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.nn as nn
2
+
3
+ from detectron2.config import LazyCall as L
4
+ from detectron2.layers import ShapeSpec
5
+ from detectron2.solver import WarmupParamScheduler
6
+ from detrex.modeling.neck import ChannelMapper
7
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
8
+
9
+ from ape.data.detection_utils import get_fed_loss_cls_weights
10
+ from ape.layers import VisionLanguageFusion
11
+ from ape.modeling.ape_deta import (
12
+ DeformableDETRSegmVL,
13
+ DeformableDetrTransformerDecoderVL,
14
+ DeformableDetrTransformerEncoderVL,
15
+ DeformableDetrTransformerVL,
16
+ )
17
+ from ape.modeling.text import EVA02CLIP
18
+
19
+ from ...common.backbone.vitl_eva02_clip import backbone
20
+ from ...common.data.lviscocococostuff_o365_oid_vgr_sa1b_refcoco_group_by_image_gqa_phrasecut_flickr30k_panoptic_lsj1024_cp import (
21
+ dataloader,
22
+ )
23
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
24
+ model,
25
+ optimizer,
26
+ train,
27
+ )
28
+
29
+ model.model_vision.backbone = backbone
30
+
31
+ train.init_checkpoint = (
32
+ "models/QuanSun/EVA-CLIP/EVA02_CLIP_L_336_psz14to16_s6B.pt?matching_heuristics=True"
33
+ )
34
+
35
+ model.model_language = L(EVA02CLIP)(
36
+ clip_model="EVA02-CLIP-bigE-14-plus",
37
+ cache_dir="models/QuanSun/EVA-CLIP/EVA02_CLIP_E_psz14_plus_s9B.pt",
38
+ dtype="float16",
39
+ )
40
+ model.model_vision.embed_dim_language = 1024
41
+
42
+ model.model_vision.neck = L(ChannelMapper)(
43
+ input_shapes={
44
+ "p2": ShapeSpec(channels=256),
45
+ "p3": ShapeSpec(channels=256),
46
+ "p4": ShapeSpec(channels=256),
47
+ "p5": ShapeSpec(channels=256),
48
+ "p6": ShapeSpec(channels=256),
49
+ },
50
+ in_features=["p2", "p3", "p4", "p5", "p6"],
51
+ out_channels=256,
52
+ num_outs=5,
53
+ kernel_size=1,
54
+ norm_layer=L(nn.GroupNorm)(num_groups=32, num_channels=256),
55
+ )
56
+
57
+ model.model_vision.mask_in_features = ["p2"]
58
+ model.model_vision.input_shapes = {
59
+ "p2": ShapeSpec(channels=256),
60
+ "p3": ShapeSpec(channels=256),
61
+ "p4": ShapeSpec(channels=256),
62
+ "p5": ShapeSpec(channels=256),
63
+ "p6": ShapeSpec(channels=256),
64
+ }
65
+
66
+ model.model_vision.transformer.encoder.num_layers = 6
67
+ model.model_vision.transformer.decoder.num_layers = 6
68
+ model.model_vision.transformer.encoder.embed_dim = 256
69
+ model.model_vision.transformer.decoder.embed_dim = 256
70
+ model.model_vision.embed_dim = 256
71
+ model.model_vision.backbone.out_channels = 256
72
+
73
+ model.model_vision.update(
74
+ _target_=DeformableDETRSegmVL,
75
+ )
76
+ model.model_vision.transformer.update(
77
+ _target_=DeformableDetrTransformerVL,
78
+ )
79
+ model.model_vision.transformer.encoder.update(
80
+ _target_=DeformableDetrTransformerEncoderVL,
81
+ )
82
+ model.model_vision.transformer.decoder.update(
83
+ _target_=DeformableDetrTransformerDecoderVL,
84
+ )
85
+
86
+
87
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
88
+ v_dim="${....embed_dim}",
89
+ l_dim="${....embed_dim_language}",
90
+ embed_dim=2048,
91
+ num_heads=8,
92
+ dropout=0.1,
93
+ drop_path=0.0,
94
+ init_values=1.0 / 6,
95
+ stable_softmax_2d=True,
96
+ clamp_min_for_underflow=True,
97
+ clamp_max_for_overflow=True,
98
+ use_checkpoint=True,
99
+ )
100
+ model.model_vision.transformer.encoder.use_act_checkpoint = True
101
+
102
+ model.model_vision.text_feature_bank = True
103
+ model.model_vision.text_feature_reduce_before_fusion = True
104
+ model.model_vision.text_feature_batch_repeat = True
105
+ model.model_vision.expression_cumulative_gt_class = True
106
+ model.model_vision.name_prompt_fusion_type = "zero"
107
+
108
+ model.model_vision.num_classes = 1256
109
+ model.model_vision.select_box_nums_for_evaluation = 300
110
+
111
+ criterion = model.model_vision.criterion[0]
112
+ del criterion.use_fed_loss
113
+ del criterion.get_fed_loss_cls_weights
114
+ del criterion.fed_loss_num_classes
115
+ model.model_vision.criterion = [criterion for _ in range(10)]
116
+ for criterion, num_classes in zip(
117
+ model.model_vision.criterion, [1256, 365, 601, 256, 1, 256, 256, 256, 256, 256]
118
+ ):
119
+ criterion.num_classes = num_classes
120
+
121
+ dataloader.train.mapper.max_num_phrase = 128
122
+ dataloader.train.mapper.nms_thresh_phrase = 0.6
123
+
124
+ model.model_vision.criterion[0].use_fed_loss = True
125
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
126
+ dataloader.train.dataset.names[0], 0.5
127
+ )
128
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
129
+ model.model_vision.criterion[0].fed_loss_pad_type = "cat"
130
+
131
+ model.model_vision.criterion[2].use_fed_loss = True
132
+ model.model_vision.criterion[2].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
133
+ dataloader.train.dataset.names[2], 0.5
134
+ )
135
+ model.model_vision.criterion[2].fed_loss_num_classes = 50
136
+ model.model_vision.criterion[2].fed_loss_pad_type = "cat"
137
+
138
+ model.model_vision.criterion[3].weight_dict["loss_class_enc"] = 0.0
139
+ for k, v in model.model_vision.criterion[3].weight_dict.items():
140
+ if "_enc" in k:
141
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
142
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
143
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
144
+
145
+ for k, v in model.model_vision.criterion[4].weight_dict.items():
146
+ if "_class" in k and "_enc" not in k:
147
+ model.model_vision.criterion[4].weight_dict.update({k: 0.0})
148
+
149
+ model.model_vision.criterion[5].weight_dict["loss_class_enc"] = 0.0
150
+
151
+ model.model_vision.criterion[6].weight_dict["loss_class_enc"] = 0.0
152
+ for k, v in model.model_vision.criterion[6].weight_dict.items():
153
+ if "_enc" in k:
154
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
155
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
156
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
157
+
158
+ model.model_vision.criterion[7].weight_dict["loss_class_enc"] = 0.0
159
+ for k, v in model.model_vision.criterion[7].weight_dict.items():
160
+ if "_enc" in k:
161
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
162
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
163
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
164
+
165
+ model.model_vision.criterion[8].weight_dict["loss_class_enc"] = 0.0
166
+ for k, v in model.model_vision.criterion[8].weight_dict.items():
167
+ if "_enc" in k:
168
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
169
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
170
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
171
+
172
+ model.model_vision.stuff_dataset_learn_thing = False
173
+ model.model_vision.stuff_prob_thing = 0.9
174
+ model.model_vision.transformer.proposal_ambiguous = 1
175
+
176
+ model.model_vision.instance_on = True
177
+ model.model_vision.semantic_on = True
178
+ model.model_vision.panoptic_on = False
179
+
180
+ train.max_iter = 270000
181
+ train.eval_period = 270000
182
+
183
+ lr_multiplier = L(WarmupParamScheduler)(
184
+ scheduler=L(MultiStepParamScheduler)(
185
+ values=[1.0, 0.1],
186
+ milestones=[225000],
187
+ num_updates=270000,
188
+ ),
189
+ warmup_length=2000 / 270000,
190
+ warmup_method="linear",
191
+ warmup_factor=0.001,
192
+ )
193
+
194
+ dataloader.train.total_batch_size = 8
195
+ dataloader.train.total_batch_size_list = [8, 8, 8, 8, 8, 8, 8, 8, 8]
196
+ dataloader.train.num_workers = 2
197
+ train.iter_size = 8
198
+
199
+ dataloader.wait_group = 2
200
+ dataloader.wait_time = 30 * 60
201
+
202
+ model.model_vision.dataset_prompts = [
203
+ "name",
204
+ "name",
205
+ "name",
206
+ "phrase",
207
+ "name",
208
+ "phrase",
209
+ "phrase",
210
+ "phrase",
211
+ "phrase",
212
+ "expression",
213
+ ]
214
+ model.model_vision.dataset_names = [
215
+ "lvis+stuffonly",
216
+ "objects365",
217
+ "openimages",
218
+ "vgregion",
219
+ "sa1b",
220
+ "refcoco-mixed_group-by-image",
221
+ "gqa",
222
+ "phrasecut",
223
+ "flickr30k",
224
+ "refcoco",
225
+ ]
226
+ model.model_vision.dataset_metas = dataloader.train.dataset.names + ["refcoco-mixed"]
227
+
228
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_1080k.py ADDED
@@ -0,0 +1,225 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.nn as nn
2
+
3
+ from detectron2.config import LazyCall as L
4
+ from detectron2.layers import ShapeSpec
5
+ from detectron2.solver import WarmupParamScheduler
6
+ from detrex.modeling.neck import ChannelMapper
7
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
8
+
9
+ from ape.data.detection_utils import get_fed_loss_cls_weights
10
+ from ape.layers import VisionLanguageFusion
11
+ from ape.modeling.ape_deta import (
12
+ DeformableDETRSegmVL,
13
+ DeformableDetrTransformerDecoderVL,
14
+ DeformableDetrTransformerEncoderVL,
15
+ DeformableDetrTransformerVL,
16
+ )
17
+ from ape.modeling.text import EVA02CLIP
18
+
19
+ from ...common.backbone.vitl_eva02_clip import backbone
20
+ from ...common.data.lviscocococostuff_o365_oid_vgr_sa1b_refcoco_group_by_image_gqa_phrasecut_flickr30k_panoptic_lsj1024_cp import (
21
+ dataloader,
22
+ )
23
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
24
+ model,
25
+ optimizer,
26
+ train,
27
+ )
28
+
29
+ model.model_vision.backbone = backbone
30
+
31
+ train.init_checkpoint = (
32
+ "models/QuanSun/EVA-CLIP/EVA02_CLIP_L_336_psz14to16_s6B.pt?matching_heuristics=True"
33
+ )
34
+
35
+ model.model_language = L(EVA02CLIP)(
36
+ clip_model="EVA02-CLIP-bigE-14-plus",
37
+ cache_dir="models/QuanSun/EVA-CLIP/EVA02_CLIP_E_psz14_plus_s9B.pt",
38
+ dtype="float16",
39
+ )
40
+ model.model_vision.embed_dim_language = 1024
41
+
42
+ model.model_vision.neck = L(ChannelMapper)(
43
+ input_shapes={
44
+ "p2": ShapeSpec(channels=256),
45
+ "p3": ShapeSpec(channels=256),
46
+ "p4": ShapeSpec(channels=256),
47
+ "p5": ShapeSpec(channels=256),
48
+ "p6": ShapeSpec(channels=256),
49
+ },
50
+ in_features=["p2", "p3", "p4", "p5", "p6"],
51
+ out_channels=256,
52
+ num_outs=5,
53
+ kernel_size=1,
54
+ norm_layer=L(nn.GroupNorm)(num_groups=32, num_channels=256),
55
+ )
56
+
57
+ model.model_vision.mask_in_features = ["p2"]
58
+ model.model_vision.input_shapes = {
59
+ "p2": ShapeSpec(channels=256),
60
+ "p3": ShapeSpec(channels=256),
61
+ "p4": ShapeSpec(channels=256),
62
+ "p5": ShapeSpec(channels=256),
63
+ "p6": ShapeSpec(channels=256),
64
+ }
65
+
66
+ model.model_vision.transformer.encoder.num_layers = 6
67
+ model.model_vision.transformer.decoder.num_layers = 6
68
+ model.model_vision.transformer.encoder.embed_dim = 256
69
+ model.model_vision.transformer.decoder.embed_dim = 256
70
+ model.model_vision.embed_dim = 256
71
+ model.model_vision.backbone.out_channels = 256
72
+
73
+ model.model_vision.update(
74
+ _target_=DeformableDETRSegmVL,
75
+ )
76
+ model.model_vision.transformer.update(
77
+ _target_=DeformableDetrTransformerVL,
78
+ )
79
+ model.model_vision.transformer.encoder.update(
80
+ _target_=DeformableDetrTransformerEncoderVL,
81
+ )
82
+ model.model_vision.transformer.decoder.update(
83
+ _target_=DeformableDetrTransformerDecoderVL,
84
+ )
85
+
86
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
87
+ v_dim="${....embed_dim}",
88
+ l_dim="${....embed_dim_language}",
89
+ embed_dim=2048,
90
+ num_heads=8,
91
+ dropout=0.1,
92
+ drop_path=0.0,
93
+ init_values=1.0 / 6,
94
+ stable_softmax_2d=True,
95
+ clamp_min_for_underflow=True,
96
+ clamp_max_for_overflow=True,
97
+ use_checkpoint=True,
98
+ )
99
+ model.model_vision.transformer.encoder.use_act_checkpoint = True
100
+
101
+ model.model_vision.text_feature_bank = True
102
+ model.model_vision.text_feature_reduce_before_fusion = True
103
+ model.model_vision.text_feature_batch_repeat = True
104
+ model.model_vision.expression_cumulative_gt_class = True
105
+ model.model_vision.name_prompt_fusion_type = "zero"
106
+
107
+ model.model_vision.num_classes = 1256
108
+ model.model_vision.select_box_nums_for_evaluation = 300
109
+
110
+ criterion = model.model_vision.criterion[0]
111
+ del criterion.use_fed_loss
112
+ del criterion.get_fed_loss_cls_weights
113
+ del criterion.fed_loss_num_classes
114
+ model.model_vision.criterion = [criterion for _ in range(10)]
115
+ for criterion, num_classes in zip(
116
+ model.model_vision.criterion, [1256, 365, 601, 200, 1, 200, 200, 200, 200, 200]
117
+ ):
118
+ criterion.num_classes = num_classes
119
+
120
+ dataloader.train.mapper.max_num_phrase = 100
121
+ dataloader.train.mapper.nms_thresh_phrase = 0.6
122
+
123
+ model.model_vision.criterion[0].use_fed_loss = True
124
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
125
+ dataloader.train.dataset.names[0], 0.5
126
+ )
127
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
128
+ model.model_vision.criterion[0].fed_loss_pad_type = "cat"
129
+
130
+ model.model_vision.criterion[2].use_fed_loss = True
131
+ model.model_vision.criterion[2].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
132
+ dataloader.train.dataset.names[2], 0.5
133
+ )
134
+ model.model_vision.criterion[2].fed_loss_num_classes = 50
135
+ model.model_vision.criterion[2].fed_loss_pad_type = "cat"
136
+
137
+ model.model_vision.criterion[3].weight_dict["loss_class_enc"] = 0.0
138
+ for k, v in model.model_vision.criterion[3].weight_dict.items():
139
+ if "_enc" in k:
140
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
141
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
142
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
143
+
144
+ for k, v in model.model_vision.criterion[4].weight_dict.items():
145
+ if "_class" in k and "_enc" not in k:
146
+ model.model_vision.criterion[4].weight_dict.update({k: 0.0})
147
+
148
+ model.model_vision.criterion[5].weight_dict["loss_class_enc"] = 0.0
149
+
150
+ model.model_vision.criterion[6].weight_dict["loss_class_enc"] = 0.0
151
+ for k, v in model.model_vision.criterion[6].weight_dict.items():
152
+ if "_enc" in k:
153
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
154
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
155
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
156
+
157
+ model.model_vision.criterion[7].weight_dict["loss_class_enc"] = 0.0
158
+ for k, v in model.model_vision.criterion[7].weight_dict.items():
159
+ if "_enc" in k:
160
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
161
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
162
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
163
+
164
+ model.model_vision.criterion[8].weight_dict["loss_class_enc"] = 0.0
165
+ for k, v in model.model_vision.criterion[8].weight_dict.items():
166
+ if "_enc" in k:
167
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
168
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
169
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
170
+
171
+ model.model_vision.stuff_dataset_learn_thing = False
172
+ model.model_vision.stuff_prob_thing = 0.9
173
+ model.model_vision.transformer.proposal_ambiguous = 1
174
+
175
+ model.model_vision.instance_on = True
176
+ model.model_vision.semantic_on = True
177
+ model.model_vision.panoptic_on = False
178
+
179
+ train.max_iter = 1080000
180
+ train.eval_period = 1080000
181
+
182
+ lr_multiplier = L(WarmupParamScheduler)(
183
+ scheduler=L(MultiStepParamScheduler)(
184
+ values=[1.0, 0.1],
185
+ milestones=[900000],
186
+ num_updates=1080000,
187
+ ),
188
+ warmup_length=2000 / 270000,
189
+ warmup_method="linear",
190
+ warmup_factor=0.001,
191
+ )
192
+
193
+ dataloader.train.total_batch_size = 16
194
+ dataloader.train.total_batch_size_list = [16, 16, 16, 16, 16, 16, 16, 16, 16]
195
+ dataloader.train.num_workers = 4
196
+
197
+
198
+ model.model_vision.dataset_prompts = [
199
+ "name",
200
+ "name",
201
+ "name",
202
+ "phrase",
203
+ "name",
204
+ "phrase",
205
+ "phrase",
206
+ "phrase",
207
+ "phrase",
208
+ "expression",
209
+ ]
210
+ model.model_vision.dataset_names = [
211
+ "lvis+stuffonly",
212
+ "objects365",
213
+ "openimages",
214
+ "vgregion",
215
+ "sa1b",
216
+ "refcoco-mixed_group-by-image",
217
+ "gqa",
218
+ "phrasecut",
219
+ "flickr30k",
220
+ "refcoco",
221
+ ]
222
+ model.model_vision.dataset_metas = dataloader.train.dataset.names + ["refcoco-mixed"]
223
+
224
+ train.output_dir = "output/" + __file__[:-3]
225
+ model.model_vision.vis_period = 5120
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4_1080k.py ADDED
@@ -0,0 +1,227 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.nn as nn
2
+
3
+ from detectron2.config import LazyCall as L
4
+ from detectron2.layers import ShapeSpec
5
+ from detectron2.solver import WarmupParamScheduler
6
+ from detrex.modeling.neck import ChannelMapper
7
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
8
+
9
+ from ape.data.detection_utils import get_fed_loss_cls_weights
10
+ from ape.layers import VisionLanguageFusion
11
+ from ape.modeling.ape_deta import (
12
+ DeformableDETRSegmVL,
13
+ DeformableDetrTransformerDecoderVL,
14
+ DeformableDetrTransformerEncoderVL,
15
+ DeformableDetrTransformerVL,
16
+ )
17
+ from ape.modeling.text import EVA02CLIP
18
+
19
+ from ...common.backbone.vitl_eva02_clip import backbone
20
+ from ...common.data.lviscocococostuff_o365_oid_vgr_sa1b_refcoco_group_by_image_gqa_phrasecut_flickr30k_panoptic_lsj1024_cp import (
21
+ dataloader,
22
+ )
23
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
24
+ model,
25
+ optimizer,
26
+ train,
27
+ )
28
+
29
+ model.model_vision.backbone = backbone
30
+
31
+ train.init_checkpoint = (
32
+ "models/QuanSun/EVA-CLIP/EVA02_CLIP_L_336_psz14to16_s6B.pt?matching_heuristics=True"
33
+ )
34
+
35
+ model.model_language = L(EVA02CLIP)(
36
+ clip_model="EVA02-CLIP-bigE-14-plus",
37
+ cache_dir="models/QuanSun/EVA-CLIP/EVA02_CLIP_E_psz14_plus_s9B.pt",
38
+ dtype="float16",
39
+ )
40
+ model.model_vision.embed_dim_language = 1024
41
+
42
+ model.model_vision.neck = L(ChannelMapper)(
43
+ input_shapes={
44
+ "p2": ShapeSpec(channels=256),
45
+ "p3": ShapeSpec(channels=256),
46
+ "p4": ShapeSpec(channels=256),
47
+ "p5": ShapeSpec(channels=256),
48
+ "p6": ShapeSpec(channels=256),
49
+ },
50
+ in_features=["p2", "p3", "p4", "p5", "p6"],
51
+ out_channels=256,
52
+ num_outs=5,
53
+ kernel_size=1,
54
+ norm_layer=L(nn.GroupNorm)(num_groups=32, num_channels=256),
55
+ )
56
+
57
+ model.model_vision.mask_in_features = ["p2"]
58
+ model.model_vision.input_shapes = {
59
+ "p2": ShapeSpec(channels=256),
60
+ "p3": ShapeSpec(channels=256),
61
+ "p4": ShapeSpec(channels=256),
62
+ "p5": ShapeSpec(channels=256),
63
+ "p6": ShapeSpec(channels=256),
64
+ }
65
+
66
+ model.model_vision.transformer.encoder.num_layers = 6
67
+ model.model_vision.transformer.decoder.num_layers = 6
68
+ model.model_vision.transformer.encoder.embed_dim = 256
69
+ model.model_vision.transformer.decoder.embed_dim = 256
70
+ model.model_vision.embed_dim = 256
71
+ model.model_vision.backbone.out_channels = 256
72
+
73
+ model.model_vision.update(
74
+ _target_=DeformableDETRSegmVL,
75
+ )
76
+ model.model_vision.transformer.update(
77
+ _target_=DeformableDetrTransformerVL,
78
+ )
79
+ model.model_vision.transformer.encoder.update(
80
+ _target_=DeformableDetrTransformerEncoderVL,
81
+ )
82
+ model.model_vision.transformer.decoder.update(
83
+ _target_=DeformableDetrTransformerDecoderVL,
84
+ )
85
+
86
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
87
+ v_dim="${....embed_dim}",
88
+ l_dim="${....embed_dim_language}",
89
+ embed_dim=2048,
90
+ num_heads=8,
91
+ dropout=0.1,
92
+ drop_path=0.0,
93
+ init_values=1.0 / 6,
94
+ stable_softmax_2d=True,
95
+ clamp_min_for_underflow=True,
96
+ clamp_max_for_overflow=True,
97
+ use_checkpoint=True,
98
+ )
99
+ model.model_vision.transformer.encoder.use_act_checkpoint = True
100
+
101
+ model.model_vision.text_feature_bank = True
102
+ model.model_vision.text_feature_reduce_before_fusion = True
103
+ model.model_vision.text_feature_batch_repeat = True
104
+ model.model_vision.expression_cumulative_gt_class = True
105
+ model.model_vision.name_prompt_fusion_type = "zero"
106
+
107
+ model.model_vision.num_classes = 1256
108
+ model.model_vision.select_box_nums_for_evaluation = 300
109
+
110
+ criterion = model.model_vision.criterion[0]
111
+ del criterion.use_fed_loss
112
+ del criterion.get_fed_loss_cls_weights
113
+ del criterion.fed_loss_num_classes
114
+ model.model_vision.criterion = [criterion for _ in range(10)]
115
+ for criterion, num_classes in zip(
116
+ model.model_vision.criterion, [1256, 365, 601, 256, 1, 256, 256, 256, 256, 256]
117
+ ):
118
+ criterion.num_classes = num_classes
119
+
120
+ dataloader.train.mapper.max_num_phrase = 128
121
+ dataloader.train.mapper.nms_thresh_phrase = 0.6
122
+
123
+ model.model_vision.criterion[0].use_fed_loss = True
124
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
125
+ dataloader.train.dataset.names[0], 0.5
126
+ )
127
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
128
+ model.model_vision.criterion[0].fed_loss_pad_type = "cat"
129
+
130
+ model.model_vision.criterion[2].use_fed_loss = True
131
+ model.model_vision.criterion[2].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
132
+ dataloader.train.dataset.names[2], 0.5
133
+ )
134
+ model.model_vision.criterion[2].fed_loss_num_classes = 50
135
+ model.model_vision.criterion[2].fed_loss_pad_type = "cat"
136
+
137
+ model.model_vision.criterion[3].weight_dict["loss_class_enc"] = 0.0
138
+ for k, v in model.model_vision.criterion[3].weight_dict.items():
139
+ if "_enc" in k:
140
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
141
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
142
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
143
+
144
+ for k, v in model.model_vision.criterion[4].weight_dict.items():
145
+ if "_class" in k and "_enc" not in k:
146
+ model.model_vision.criterion[4].weight_dict.update({k: 0.0})
147
+
148
+ model.model_vision.criterion[5].weight_dict["loss_class_enc"] = 0.0
149
+
150
+ model.model_vision.criterion[6].weight_dict["loss_class_enc"] = 0.0
151
+ for k, v in model.model_vision.criterion[6].weight_dict.items():
152
+ if "_enc" in k:
153
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
154
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
155
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
156
+
157
+ model.model_vision.criterion[7].weight_dict["loss_class_enc"] = 0.0
158
+ for k, v in model.model_vision.criterion[7].weight_dict.items():
159
+ if "_enc" in k:
160
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
161
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
162
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
163
+
164
+ model.model_vision.criterion[8].weight_dict["loss_class_enc"] = 0.0
165
+ for k, v in model.model_vision.criterion[8].weight_dict.items():
166
+ if "_enc" in k:
167
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
168
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
169
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
170
+
171
+ model.model_vision.stuff_dataset_learn_thing = False
172
+ model.model_vision.stuff_prob_thing = 0.9
173
+ model.model_vision.transformer.proposal_ambiguous = 1
174
+
175
+ model.model_vision.instance_on = True
176
+ model.model_vision.semantic_on = True
177
+ model.model_vision.panoptic_on = False
178
+
179
+ train.max_iter = 1080000
180
+ train.eval_period = 1080000
181
+
182
+ lr_multiplier = L(WarmupParamScheduler)(
183
+ scheduler=L(MultiStepParamScheduler)(
184
+ values=[1.0, 0.1],
185
+ milestones=[900000],
186
+ num_updates=1080000,
187
+ ),
188
+ warmup_length=2000 / 270000,
189
+ warmup_method="linear",
190
+ warmup_factor=0.001,
191
+ )
192
+
193
+ dataloader.train.total_batch_size = 16
194
+ dataloader.train.total_batch_size_list = [16, 16, 16, 16, 16, 16, 16, 16, 16]
195
+ dataloader.train.num_workers = 0
196
+ train.iter_size = 4
197
+ train.iter_loop = False
198
+
199
+
200
+ model.model_vision.dataset_prompts = [
201
+ "name",
202
+ "name",
203
+ "name",
204
+ "phrase",
205
+ "name",
206
+ "phrase",
207
+ "phrase",
208
+ "phrase",
209
+ "phrase",
210
+ "expression",
211
+ ]
212
+ model.model_vision.dataset_names = [
213
+ "lvis+stuffonly",
214
+ "objects365",
215
+ "openimages",
216
+ "vgregion",
217
+ "sa1b",
218
+ "refcoco-mixed_group-by-image",
219
+ "gqa",
220
+ "phrasecut",
221
+ "flickr30k",
222
+ "refcoco",
223
+ ]
224
+ model.model_vision.dataset_metas = dataloader.train.dataset.names + ["refcoco-mixed"]
225
+
226
+ train.output_dir = "output/" + __file__[:-3]
227
+ model.model_vision.vis_period = 5120
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4_1080k_mdl.py ADDED
@@ -0,0 +1,230 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.nn as nn
2
+
3
+ from detectron2.config import LazyCall as L
4
+ from detectron2.layers import ShapeSpec
5
+ from detectron2.solver import WarmupParamScheduler
6
+ from detrex.modeling.neck import ChannelMapper
7
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
8
+
9
+ from ape.data.detection_utils import get_fed_loss_cls_weights
10
+ from ape.layers import VisionLanguageFusion
11
+ from ape.modeling.ape_deta import (
12
+ DeformableDETRSegmVL,
13
+ DeformableDetrTransformerDecoderVL,
14
+ DeformableDetrTransformerEncoderVL,
15
+ DeformableDetrTransformerVL,
16
+ )
17
+ from ape.modeling.text import EVA02CLIP
18
+
19
+ from ...common.backbone.vitl_eva02_clip import backbone
20
+ from ...common.data.lviscocococostuff_o365_oid_vgr_sa1b_refcoco_group_by_image_gqa_phrasecut_flickr30k_panoptic_lsj1024_cp_mdl import (
21
+ dataloader,
22
+ )
23
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
24
+ model,
25
+ optimizer,
26
+ train,
27
+ )
28
+
29
+ model.model_vision.backbone = backbone
30
+
31
+ train.init_checkpoint = (
32
+ "models/QuanSun/EVA-CLIP/EVA02_CLIP_L_336_psz14to16_s6B.pt?matching_heuristics=True"
33
+ )
34
+
35
+ model.model_language = L(EVA02CLIP)(
36
+ clip_model="EVA02-CLIP-bigE-14-plus",
37
+ cache_dir="models/QuanSun/EVA-CLIP/EVA02_CLIP_E_psz14_plus_s9B.pt",
38
+ dtype="float16",
39
+ )
40
+ model.model_vision.embed_dim_language = 1024
41
+
42
+ model.model_vision.neck = L(ChannelMapper)(
43
+ input_shapes={
44
+ "p2": ShapeSpec(channels=256),
45
+ "p3": ShapeSpec(channels=256),
46
+ "p4": ShapeSpec(channels=256),
47
+ "p5": ShapeSpec(channels=256),
48
+ "p6": ShapeSpec(channels=256),
49
+ },
50
+ in_features=["p2", "p3", "p4", "p5", "p6"],
51
+ out_channels=256,
52
+ num_outs=5,
53
+ kernel_size=1,
54
+ norm_layer=L(nn.GroupNorm)(num_groups=32, num_channels=256),
55
+ )
56
+
57
+ model.model_vision.mask_in_features = ["p2"]
58
+ model.model_vision.input_shapes = {
59
+ "p2": ShapeSpec(channels=256),
60
+ "p3": ShapeSpec(channels=256),
61
+ "p4": ShapeSpec(channels=256),
62
+ "p5": ShapeSpec(channels=256),
63
+ "p6": ShapeSpec(channels=256),
64
+ }
65
+
66
+ model.model_vision.transformer.encoder.num_layers = 6
67
+ model.model_vision.transformer.decoder.num_layers = 6
68
+ model.model_vision.transformer.encoder.embed_dim = 256
69
+ model.model_vision.transformer.decoder.embed_dim = 256
70
+ model.model_vision.embed_dim = 256
71
+ model.model_vision.backbone.out_channels = 256
72
+
73
+ model.model_vision.update(
74
+ _target_=DeformableDETRSegmVL,
75
+ )
76
+ model.model_vision.transformer.update(
77
+ _target_=DeformableDetrTransformerVL,
78
+ )
79
+ model.model_vision.transformer.encoder.update(
80
+ _target_=DeformableDetrTransformerEncoderVL,
81
+ )
82
+ model.model_vision.transformer.decoder.update(
83
+ _target_=DeformableDetrTransformerDecoderVL,
84
+ )
85
+
86
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
87
+ v_dim="${....embed_dim}",
88
+ l_dim="${....embed_dim_language}",
89
+ embed_dim=2048,
90
+ num_heads=8,
91
+ dropout=0.1,
92
+ drop_path=0.0,
93
+ init_values=1.0 / 6,
94
+ stable_softmax_2d=True,
95
+ clamp_min_for_underflow=True,
96
+ clamp_max_for_overflow=True,
97
+ use_checkpoint=True,
98
+ )
99
+ model.model_vision.transformer.encoder.use_act_checkpoint = True
100
+
101
+ model.model_vision.text_feature_bank = True
102
+ model.model_vision.text_feature_reduce_before_fusion = True
103
+ model.model_vision.text_feature_batch_repeat = True
104
+ model.model_vision.expression_cumulative_gt_class = True
105
+ model.model_vision.name_prompt_fusion_type = "zero"
106
+
107
+ model.model_vision.num_classes = 1256
108
+ model.model_vision.select_box_nums_for_evaluation = 300
109
+
110
+ criterion = model.model_vision.criterion[0]
111
+ del criterion.use_fed_loss
112
+ del criterion.get_fed_loss_cls_weights
113
+ del criterion.fed_loss_num_classes
114
+ model.model_vision.criterion = [criterion for _ in range(10)]
115
+ for criterion, num_classes in zip(
116
+ model.model_vision.criterion, [1256, 365, 601, 256, 1, 256, 256, 256, 256, 256]
117
+ ):
118
+ criterion.num_classes = num_classes
119
+
120
+ model.model_vision.criterion[0].use_fed_loss = True
121
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
122
+ dataloader.train[0].dataset.names, 0.5
123
+ )
124
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
125
+ model.model_vision.criterion[0].fed_loss_pad_type = "cat"
126
+
127
+ model.model_vision.criterion[2].use_fed_loss = True
128
+ model.model_vision.criterion[2].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
129
+ dataloader.train[2].dataset.names, 0.5
130
+ )
131
+ model.model_vision.criterion[2].fed_loss_num_classes = 50
132
+ model.model_vision.criterion[2].fed_loss_pad_type = "cat"
133
+
134
+ model.model_vision.criterion[3].weight_dict["loss_class_enc"] = 0.0
135
+ for k, v in model.model_vision.criterion[3].weight_dict.items():
136
+ if "_enc" in k:
137
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
138
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
139
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
140
+
141
+ for k, v in model.model_vision.criterion[4].weight_dict.items():
142
+ if "_class" in k and "_enc" not in k:
143
+ model.model_vision.criterion[4].weight_dict.update({k: 0.0})
144
+
145
+ model.model_vision.criterion[5].weight_dict["loss_class_enc"] = 0.0
146
+
147
+ model.model_vision.criterion[6].weight_dict["loss_class_enc"] = 0.0
148
+ for k, v in model.model_vision.criterion[6].weight_dict.items():
149
+ if "_enc" in k:
150
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
151
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
152
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
153
+
154
+ model.model_vision.criterion[7].weight_dict["loss_class_enc"] = 0.0
155
+ for k, v in model.model_vision.criterion[7].weight_dict.items():
156
+ if "_enc" in k:
157
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
158
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
159
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
160
+
161
+ model.model_vision.criterion[8].weight_dict["loss_class_enc"] = 0.0
162
+ for k, v in model.model_vision.criterion[8].weight_dict.items():
163
+ if "_enc" in k:
164
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
165
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
166
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
167
+
168
+ model.model_vision.stuff_dataset_learn_thing = False
169
+ model.model_vision.stuff_prob_thing = 0.9
170
+ model.model_vision.transformer.proposal_ambiguous = 1
171
+
172
+ model.model_vision.instance_on = True
173
+ model.model_vision.semantic_on = True
174
+ model.model_vision.panoptic_on = False
175
+
176
+ train.max_iter = 1080000
177
+ train.eval_period = 1080000
178
+
179
+ lr_multiplier = L(WarmupParamScheduler)(
180
+ scheduler=L(MultiStepParamScheduler)(
181
+ values=[1.0, 0.1],
182
+ milestones=[900000],
183
+ num_updates=1080000,
184
+ ),
185
+ warmup_length=2000 / 270000,
186
+ warmup_method="linear",
187
+ warmup_factor=0.001,
188
+ )
189
+
190
+ for i in range(len(dataloader.train)):
191
+ dataloader.train[i].mapper.max_num_phrase = 128
192
+ dataloader.train[i].mapper.nms_thresh_phrase = 0.6
193
+ dataloader.train[i].total_batch_size = 16
194
+ dataloader.train[i].total_batch_size_list = [16]
195
+ dataloader.train[i].num_workers = 2
196
+
197
+ train.iter_size = 4
198
+ train.iter_loop = False
199
+ train.dataset_ratio = [1, 1, 1, 1, 1, 0.1, 0.1, 0.1, 0.1]
200
+
201
+ model.model_vision.dataset_prompts = [
202
+ "name",
203
+ "name",
204
+ "name",
205
+ "phrase",
206
+ "name",
207
+ "phrase",
208
+ "phrase",
209
+ "phrase",
210
+ "phrase",
211
+ "expression",
212
+ ]
213
+ model.model_vision.dataset_names = [
214
+ "lvis+stuffonly",
215
+ "objects365",
216
+ "openimages",
217
+ "vgregion",
218
+ "sa1b",
219
+ "refcoco-mixed_group-by-image",
220
+ "gqa",
221
+ "phrasecut",
222
+ "flickr30k",
223
+ "refcoco",
224
+ ]
225
+ model.model_vision.dataset_metas = [xx for x in dataloader.train for xx in x.dataset.names] + [
226
+ "refcoco-mixed"
227
+ ]
228
+
229
+ train.output_dir = "output/" + __file__[:-3]
230
+ model.model_vision.vis_period = 5120
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4_1080k_mdl_llama2.py ADDED
@@ -0,0 +1,235 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.nn as nn
2
+
3
+ from detectron2.config import LazyCall as L
4
+ from detectron2.layers import ShapeSpec
5
+ from detectron2.solver import WarmupParamScheduler
6
+ from detrex.modeling.neck import ChannelMapper
7
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
8
+
9
+ from ape.data.detection_utils import get_fed_loss_cls_weights
10
+ from ape.layers import VisionLanguageFusion
11
+ from ape.modeling.ape_deta import (
12
+ DeformableDETRSegmVL,
13
+ DeformableDetrTransformerDecoderVL,
14
+ DeformableDetrTransformerEncoderVL,
15
+ DeformableDetrTransformerVL,
16
+ )
17
+ from ape.modeling.text import Llama2
18
+
19
+ from ...common.backbone.vitl_eva02_clip import backbone
20
+ from ...common.data.lviscocococostuff_o365_oid_vgr_sa1b_refcoco_group_by_image_gqa_phrasecut_flickr30k_panoptic_lsj1024_cp_mdl import (
21
+ dataloader,
22
+ )
23
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
24
+ model,
25
+ optimizer,
26
+ train,
27
+ )
28
+
29
+ model.model_vision.backbone = backbone
30
+
31
+ train.init_checkpoint = (
32
+ "models/QuanSun/EVA-CLIP/EVA02_CLIP_L_336_psz14to16_s6B.pt?matching_heuristics=True"
33
+ )
34
+
35
+ model.model_language = L(Llama2)(
36
+ pretrained_model_name_or_path="models/meta-llama/Llama-2-7b-hf/",
37
+ dtype="float32",
38
+ vision_port="decoder",
39
+ eval_only=True,
40
+ load_in_4bit=True,
41
+ load_in_8bit=False,
42
+ )
43
+ model.model_vision.embed_dim_language = 4096
44
+ model.model_vision.text_feature_reduce_type = "average"
45
+
46
+ model.model_vision.neck = L(ChannelMapper)(
47
+ input_shapes={
48
+ "p2": ShapeSpec(channels=256),
49
+ "p3": ShapeSpec(channels=256),
50
+ "p4": ShapeSpec(channels=256),
51
+ "p5": ShapeSpec(channels=256),
52
+ "p6": ShapeSpec(channels=256),
53
+ },
54
+ in_features=["p2", "p3", "p4", "p5", "p6"],
55
+ out_channels=256,
56
+ num_outs=5,
57
+ kernel_size=1,
58
+ norm_layer=L(nn.GroupNorm)(num_groups=32, num_channels=256),
59
+ )
60
+
61
+ model.model_vision.mask_in_features = ["p2"]
62
+ model.model_vision.input_shapes = {
63
+ "p2": ShapeSpec(channels=256),
64
+ "p3": ShapeSpec(channels=256),
65
+ "p4": ShapeSpec(channels=256),
66
+ "p5": ShapeSpec(channels=256),
67
+ "p6": ShapeSpec(channels=256),
68
+ }
69
+
70
+ model.model_vision.transformer.encoder.num_layers = 6
71
+ model.model_vision.transformer.decoder.num_layers = 6
72
+ model.model_vision.transformer.encoder.embed_dim = 256
73
+ model.model_vision.transformer.decoder.embed_dim = 256
74
+ model.model_vision.embed_dim = 256
75
+ model.model_vision.backbone.out_channels = 256
76
+
77
+ model.model_vision.update(
78
+ _target_=DeformableDETRSegmVL,
79
+ )
80
+ model.model_vision.transformer.update(
81
+ _target_=DeformableDetrTransformerVL,
82
+ )
83
+ model.model_vision.transformer.encoder.update(
84
+ _target_=DeformableDetrTransformerEncoderVL,
85
+ )
86
+ model.model_vision.transformer.decoder.update(
87
+ _target_=DeformableDetrTransformerDecoderVL,
88
+ )
89
+
90
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
91
+ v_dim="${....embed_dim}",
92
+ l_dim="${....embed_dim_language}",
93
+ embed_dim=2048,
94
+ num_heads=8,
95
+ dropout=0.1,
96
+ drop_path=0.0,
97
+ init_values=1.0 / 6,
98
+ stable_softmax_2d=True,
99
+ clamp_min_for_underflow=True,
100
+ clamp_max_for_overflow=True,
101
+ use_checkpoint=True,
102
+ )
103
+ model.model_vision.transformer.encoder.use_act_checkpoint = True
104
+ model.model_vision.transformer.decoder.use_act_checkpoint = True
105
+
106
+ model.model_vision.text_feature_bank = True
107
+ model.model_vision.text_feature_reduce_before_fusion = True
108
+ model.model_vision.text_feature_batch_repeat = True
109
+ model.model_vision.expression_cumulative_gt_class = True
110
+ model.model_vision.name_prompt_fusion_type = "zero"
111
+
112
+ model.model_vision.num_classes = 1256
113
+ model.model_vision.select_box_nums_for_evaluation = 300
114
+
115
+ criterion = model.model_vision.criterion[0]
116
+ del criterion.use_fed_loss
117
+ del criterion.get_fed_loss_cls_weights
118
+ del criterion.fed_loss_num_classes
119
+ model.model_vision.criterion = [criterion for _ in range(10)]
120
+ for criterion, num_classes in zip(
121
+ model.model_vision.criterion, [1256, 365, 601, 256, 1, 256, 256, 256, 256, 256]
122
+ ):
123
+ criterion.num_classes = num_classes
124
+
125
+ model.model_vision.criterion[0].use_fed_loss = True
126
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
127
+ dataloader.train[0].dataset.names, 0.5
128
+ )
129
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
130
+ model.model_vision.criterion[0].fed_loss_pad_type = "cat"
131
+
132
+ model.model_vision.criterion[2].use_fed_loss = True
133
+ model.model_vision.criterion[2].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
134
+ dataloader.train[2].dataset.names, 0.5
135
+ )
136
+ model.model_vision.criterion[2].fed_loss_num_classes = 50
137
+ model.model_vision.criterion[2].fed_loss_pad_type = "cat"
138
+
139
+ model.model_vision.criterion[3].weight_dict["loss_class_enc"] = 0.0
140
+ for k, v in model.model_vision.criterion[3].weight_dict.items():
141
+ if "_enc" in k:
142
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
143
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
144
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
145
+
146
+ for k, v in model.model_vision.criterion[4].weight_dict.items():
147
+ if "_class" in k and "_enc" not in k:
148
+ model.model_vision.criterion[4].weight_dict.update({k: 0.0})
149
+
150
+ model.model_vision.criterion[5].weight_dict["loss_class_enc"] = 0.0
151
+
152
+ model.model_vision.criterion[6].weight_dict["loss_class_enc"] = 0.0
153
+ for k, v in model.model_vision.criterion[6].weight_dict.items():
154
+ if "_enc" in k:
155
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
156
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
157
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
158
+
159
+ model.model_vision.criterion[7].weight_dict["loss_class_enc"] = 0.0
160
+ for k, v in model.model_vision.criterion[7].weight_dict.items():
161
+ if "_enc" in k:
162
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
163
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
164
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
165
+
166
+ model.model_vision.criterion[8].weight_dict["loss_class_enc"] = 0.0
167
+ for k, v in model.model_vision.criterion[8].weight_dict.items():
168
+ if "_enc" in k:
169
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
170
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
171
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
172
+
173
+ model.model_vision.stuff_dataset_learn_thing = False
174
+ model.model_vision.stuff_prob_thing = 0.9
175
+ model.model_vision.transformer.proposal_ambiguous = 1
176
+
177
+ model.model_vision.instance_on = True
178
+ model.model_vision.semantic_on = True
179
+ model.model_vision.panoptic_on = False
180
+
181
+ train.max_iter = 1080000
182
+ train.eval_period = 1080000
183
+
184
+ lr_multiplier = L(WarmupParamScheduler)(
185
+ scheduler=L(MultiStepParamScheduler)(
186
+ values=[1.0, 0.1],
187
+ milestones=[900000],
188
+ num_updates=1080000,
189
+ ),
190
+ warmup_length=2000 / 270000,
191
+ warmup_method="linear",
192
+ warmup_factor=0.001,
193
+ )
194
+
195
+ for i in range(len(dataloader.train)):
196
+ dataloader.train[i].mapper.max_num_phrase = 128
197
+ dataloader.train[i].mapper.nms_thresh_phrase = 0.6
198
+ dataloader.train[i].total_batch_size = 16
199
+ dataloader.train[i].total_batch_size_list = [16]
200
+ dataloader.train[i].num_workers = 2
201
+
202
+ train.iter_size = 4
203
+ train.iter_loop = False
204
+ train.dataset_ratio = [1, 1, 1, 1, 1, 0.1, 0.1, 0.1, 0.1]
205
+
206
+ model.model_vision.dataset_prompts = [
207
+ "name",
208
+ "name",
209
+ "name",
210
+ "phrase",
211
+ "name",
212
+ "phrase",
213
+ "phrase",
214
+ "phrase",
215
+ "phrase",
216
+ "expression",
217
+ ]
218
+ model.model_vision.dataset_names = [
219
+ "lvis+stuffonly",
220
+ "objects365",
221
+ "openimages",
222
+ "vgregion",
223
+ "sa1b",
224
+ "refcoco-mixed_group-by-image",
225
+ "gqa",
226
+ "phrasecut",
227
+ "flickr30k",
228
+ "refcoco",
229
+ ]
230
+ model.model_vision.dataset_metas = [xx for x in dataloader.train for xx in x.dataset.names] + [
231
+ "refcoco-mixed"
232
+ ]
233
+
234
+ train.output_dir = "output/" + __file__[:-3]
235
+ model.model_vision.vis_period = 5120
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4x270k.py ADDED
@@ -0,0 +1,227 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.nn as nn
2
+
3
+ from detectron2.config import LazyCall as L
4
+ from detectron2.layers import ShapeSpec
5
+ from detectron2.solver import WarmupParamScheduler
6
+ from detrex.modeling.neck import ChannelMapper
7
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
8
+
9
+ from ape.data.detection_utils import get_fed_loss_cls_weights
10
+ from ape.layers import VisionLanguageFusion
11
+ from ape.modeling.ape_deta import (
12
+ DeformableDETRSegmVL,
13
+ DeformableDetrTransformerDecoderVL,
14
+ DeformableDetrTransformerEncoderVL,
15
+ DeformableDetrTransformerVL,
16
+ )
17
+ from ape.modeling.text import EVA02CLIP
18
+
19
+ from ...common.backbone.vitl_eva02_clip import backbone
20
+ from ...common.data.lviscocococostuff_o365_oid_vgr_sa1b_refcoco_group_by_image_gqa_phrasecut_flickr30k_panoptic_lsj1024_cp import (
21
+ dataloader,
22
+ )
23
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
24
+ model,
25
+ optimizer,
26
+ train,
27
+ )
28
+
29
+ model.model_vision.backbone = backbone
30
+
31
+ train.init_checkpoint = (
32
+ "models/QuanSun/EVA-CLIP/EVA02_CLIP_L_336_psz14to16_s6B.pt?matching_heuristics=True"
33
+ )
34
+
35
+ model.model_language = L(EVA02CLIP)(
36
+ clip_model="EVA02-CLIP-bigE-14-plus",
37
+ cache_dir="models/QuanSun/EVA-CLIP/EVA02_CLIP_E_psz14_plus_s9B.pt",
38
+ dtype="float16",
39
+ )
40
+ model.model_vision.embed_dim_language = 1024
41
+
42
+ model.model_vision.neck = L(ChannelMapper)(
43
+ input_shapes={
44
+ "p2": ShapeSpec(channels=256),
45
+ "p3": ShapeSpec(channels=256),
46
+ "p4": ShapeSpec(channels=256),
47
+ "p5": ShapeSpec(channels=256),
48
+ "p6": ShapeSpec(channels=256),
49
+ },
50
+ in_features=["p2", "p3", "p4", "p5", "p6"],
51
+ out_channels=256,
52
+ num_outs=5,
53
+ kernel_size=1,
54
+ norm_layer=L(nn.GroupNorm)(num_groups=32, num_channels=256),
55
+ )
56
+
57
+ model.model_vision.mask_in_features = ["p2"]
58
+ model.model_vision.input_shapes = {
59
+ "p2": ShapeSpec(channels=256),
60
+ "p3": ShapeSpec(channels=256),
61
+ "p4": ShapeSpec(channels=256),
62
+ "p5": ShapeSpec(channels=256),
63
+ "p6": ShapeSpec(channels=256),
64
+ }
65
+
66
+ model.model_vision.transformer.encoder.num_layers = 6
67
+ model.model_vision.transformer.decoder.num_layers = 6
68
+ model.model_vision.transformer.encoder.embed_dim = 256
69
+ model.model_vision.transformer.decoder.embed_dim = 256
70
+ model.model_vision.embed_dim = 256
71
+ model.model_vision.backbone.out_channels = 256
72
+
73
+ model.model_vision.update(
74
+ _target_=DeformableDETRSegmVL,
75
+ )
76
+ model.model_vision.transformer.update(
77
+ _target_=DeformableDetrTransformerVL,
78
+ )
79
+ model.model_vision.transformer.encoder.update(
80
+ _target_=DeformableDetrTransformerEncoderVL,
81
+ )
82
+ model.model_vision.transformer.decoder.update(
83
+ _target_=DeformableDetrTransformerDecoderVL,
84
+ )
85
+
86
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
87
+ v_dim="${....embed_dim}",
88
+ l_dim="${....embed_dim_language}",
89
+ embed_dim=2048,
90
+ num_heads=8,
91
+ dropout=0.1,
92
+ drop_path=0.0,
93
+ init_values=1.0 / 6,
94
+ stable_softmax_2d=True,
95
+ clamp_min_for_underflow=True,
96
+ clamp_max_for_overflow=True,
97
+ use_checkpoint=True,
98
+ use_attention_mask_v=True,
99
+ )
100
+ model.model_vision.transformer.encoder.use_act_checkpoint = True
101
+
102
+ model.model_vision.text_feature_bank = True
103
+ model.model_vision.text_feature_reduce_before_fusion = True
104
+ model.model_vision.text_feature_batch_repeat = True
105
+ model.model_vision.expression_cumulative_gt_class = True
106
+ model.model_vision.name_prompt_fusion_type = "zero"
107
+
108
+ model.model_vision.num_classes = 1256
109
+ model.model_vision.select_box_nums_for_evaluation = 300
110
+
111
+ criterion = model.model_vision.criterion[0]
112
+ del criterion.use_fed_loss
113
+ del criterion.get_fed_loss_cls_weights
114
+ del criterion.fed_loss_num_classes
115
+ model.model_vision.criterion = [criterion for _ in range(10)]
116
+ for criterion, num_classes in zip(
117
+ model.model_vision.criterion, [1256, 365, 601, 256, 1, 256, 256, 256, 256, 256]
118
+ ):
119
+ criterion.num_classes = num_classes
120
+
121
+ dataloader.train.mapper.max_num_phrase = 128
122
+ dataloader.train.mapper.nms_thresh_phrase = 0.6
123
+
124
+ model.model_vision.criterion[0].use_fed_loss = True
125
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
126
+ dataloader.train.dataset.names[0], 0.5
127
+ )
128
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
129
+ model.model_vision.criterion[0].fed_loss_pad_type = "cat"
130
+
131
+ model.model_vision.criterion[2].use_fed_loss = True
132
+ model.model_vision.criterion[2].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
133
+ dataloader.train.dataset.names[2], 0.5
134
+ )
135
+ model.model_vision.criterion[2].fed_loss_num_classes = 50
136
+ model.model_vision.criterion[2].fed_loss_pad_type = "cat"
137
+
138
+ model.model_vision.criterion[3].weight_dict["loss_class_enc"] = 0.0
139
+ for k, v in model.model_vision.criterion[3].weight_dict.items():
140
+ if "_enc" in k:
141
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
142
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
143
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
144
+
145
+ for k, v in model.model_vision.criterion[4].weight_dict.items():
146
+ if "_class" in k and "_enc" not in k:
147
+ model.model_vision.criterion[4].weight_dict.update({k: 0.0})
148
+
149
+ model.model_vision.criterion[5].weight_dict["loss_class_enc"] = 0.0
150
+
151
+ model.model_vision.criterion[6].weight_dict["loss_class_enc"] = 0.0
152
+ for k, v in model.model_vision.criterion[6].weight_dict.items():
153
+ if "_enc" in k:
154
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
155
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
156
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
157
+
158
+ model.model_vision.criterion[7].weight_dict["loss_class_enc"] = 0.0
159
+ for k, v in model.model_vision.criterion[7].weight_dict.items():
160
+ if "_enc" in k:
161
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
162
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
163
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
164
+
165
+ model.model_vision.criterion[8].weight_dict["loss_class_enc"] = 0.0
166
+ for k, v in model.model_vision.criterion[8].weight_dict.items():
167
+ if "_enc" in k:
168
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
169
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
170
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
171
+
172
+ model.model_vision.stuff_dataset_learn_thing = False
173
+ model.model_vision.stuff_prob_thing = 0.9
174
+ model.model_vision.transformer.proposal_ambiguous = 1
175
+
176
+ model.model_vision.instance_on = True
177
+ model.model_vision.semantic_on = True
178
+ model.model_vision.panoptic_on = False
179
+
180
+ train.max_iter = 270000
181
+ train.eval_period = 270000
182
+
183
+ lr_multiplier = L(WarmupParamScheduler)(
184
+ scheduler=L(MultiStepParamScheduler)(
185
+ values=[1.0, 0.1],
186
+ milestones=[225000],
187
+ num_updates=270000,
188
+ ),
189
+ warmup_length=2000 / 270000,
190
+ warmup_method="linear",
191
+ warmup_factor=0.001,
192
+ )
193
+
194
+ dataloader.train.total_batch_size = 16
195
+ dataloader.train.total_batch_size_list = [16, 16, 16, 16, 16, 16, 16, 16, 16]
196
+ dataloader.train.num_workers = 0
197
+ train.iter_size = 4
198
+
199
+
200
+ model.model_vision.dataset_prompts = [
201
+ "name",
202
+ "name",
203
+ "name",
204
+ "phrase",
205
+ "name",
206
+ "phrase",
207
+ "phrase",
208
+ "phrase",
209
+ "phrase",
210
+ "expression",
211
+ ]
212
+ model.model_vision.dataset_names = [
213
+ "lvis+stuffonly",
214
+ "objects365",
215
+ "openimages",
216
+ "vgregion",
217
+ "sa1b",
218
+ "refcoco-mixed_group-by-image",
219
+ "gqa",
220
+ "phrasecut",
221
+ "flickr30k",
222
+ "refcoco",
223
+ ]
224
+ model.model_vision.dataset_metas = dataloader.train.dataset.names + ["refcoco-mixed"]
225
+
226
+ train.output_dir = "output/" + __file__[:-3]
227
+ model.model_vision.vis_period = 5120
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4x270k_mdl.py ADDED
@@ -0,0 +1,230 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.nn as nn
2
+
3
+ from detectron2.config import LazyCall as L
4
+ from detectron2.layers import ShapeSpec
5
+ from detectron2.solver import WarmupParamScheduler
6
+ from detrex.modeling.neck import ChannelMapper
7
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
8
+
9
+ from ape.data.detection_utils import get_fed_loss_cls_weights
10
+ from ape.layers import VisionLanguageFusion
11
+ from ape.modeling.ape_deta import (
12
+ DeformableDETRSegmVL,
13
+ DeformableDetrTransformerDecoderVL,
14
+ DeformableDetrTransformerEncoderVL,
15
+ DeformableDetrTransformerVL,
16
+ )
17
+ from ape.modeling.text import EVA02CLIP
18
+
19
+ from ...common.backbone.vitl_eva02_clip import backbone
20
+ from ...common.data.lviscocococostuff_o365_oid_vgr_sa1b_refcoco_group_by_image_gqa_phrasecut_flickr30k_panoptic_lsj1024_cp_mdl import (
21
+ dataloader,
22
+ )
23
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
24
+ model,
25
+ optimizer,
26
+ train,
27
+ )
28
+
29
+ model.model_vision.backbone = backbone
30
+
31
+ train.init_checkpoint = (
32
+ "models/QuanSun/EVA-CLIP/EVA02_CLIP_L_336_psz14to16_s6B.pt?matching_heuristics=True"
33
+ )
34
+
35
+ model.model_language = L(EVA02CLIP)(
36
+ clip_model="EVA02-CLIP-bigE-14-plus",
37
+ cache_dir="models/QuanSun/EVA-CLIP/EVA02_CLIP_E_psz14_plus_s9B.pt",
38
+ dtype="float16",
39
+ )
40
+ model.model_vision.embed_dim_language = 1024
41
+
42
+ model.model_vision.neck = L(ChannelMapper)(
43
+ input_shapes={
44
+ "p2": ShapeSpec(channels=256),
45
+ "p3": ShapeSpec(channels=256),
46
+ "p4": ShapeSpec(channels=256),
47
+ "p5": ShapeSpec(channels=256),
48
+ "p6": ShapeSpec(channels=256),
49
+ },
50
+ in_features=["p2", "p3", "p4", "p5", "p6"],
51
+ out_channels=256,
52
+ num_outs=5,
53
+ kernel_size=1,
54
+ norm_layer=L(nn.GroupNorm)(num_groups=32, num_channels=256),
55
+ )
56
+
57
+ model.model_vision.mask_in_features = ["p2"]
58
+ model.model_vision.input_shapes = {
59
+ "p2": ShapeSpec(channels=256),
60
+ "p3": ShapeSpec(channels=256),
61
+ "p4": ShapeSpec(channels=256),
62
+ "p5": ShapeSpec(channels=256),
63
+ "p6": ShapeSpec(channels=256),
64
+ }
65
+
66
+ model.model_vision.transformer.encoder.num_layers = 6
67
+ model.model_vision.transformer.decoder.num_layers = 6
68
+ model.model_vision.transformer.encoder.embed_dim = 256
69
+ model.model_vision.transformer.decoder.embed_dim = 256
70
+ model.model_vision.embed_dim = 256
71
+ model.model_vision.backbone.out_channels = 256
72
+
73
+ model.model_vision.update(
74
+ _target_=DeformableDETRSegmVL,
75
+ )
76
+ model.model_vision.transformer.update(
77
+ _target_=DeformableDetrTransformerVL,
78
+ )
79
+ model.model_vision.transformer.encoder.update(
80
+ _target_=DeformableDetrTransformerEncoderVL,
81
+ )
82
+ model.model_vision.transformer.decoder.update(
83
+ _target_=DeformableDetrTransformerDecoderVL,
84
+ )
85
+
86
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
87
+ v_dim="${....embed_dim}",
88
+ l_dim="${....embed_dim_language}",
89
+ embed_dim=2048,
90
+ num_heads=8,
91
+ dropout=0.1,
92
+ drop_path=0.0,
93
+ init_values=1.0 / 6,
94
+ stable_softmax_2d=True,
95
+ clamp_min_for_underflow=True,
96
+ clamp_max_for_overflow=True,
97
+ use_checkpoint=True,
98
+ use_attention_mask_v=True,
99
+ )
100
+ model.model_vision.transformer.encoder.use_act_checkpoint = True
101
+
102
+ model.model_vision.text_feature_bank = True
103
+ model.model_vision.text_feature_reduce_before_fusion = True
104
+ model.model_vision.text_feature_batch_repeat = True
105
+ model.model_vision.expression_cumulative_gt_class = True
106
+ model.model_vision.name_prompt_fusion_type = "zero"
107
+
108
+ model.model_vision.num_classes = 1256
109
+ model.model_vision.select_box_nums_for_evaluation = 300
110
+
111
+ criterion = model.model_vision.criterion[0]
112
+ del criterion.use_fed_loss
113
+ del criterion.get_fed_loss_cls_weights
114
+ del criterion.fed_loss_num_classes
115
+ model.model_vision.criterion = [criterion for _ in range(10)]
116
+ for criterion, num_classes in zip(
117
+ model.model_vision.criterion, [1256, 365, 601, 256, 1, 256, 256, 256, 256, 256]
118
+ ):
119
+ criterion.num_classes = num_classes
120
+
121
+ model.model_vision.criterion[0].use_fed_loss = True
122
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
123
+ dataloader.train[0].dataset.names, 0.5
124
+ )
125
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
126
+ model.model_vision.criterion[0].fed_loss_pad_type = "cat"
127
+
128
+ model.model_vision.criterion[2].use_fed_loss = True
129
+ model.model_vision.criterion[2].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
130
+ dataloader.train[2].dataset.names, 0.5
131
+ )
132
+ model.model_vision.criterion[2].fed_loss_num_classes = 50
133
+ model.model_vision.criterion[2].fed_loss_pad_type = "cat"
134
+
135
+ model.model_vision.criterion[3].weight_dict["loss_class_enc"] = 0.0
136
+ for k, v in model.model_vision.criterion[3].weight_dict.items():
137
+ if "_enc" in k:
138
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
139
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
140
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
141
+
142
+ for k, v in model.model_vision.criterion[4].weight_dict.items():
143
+ if "_class" in k and "_enc" not in k:
144
+ model.model_vision.criterion[4].weight_dict.update({k: 0.0})
145
+
146
+ model.model_vision.criterion[5].weight_dict["loss_class_enc"] = 0.0
147
+
148
+ model.model_vision.criterion[6].weight_dict["loss_class_enc"] = 0.0
149
+ for k, v in model.model_vision.criterion[6].weight_dict.items():
150
+ if "_enc" in k:
151
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
152
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
153
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
154
+
155
+ model.model_vision.criterion[7].weight_dict["loss_class_enc"] = 0.0
156
+ for k, v in model.model_vision.criterion[7].weight_dict.items():
157
+ if "_enc" in k:
158
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
159
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
160
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
161
+
162
+ model.model_vision.criterion[8].weight_dict["loss_class_enc"] = 0.0
163
+ for k, v in model.model_vision.criterion[8].weight_dict.items():
164
+ if "_enc" in k:
165
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
166
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
167
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
168
+
169
+ model.model_vision.stuff_dataset_learn_thing = False
170
+ model.model_vision.stuff_prob_thing = 0.9
171
+ model.model_vision.transformer.proposal_ambiguous = 1
172
+
173
+ model.model_vision.instance_on = True
174
+ model.model_vision.semantic_on = True
175
+ model.model_vision.panoptic_on = False
176
+
177
+ train.max_iter = 270000
178
+ train.eval_period = 270000
179
+
180
+ lr_multiplier = L(WarmupParamScheduler)(
181
+ scheduler=L(MultiStepParamScheduler)(
182
+ values=[1.0, 0.1],
183
+ milestones=[225000],
184
+ num_updates=270000,
185
+ ),
186
+ warmup_length=2000 / 270000,
187
+ warmup_method="linear",
188
+ warmup_factor=0.001,
189
+ )
190
+
191
+ for i in range(len(dataloader.train)):
192
+ dataloader.train[i].mapper.max_num_phrase = 128
193
+ dataloader.train[i].mapper.nms_thresh_phrase = 0.6
194
+ dataloader.train[i].total_batch_size = 16
195
+ dataloader.train[i].total_batch_size_list = [16]
196
+ dataloader.train[i].num_workers = 2
197
+
198
+ train.iter_size = 4
199
+ train.dataset_ratio = [1, 1, 1, 1, 1, 0.1, 0.1, 0.1, 0.1]
200
+
201
+ model.model_vision.dataset_prompts = [
202
+ "name",
203
+ "name",
204
+ "name",
205
+ "phrase",
206
+ "name",
207
+ "phrase",
208
+ "phrase",
209
+ "phrase",
210
+ "phrase",
211
+ "expression",
212
+ ]
213
+ model.model_vision.dataset_names = [
214
+ "lvis+stuffonly",
215
+ "objects365",
216
+ "openimages",
217
+ "vgregion",
218
+ "sa1b",
219
+ "refcoco-mixed_group-by-image",
220
+ "gqa",
221
+ "phrasecut",
222
+ "flickr30k",
223
+ "refcoco",
224
+ ]
225
+ model.model_vision.dataset_metas = [xx for x in dataloader.train for xx in x.dataset.names] + [
226
+ "refcoco-mixed"
227
+ ]
228
+
229
+ train.output_dir = "output/" + __file__[:-3]
230
+ model.model_vision.vis_period = 5120
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4x270k_mdl_llama2.py ADDED
@@ -0,0 +1,235 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.nn as nn
2
+
3
+ from detectron2.config import LazyCall as L
4
+ from detectron2.layers import ShapeSpec
5
+ from detectron2.solver import WarmupParamScheduler
6
+ from detrex.modeling.neck import ChannelMapper
7
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
8
+
9
+ from ape.data.detection_utils import get_fed_loss_cls_weights
10
+ from ape.layers import VisionLanguageFusion
11
+ from ape.modeling.ape_deta import (
12
+ DeformableDETRSegmVL,
13
+ DeformableDetrTransformerDecoderVL,
14
+ DeformableDetrTransformerEncoderVL,
15
+ DeformableDetrTransformerVL,
16
+ )
17
+ from ape.modeling.text import Llama2
18
+
19
+ from ...common.backbone.vitl_eva02_clip import backbone
20
+ from ...common.data.lviscocococostuff_o365_oid_vgr_sa1b_refcoco_group_by_image_gqa_phrasecut_flickr30k_panoptic_lsj1024_cp_mdl import (
21
+ dataloader,
22
+ )
23
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
24
+ model,
25
+ optimizer,
26
+ train,
27
+ )
28
+
29
+ model.model_vision.backbone = backbone
30
+
31
+ train.init_checkpoint = (
32
+ "models/QuanSun/EVA-CLIP/EVA02_CLIP_L_336_psz14to16_s6B.pt?matching_heuristics=True"
33
+ )
34
+
35
+ model.model_language = L(Llama2)(
36
+ pretrained_model_name_or_path="models/meta-llama/Llama-2-7b-hf/",
37
+ dtype="float32",
38
+ vision_port="decoder",
39
+ eval_only=True,
40
+ load_in_4bit=True,
41
+ load_in_8bit=False,
42
+ )
43
+ model.model_vision.embed_dim_language = 4096
44
+ model.model_vision.text_feature_reduce_type = "average"
45
+
46
+ model.model_vision.neck = L(ChannelMapper)(
47
+ input_shapes={
48
+ "p2": ShapeSpec(channels=256),
49
+ "p3": ShapeSpec(channels=256),
50
+ "p4": ShapeSpec(channels=256),
51
+ "p5": ShapeSpec(channels=256),
52
+ "p6": ShapeSpec(channels=256),
53
+ },
54
+ in_features=["p2", "p3", "p4", "p5", "p6"],
55
+ out_channels=256,
56
+ num_outs=5,
57
+ kernel_size=1,
58
+ norm_layer=L(nn.GroupNorm)(num_groups=32, num_channels=256),
59
+ )
60
+
61
+ model.model_vision.mask_in_features = ["p2"]
62
+ model.model_vision.input_shapes = {
63
+ "p2": ShapeSpec(channels=256),
64
+ "p3": ShapeSpec(channels=256),
65
+ "p4": ShapeSpec(channels=256),
66
+ "p5": ShapeSpec(channels=256),
67
+ "p6": ShapeSpec(channels=256),
68
+ }
69
+
70
+ model.model_vision.transformer.encoder.num_layers = 6
71
+ model.model_vision.transformer.decoder.num_layers = 6
72
+ model.model_vision.transformer.encoder.embed_dim = 256
73
+ model.model_vision.transformer.decoder.embed_dim = 256
74
+ model.model_vision.embed_dim = 256
75
+ model.model_vision.backbone.out_channels = 256
76
+
77
+ model.model_vision.update(
78
+ _target_=DeformableDETRSegmVL,
79
+ )
80
+ model.model_vision.transformer.update(
81
+ _target_=DeformableDetrTransformerVL,
82
+ )
83
+ model.model_vision.transformer.encoder.update(
84
+ _target_=DeformableDetrTransformerEncoderVL,
85
+ )
86
+ model.model_vision.transformer.decoder.update(
87
+ _target_=DeformableDetrTransformerDecoderVL,
88
+ )
89
+
90
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
91
+ v_dim="${....embed_dim}",
92
+ l_dim="${....embed_dim_language}",
93
+ embed_dim=2048,
94
+ num_heads=8,
95
+ dropout=0.1,
96
+ drop_path=0.0,
97
+ init_values=1.0 / 6,
98
+ stable_softmax_2d=True,
99
+ clamp_min_for_underflow=True,
100
+ clamp_max_for_overflow=True,
101
+ use_checkpoint=True,
102
+ use_attention_mask_v=True,
103
+ )
104
+ model.model_vision.transformer.encoder.use_act_checkpoint = True
105
+ model.model_vision.transformer.decoder.use_act_checkpoint = True
106
+
107
+ model.model_vision.text_feature_bank = True
108
+ model.model_vision.text_feature_reduce_before_fusion = True
109
+ model.model_vision.text_feature_batch_repeat = True
110
+ model.model_vision.expression_cumulative_gt_class = True
111
+ model.model_vision.name_prompt_fusion_type = "zero"
112
+
113
+ model.model_vision.num_classes = 1256
114
+ model.model_vision.select_box_nums_for_evaluation = 300
115
+
116
+ criterion = model.model_vision.criterion[0]
117
+ del criterion.use_fed_loss
118
+ del criterion.get_fed_loss_cls_weights
119
+ del criterion.fed_loss_num_classes
120
+ model.model_vision.criterion = [criterion for _ in range(10)]
121
+ for criterion, num_classes in zip(
122
+ model.model_vision.criterion, [1256, 365, 601, 256, 1, 256, 256, 256, 256, 256]
123
+ ):
124
+ criterion.num_classes = num_classes
125
+
126
+ model.model_vision.criterion[0].use_fed_loss = True
127
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
128
+ dataloader.train[0].dataset.names, 0.5
129
+ )
130
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
131
+ model.model_vision.criterion[0].fed_loss_pad_type = "cat"
132
+
133
+ model.model_vision.criterion[2].use_fed_loss = True
134
+ model.model_vision.criterion[2].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
135
+ dataloader.train[2].dataset.names, 0.5
136
+ )
137
+ model.model_vision.criterion[2].fed_loss_num_classes = 50
138
+ model.model_vision.criterion[2].fed_loss_pad_type = "cat"
139
+
140
+ model.model_vision.criterion[3].weight_dict["loss_class_enc"] = 0.0
141
+ for k, v in model.model_vision.criterion[3].weight_dict.items():
142
+ if "_enc" in k:
143
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
144
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
145
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
146
+
147
+ for k, v in model.model_vision.criterion[4].weight_dict.items():
148
+ if "_class" in k and "_enc" not in k:
149
+ model.model_vision.criterion[4].weight_dict.update({k: 0.0})
150
+
151
+ model.model_vision.criterion[5].weight_dict["loss_class_enc"] = 0.0
152
+
153
+ model.model_vision.criterion[6].weight_dict["loss_class_enc"] = 0.0
154
+ for k, v in model.model_vision.criterion[6].weight_dict.items():
155
+ if "_enc" in k:
156
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
157
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
158
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
159
+
160
+ model.model_vision.criterion[7].weight_dict["loss_class_enc"] = 0.0
161
+ for k, v in model.model_vision.criterion[7].weight_dict.items():
162
+ if "_enc" in k:
163
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
164
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
165
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
166
+
167
+ model.model_vision.criterion[8].weight_dict["loss_class_enc"] = 0.0
168
+ for k, v in model.model_vision.criterion[8].weight_dict.items():
169
+ if "_enc" in k:
170
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
171
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
172
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
173
+
174
+ model.model_vision.stuff_dataset_learn_thing = False
175
+ model.model_vision.stuff_prob_thing = 0.9
176
+ model.model_vision.transformer.proposal_ambiguous = 1
177
+
178
+ model.model_vision.instance_on = True
179
+ model.model_vision.semantic_on = True
180
+ model.model_vision.panoptic_on = False
181
+
182
+ train.max_iter = 270000
183
+ train.eval_period = 270000
184
+
185
+ lr_multiplier = L(WarmupParamScheduler)(
186
+ scheduler=L(MultiStepParamScheduler)(
187
+ values=[1.0, 0.1],
188
+ milestones=[225000],
189
+ num_updates=270000,
190
+ ),
191
+ warmup_length=2000 / 270000,
192
+ warmup_method="linear",
193
+ warmup_factor=0.001,
194
+ )
195
+
196
+ for i in range(len(dataloader.train)):
197
+ dataloader.train[i].mapper.max_num_phrase = 128
198
+ dataloader.train[i].mapper.nms_thresh_phrase = 0.6
199
+ dataloader.train[i].total_batch_size = 16
200
+ dataloader.train[i].total_batch_size_list = [16]
201
+ dataloader.train[i].num_workers = 2
202
+
203
+ train.iter_size = 4
204
+ train.dataset_ratio = [1, 1, 1, 1, 1, 0.1, 0.1, 0.1, 0.1]
205
+
206
+ model.model_vision.dataset_prompts = [
207
+ "name",
208
+ "name",
209
+ "name",
210
+ "phrase",
211
+ "name",
212
+ "phrase",
213
+ "phrase",
214
+ "phrase",
215
+ "phrase",
216
+ "expression",
217
+ ]
218
+ model.model_vision.dataset_names = [
219
+ "lvis+stuffonly",
220
+ "objects365",
221
+ "openimages",
222
+ "vgregion",
223
+ "sa1b",
224
+ "refcoco-mixed_group-by-image",
225
+ "gqa",
226
+ "phrasecut",
227
+ "flickr30k",
228
+ "refcoco",
229
+ ]
230
+ model.model_vision.dataset_metas = [xx for x in dataloader.train for xx in x.dataset.names] + [
231
+ "refcoco-mixed"
232
+ ]
233
+
234
+ train.output_dir = "output/" + __file__[:-3]
235
+ model.model_vision.vis_period = 5120
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_16x4x337k_mdl.py ADDED
@@ -0,0 +1,230 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.nn as nn
2
+
3
+ from detectron2.config import LazyCall as L
4
+ from detectron2.layers import ShapeSpec
5
+ from detectron2.solver import WarmupParamScheduler
6
+ from detrex.modeling.neck import ChannelMapper
7
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
8
+
9
+ from ape.data.detection_utils import get_fed_loss_cls_weights
10
+ from ape.layers import VisionLanguageFusion
11
+ from ape.modeling.ape_deta import (
12
+ DeformableDETRSegmVL,
13
+ DeformableDetrTransformerDecoderVL,
14
+ DeformableDetrTransformerEncoderVL,
15
+ DeformableDetrTransformerVL,
16
+ )
17
+ from ape.modeling.text import EVA02CLIP
18
+
19
+ from ...common.backbone.vitl_eva02_clip import backbone
20
+ from ...common.data.lviscocococostuff_o365_oid_vgr_sa1b_refcoco_group_by_image_gqa_phrasecut_flickr30k_panoptic_lsj1024_cp_mdl import (
21
+ dataloader,
22
+ )
23
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
24
+ model,
25
+ optimizer,
26
+ train,
27
+ )
28
+
29
+ model.model_vision.backbone = backbone
30
+
31
+ train.init_checkpoint = (
32
+ "models/QuanSun/EVA-CLIP/EVA02_CLIP_L_336_psz14to16_s6B.pt?matching_heuristics=True"
33
+ )
34
+
35
+ model.model_language = L(EVA02CLIP)(
36
+ clip_model="EVA02-CLIP-bigE-14-plus",
37
+ cache_dir="models/QuanSun/EVA-CLIP/EVA02_CLIP_E_psz14_plus_s9B.pt",
38
+ dtype="float16",
39
+ )
40
+ model.model_vision.embed_dim_language = 1024
41
+
42
+ model.model_vision.neck = L(ChannelMapper)(
43
+ input_shapes={
44
+ "p2": ShapeSpec(channels=256),
45
+ "p3": ShapeSpec(channels=256),
46
+ "p4": ShapeSpec(channels=256),
47
+ "p5": ShapeSpec(channels=256),
48
+ "p6": ShapeSpec(channels=256),
49
+ },
50
+ in_features=["p2", "p3", "p4", "p5", "p6"],
51
+ out_channels=256,
52
+ num_outs=5,
53
+ kernel_size=1,
54
+ norm_layer=L(nn.GroupNorm)(num_groups=32, num_channels=256),
55
+ )
56
+
57
+ model.model_vision.mask_in_features = ["p2"]
58
+ model.model_vision.input_shapes = {
59
+ "p2": ShapeSpec(channels=256),
60
+ "p3": ShapeSpec(channels=256),
61
+ "p4": ShapeSpec(channels=256),
62
+ "p5": ShapeSpec(channels=256),
63
+ "p6": ShapeSpec(channels=256),
64
+ }
65
+
66
+ model.model_vision.transformer.encoder.num_layers = 6
67
+ model.model_vision.transformer.decoder.num_layers = 6
68
+ model.model_vision.transformer.encoder.embed_dim = 256
69
+ model.model_vision.transformer.decoder.embed_dim = 256
70
+ model.model_vision.embed_dim = 256
71
+ model.model_vision.backbone.out_channels = 256
72
+
73
+ model.model_vision.update(
74
+ _target_=DeformableDETRSegmVL,
75
+ )
76
+ model.model_vision.transformer.update(
77
+ _target_=DeformableDetrTransformerVL,
78
+ )
79
+ model.model_vision.transformer.encoder.update(
80
+ _target_=DeformableDetrTransformerEncoderVL,
81
+ )
82
+ model.model_vision.transformer.decoder.update(
83
+ _target_=DeformableDetrTransformerDecoderVL,
84
+ )
85
+
86
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
87
+ v_dim="${....embed_dim}",
88
+ l_dim="${....embed_dim_language}",
89
+ embed_dim=2048,
90
+ num_heads=8,
91
+ dropout=0.1,
92
+ drop_path=0.0,
93
+ init_values=1.0 / 6,
94
+ stable_softmax_2d=True,
95
+ clamp_min_for_underflow=True,
96
+ clamp_max_for_overflow=True,
97
+ use_checkpoint=True,
98
+ use_attention_mask_v=True,
99
+ )
100
+ model.model_vision.transformer.encoder.use_act_checkpoint = True
101
+
102
+ model.model_vision.text_feature_bank = True
103
+ model.model_vision.text_feature_reduce_before_fusion = True
104
+ model.model_vision.text_feature_batch_repeat = True
105
+ model.model_vision.expression_cumulative_gt_class = True
106
+ model.model_vision.name_prompt_fusion_type = "zero"
107
+
108
+ model.model_vision.num_classes = 1256
109
+ model.model_vision.select_box_nums_for_evaluation = 300
110
+
111
+ criterion = model.model_vision.criterion[0]
112
+ del criterion.use_fed_loss
113
+ del criterion.get_fed_loss_cls_weights
114
+ del criterion.fed_loss_num_classes
115
+ model.model_vision.criterion = [criterion for _ in range(10)]
116
+ for criterion, num_classes in zip(
117
+ model.model_vision.criterion, [1256, 365, 601, 256, 1, 256, 256, 256, 256, 256]
118
+ ):
119
+ criterion.num_classes = num_classes
120
+
121
+ model.model_vision.criterion[0].use_fed_loss = True
122
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
123
+ dataloader.train[0].dataset.names, 0.5
124
+ )
125
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
126
+ model.model_vision.criterion[0].fed_loss_pad_type = "cat"
127
+
128
+ model.model_vision.criterion[2].use_fed_loss = True
129
+ model.model_vision.criterion[2].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
130
+ dataloader.train[2].dataset.names, 0.5
131
+ )
132
+ model.model_vision.criterion[2].fed_loss_num_classes = 50
133
+ model.model_vision.criterion[2].fed_loss_pad_type = "cat"
134
+
135
+ model.model_vision.criterion[3].weight_dict["loss_class_enc"] = 0.0
136
+ for k, v in model.model_vision.criterion[3].weight_dict.items():
137
+ if "_enc" in k:
138
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
139
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
140
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
141
+
142
+ for k, v in model.model_vision.criterion[4].weight_dict.items():
143
+ if "_class" in k and "_enc" not in k:
144
+ model.model_vision.criterion[4].weight_dict.update({k: 0.0})
145
+
146
+ model.model_vision.criterion[5].weight_dict["loss_class_enc"] = 0.0
147
+
148
+ model.model_vision.criterion[6].weight_dict["loss_class_enc"] = 0.0
149
+ for k, v in model.model_vision.criterion[6].weight_dict.items():
150
+ if "_enc" in k:
151
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
152
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
153
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
154
+
155
+ model.model_vision.criterion[7].weight_dict["loss_class_enc"] = 0.0
156
+ for k, v in model.model_vision.criterion[7].weight_dict.items():
157
+ if "_enc" in k:
158
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
159
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
160
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
161
+
162
+ model.model_vision.criterion[8].weight_dict["loss_class_enc"] = 0.0
163
+ for k, v in model.model_vision.criterion[8].weight_dict.items():
164
+ if "_enc" in k:
165
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
166
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
167
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
168
+
169
+ model.model_vision.stuff_dataset_learn_thing = False
170
+ model.model_vision.stuff_prob_thing = 0.9
171
+ model.model_vision.transformer.proposal_ambiguous = 1
172
+
173
+ model.model_vision.instance_on = True
174
+ model.model_vision.semantic_on = True
175
+ model.model_vision.panoptic_on = False
176
+
177
+ train.max_iter = 337500
178
+ train.eval_period = 337500
179
+
180
+ lr_multiplier = L(WarmupParamScheduler)(
181
+ scheduler=L(MultiStepParamScheduler)(
182
+ values=[1.0, 0.1, 0.01],
183
+ milestones=[225000, 300000],
184
+ num_updates=337500,
185
+ ),
186
+ warmup_length=2000 / 270000,
187
+ warmup_method="linear",
188
+ warmup_factor=0.001,
189
+ )
190
+
191
+ for i in range(len(dataloader.train)):
192
+ dataloader.train[i].mapper.max_num_phrase = 128
193
+ dataloader.train[i].mapper.nms_thresh_phrase = 0.6
194
+ dataloader.train[i].total_batch_size = 16
195
+ dataloader.train[i].total_batch_size_list = [16]
196
+ dataloader.train[i].num_workers = 2
197
+
198
+ train.iter_size = 4
199
+ train.dataset_ratio = [1, 1, 1, 1, 1, 0.1, 0.1, 0.1, 0.1]
200
+
201
+ model.model_vision.dataset_prompts = [
202
+ "name",
203
+ "name",
204
+ "name",
205
+ "phrase",
206
+ "name",
207
+ "phrase",
208
+ "phrase",
209
+ "phrase",
210
+ "phrase",
211
+ "expression",
212
+ ]
213
+ model.model_vision.dataset_names = [
214
+ "lvis+stuffonly",
215
+ "objects365",
216
+ "openimages",
217
+ "vgregion",
218
+ "sa1b",
219
+ "refcoco-mixed_group-by-image",
220
+ "gqa",
221
+ "phrasecut",
222
+ "flickr30k",
223
+ "refcoco",
224
+ ]
225
+ model.model_vision.dataset_metas = [xx for x in dataloader.train for xx in x.dataset.names] + [
226
+ "refcoco-mixed"
227
+ ]
228
+
229
+ train.output_dir = "output/" + __file__[:-3]
230
+ model.model_vision.vis_period = 5120
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_32x2x270k.py ADDED
@@ -0,0 +1,228 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.nn as nn
2
+
3
+ from detectron2.config import LazyCall as L
4
+ from detectron2.layers import ShapeSpec
5
+ from detectron2.solver import WarmupParamScheduler
6
+ from detrex.modeling.neck import ChannelMapper
7
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
8
+
9
+ from ape.data.detection_utils import get_fed_loss_cls_weights
10
+ from ape.layers import VisionLanguageFusion
11
+ from ape.modeling.ape_deta import (
12
+ DeformableDETRSegmVL,
13
+ DeformableDetrTransformerDecoderVL,
14
+ DeformableDetrTransformerEncoderVL,
15
+ DeformableDetrTransformerVL,
16
+ )
17
+ from ape.modeling.text import EVA02CLIP
18
+
19
+ from ...common.backbone.vitl_eva02_clip import backbone
20
+ from ...common.data.lviscocococostuff_o365_oid_vgr_sa1b_refcoco_group_by_image_gqa_phrasecut_flickr30k_panoptic_lsj1024_cp import (
21
+ dataloader,
22
+ )
23
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
24
+ model,
25
+ optimizer,
26
+ train,
27
+ )
28
+
29
+ model.model_vision.backbone = backbone
30
+
31
+ train.init_checkpoint = (
32
+ "models/QuanSun/EVA-CLIP/EVA02_CLIP_L_336_psz14to16_s6B.pt?matching_heuristics=True"
33
+ )
34
+
35
+ model.model_language = L(EVA02CLIP)(
36
+ clip_model="EVA02-CLIP-bigE-14-plus",
37
+ cache_dir="models/QuanSun/EVA-CLIP/EVA02_CLIP_E_psz14_plus_s9B.pt",
38
+ dtype="float16",
39
+ )
40
+ model.model_vision.embed_dim_language = 1024
41
+
42
+ model.model_vision.neck = L(ChannelMapper)(
43
+ input_shapes={
44
+ "p2": ShapeSpec(channels=256),
45
+ "p3": ShapeSpec(channels=256),
46
+ "p4": ShapeSpec(channels=256),
47
+ "p5": ShapeSpec(channels=256),
48
+ "p6": ShapeSpec(channels=256),
49
+ },
50
+ in_features=["p2", "p3", "p4", "p5", "p6"],
51
+ out_channels=256,
52
+ num_outs=5,
53
+ kernel_size=1,
54
+ norm_layer=L(nn.GroupNorm)(num_groups=32, num_channels=256),
55
+ )
56
+
57
+ model.model_vision.mask_in_features = ["p2"]
58
+ model.model_vision.input_shapes = {
59
+ "p2": ShapeSpec(channels=256),
60
+ "p3": ShapeSpec(channels=256),
61
+ "p4": ShapeSpec(channels=256),
62
+ "p5": ShapeSpec(channels=256),
63
+ "p6": ShapeSpec(channels=256),
64
+ }
65
+
66
+ model.model_vision.transformer.encoder.num_layers = 6
67
+ model.model_vision.transformer.decoder.num_layers = 6
68
+ model.model_vision.transformer.encoder.embed_dim = 256
69
+ model.model_vision.transformer.decoder.embed_dim = 256
70
+ model.model_vision.embed_dim = 256
71
+ model.model_vision.backbone.out_channels = 256
72
+
73
+ model.model_vision.update(
74
+ _target_=DeformableDETRSegmVL,
75
+ )
76
+ model.model_vision.transformer.update(
77
+ _target_=DeformableDetrTransformerVL,
78
+ )
79
+ model.model_vision.transformer.encoder.update(
80
+ _target_=DeformableDetrTransformerEncoderVL,
81
+ )
82
+ model.model_vision.transformer.decoder.update(
83
+ _target_=DeformableDetrTransformerDecoderVL,
84
+ )
85
+
86
+
87
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
88
+ v_dim="${....embed_dim}",
89
+ l_dim="${....embed_dim_language}",
90
+ embed_dim=2048,
91
+ num_heads=8,
92
+ dropout=0.1,
93
+ drop_path=0.0,
94
+ init_values=1.0 / 6,
95
+ stable_softmax_2d=True,
96
+ clamp_min_for_underflow=True,
97
+ clamp_max_for_overflow=True,
98
+ use_checkpoint=True,
99
+ )
100
+ model.model_vision.transformer.encoder.use_act_checkpoint = True
101
+
102
+ model.model_vision.text_feature_bank = True
103
+ model.model_vision.text_feature_reduce_before_fusion = True
104
+ model.model_vision.text_feature_batch_repeat = True
105
+ model.model_vision.expression_cumulative_gt_class = True
106
+ model.model_vision.name_prompt_fusion_type = "zero"
107
+
108
+ model.model_vision.num_classes = 1256
109
+ model.model_vision.select_box_nums_for_evaluation = 300
110
+
111
+ criterion = model.model_vision.criterion[0]
112
+ del criterion.use_fed_loss
113
+ del criterion.get_fed_loss_cls_weights
114
+ del criterion.fed_loss_num_classes
115
+ model.model_vision.criterion = [criterion for _ in range(10)]
116
+ for criterion, num_classes in zip(
117
+ model.model_vision.criterion, [1256, 365, 601, 256, 1, 256, 256, 256, 256, 256]
118
+ ):
119
+ criterion.num_classes = num_classes
120
+
121
+ dataloader.train.mapper.max_num_phrase = 128
122
+ dataloader.train.mapper.nms_thresh_phrase = 0.6
123
+
124
+ model.model_vision.criterion[0].use_fed_loss = True
125
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
126
+ dataloader.train.dataset.names[0], 0.5
127
+ )
128
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
129
+ model.model_vision.criterion[0].fed_loss_pad_type = "cat"
130
+
131
+ model.model_vision.criterion[2].use_fed_loss = True
132
+ model.model_vision.criterion[2].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
133
+ dataloader.train.dataset.names[2], 0.5
134
+ )
135
+ model.model_vision.criterion[2].fed_loss_num_classes = 50
136
+ model.model_vision.criterion[2].fed_loss_pad_type = "cat"
137
+
138
+ model.model_vision.criterion[3].weight_dict["loss_class_enc"] = 0.0
139
+ for k, v in model.model_vision.criterion[3].weight_dict.items():
140
+ if "_enc" in k:
141
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
142
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
143
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
144
+
145
+ for k, v in model.model_vision.criterion[4].weight_dict.items():
146
+ if "_class" in k and "_enc" not in k:
147
+ model.model_vision.criterion[4].weight_dict.update({k: 0.0})
148
+
149
+ model.model_vision.criterion[5].weight_dict["loss_class_enc"] = 0.0
150
+
151
+ model.model_vision.criterion[6].weight_dict["loss_class_enc"] = 0.0
152
+ for k, v in model.model_vision.criterion[6].weight_dict.items():
153
+ if "_enc" in k:
154
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
155
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
156
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
157
+
158
+ model.model_vision.criterion[7].weight_dict["loss_class_enc"] = 0.0
159
+ for k, v in model.model_vision.criterion[7].weight_dict.items():
160
+ if "_enc" in k:
161
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
162
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
163
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
164
+
165
+ model.model_vision.criterion[8].weight_dict["loss_class_enc"] = 0.0
166
+ for k, v in model.model_vision.criterion[8].weight_dict.items():
167
+ if "_enc" in k:
168
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
169
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
170
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
171
+
172
+ model.model_vision.stuff_dataset_learn_thing = False
173
+ model.model_vision.stuff_prob_thing = 0.9
174
+ model.model_vision.transformer.proposal_ambiguous = 1
175
+
176
+ model.model_vision.instance_on = True
177
+ model.model_vision.semantic_on = True
178
+ model.model_vision.panoptic_on = False
179
+
180
+ train.max_iter = 270000
181
+ train.eval_period = 270000
182
+
183
+ lr_multiplier = L(WarmupParamScheduler)(
184
+ scheduler=L(MultiStepParamScheduler)(
185
+ values=[1.0, 0.1],
186
+ milestones=[225000],
187
+ num_updates=270000,
188
+ ),
189
+ warmup_length=2000 / 270000,
190
+ warmup_method="linear",
191
+ warmup_factor=0.001,
192
+ )
193
+
194
+ dataloader.train.total_batch_size = 32
195
+ dataloader.train.total_batch_size_list = [32, 32, 32, 32, 32, 32, 32, 32, 32]
196
+ dataloader.train.num_workers = 2
197
+ train.iter_size = 2
198
+
199
+ dataloader.wait_group = 2
200
+ dataloader.wait_time = 30 * 60
201
+
202
+ model.model_vision.dataset_prompts = [
203
+ "name",
204
+ "name",
205
+ "name",
206
+ "phrase",
207
+ "name",
208
+ "phrase",
209
+ "phrase",
210
+ "phrase",
211
+ "phrase",
212
+ "expression",
213
+ ]
214
+ model.model_vision.dataset_names = [
215
+ "lvis+stuffonly",
216
+ "objects365",
217
+ "openimages",
218
+ "vgregion",
219
+ "sa1b",
220
+ "refcoco-mixed_group-by-image",
221
+ "gqa",
222
+ "phrasecut",
223
+ "flickr30k",
224
+ "refcoco",
225
+ ]
226
+ model.model_vision.dataset_metas = dataloader.train.dataset.names + ["refcoco-mixed"]
227
+
228
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_48x2x270k.py ADDED
@@ -0,0 +1,225 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.nn as nn
2
+
3
+ from detectron2.config import LazyCall as L
4
+ from detectron2.layers import ShapeSpec
5
+ from detectron2.solver import WarmupParamScheduler
6
+ from detrex.modeling.neck import ChannelMapper
7
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
8
+
9
+ from ape.data.detection_utils import get_fed_loss_cls_weights
10
+ from ape.layers import VisionLanguageFusion
11
+ from ape.modeling.ape_deta import (
12
+ DeformableDETRSegmVL,
13
+ DeformableDetrTransformerDecoderVL,
14
+ DeformableDetrTransformerEncoderVL,
15
+ DeformableDetrTransformerVL,
16
+ )
17
+ from ape.modeling.text import EVA02CLIP
18
+
19
+ from ...common.backbone.vitl_eva02_clip import backbone
20
+ from ...common.data.lviscocococostuff_o365_oid_vgr_sa1b_refcoco_group_by_image_gqa_phrasecut_flickr30k_panoptic_lsj1024_cp import (
21
+ dataloader,
22
+ )
23
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
24
+ model,
25
+ optimizer,
26
+ train,
27
+ )
28
+
29
+ model.model_vision.backbone = backbone
30
+
31
+ train.init_checkpoint = (
32
+ "models/QuanSun/EVA-CLIP/EVA02_CLIP_L_336_psz14to16_s6B.pt?matching_heuristics=True"
33
+ )
34
+
35
+ model.model_language = L(EVA02CLIP)(
36
+ clip_model="EVA02-CLIP-bigE-14-plus",
37
+ cache_dir="models/QuanSun/EVA-CLIP/EVA02_CLIP_E_psz14_plus_s9B.pt",
38
+ )
39
+ model.model_vision.embed_dim_language = 1024
40
+
41
+ model.model_vision.neck = L(ChannelMapper)(
42
+ input_shapes={
43
+ "p2": ShapeSpec(channels=256),
44
+ "p3": ShapeSpec(channels=256),
45
+ "p4": ShapeSpec(channels=256),
46
+ "p5": ShapeSpec(channels=256),
47
+ "p6": ShapeSpec(channels=256),
48
+ },
49
+ in_features=["p2", "p3", "p4", "p5", "p6"],
50
+ out_channels=256,
51
+ num_outs=5,
52
+ kernel_size=1,
53
+ norm_layer=L(nn.GroupNorm)(num_groups=32, num_channels=256),
54
+ )
55
+
56
+ model.model_vision.mask_in_features = ["p2"]
57
+ model.model_vision.input_shapes = {
58
+ "p2": ShapeSpec(channels=256),
59
+ "p3": ShapeSpec(channels=256),
60
+ "p4": ShapeSpec(channels=256),
61
+ "p5": ShapeSpec(channels=256),
62
+ "p6": ShapeSpec(channels=256),
63
+ }
64
+
65
+ model.model_vision.transformer.encoder.num_layers = 6
66
+ model.model_vision.transformer.decoder.num_layers = 6
67
+ model.model_vision.transformer.encoder.embed_dim = 256
68
+ model.model_vision.transformer.decoder.embed_dim = 256
69
+ model.model_vision.embed_dim = 256
70
+ model.model_vision.backbone.out_channels = 256
71
+
72
+ model.model_vision.update(
73
+ _target_=DeformableDETRSegmVL,
74
+ )
75
+ model.model_vision.transformer.update(
76
+ _target_=DeformableDetrTransformerVL,
77
+ )
78
+ model.model_vision.transformer.encoder.update(
79
+ _target_=DeformableDetrTransformerEncoderVL,
80
+ )
81
+ model.model_vision.transformer.decoder.update(
82
+ _target_=DeformableDetrTransformerDecoderVL,
83
+ )
84
+
85
+
86
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
87
+ v_dim="${....embed_dim}",
88
+ l_dim="${....embed_dim_language}",
89
+ embed_dim=2048,
90
+ num_heads=8,
91
+ dropout=0.1,
92
+ drop_path=0.0,
93
+ init_values=1.0 / 6,
94
+ stable_softmax_2d=True,
95
+ clamp_min_for_underflow=True,
96
+ clamp_max_for_overflow=True,
97
+ use_checkpoint=True,
98
+ )
99
+ model.model_vision.transformer.encoder.use_act_checkpoint = True
100
+
101
+ model.model_vision.text_feature_bank = True
102
+ model.model_vision.text_feature_reduce_before_fusion = True
103
+ model.model_vision.text_feature_batch_repeat = True
104
+ model.model_vision.expression_cumulative_gt_class = True
105
+ model.model_vision.name_prompt_fusion_type = "zero"
106
+
107
+ model.model_vision.num_classes = 1256
108
+ model.model_vision.select_box_nums_for_evaluation = 300
109
+
110
+ criterion = model.model_vision.criterion[0]
111
+ del criterion.use_fed_loss
112
+ del criterion.get_fed_loss_cls_weights
113
+ del criterion.fed_loss_num_classes
114
+ model.model_vision.criterion = [criterion for _ in range(10)]
115
+ for criterion, num_classes in zip(
116
+ model.model_vision.criterion, [1256, 365, 601, 200, 1, 200, 200, 200, 200, 200]
117
+ ):
118
+ criterion.num_classes = num_classes
119
+
120
+ dataloader.train.mapper.max_num_phrase = 100
121
+ dataloader.train.mapper.nms_thresh_phrase = 0.6
122
+
123
+ model.model_vision.criterion[0].use_fed_loss = True
124
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
125
+ dataloader.train.dataset.names[0], 0.5
126
+ )
127
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
128
+ model.model_vision.criterion[0].fed_loss_pad_type = "cat"
129
+
130
+ model.model_vision.criterion[2].use_fed_loss = True
131
+ model.model_vision.criterion[2].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
132
+ dataloader.train.dataset.names[2], 0.5
133
+ )
134
+ model.model_vision.criterion[2].fed_loss_num_classes = 50
135
+ model.model_vision.criterion[2].fed_loss_pad_type = "cat"
136
+
137
+ model.model_vision.criterion[3].weight_dict["loss_class_enc"] = 0.0
138
+ for k, v in model.model_vision.criterion[3].weight_dict.items():
139
+ if "_enc" in k:
140
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
141
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
142
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
143
+
144
+ for k, v in model.model_vision.criterion[4].weight_dict.items():
145
+ if "_class" in k and "_enc" not in k:
146
+ model.model_vision.criterion[4].weight_dict.update({k: 0.0})
147
+
148
+ model.model_vision.criterion[5].weight_dict["loss_class_enc"] = 0.0
149
+
150
+ model.model_vision.criterion[6].weight_dict["loss_class_enc"] = 0.0
151
+ for k, v in model.model_vision.criterion[6].weight_dict.items():
152
+ if "_enc" in k:
153
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
154
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
155
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
156
+
157
+ model.model_vision.criterion[7].weight_dict["loss_class_enc"] = 0.0
158
+ for k, v in model.model_vision.criterion[7].weight_dict.items():
159
+ if "_enc" in k:
160
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
161
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
162
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
163
+
164
+ model.model_vision.criterion[8].weight_dict["loss_class_enc"] = 0.0
165
+ for k, v in model.model_vision.criterion[8].weight_dict.items():
166
+ if "_enc" in k:
167
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
168
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
169
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
170
+
171
+ model.model_vision.stuff_dataset_learn_thing = False
172
+ model.model_vision.stuff_prob_thing = 0.9
173
+ model.model_vision.transformer.proposal_ambiguous = 1
174
+
175
+ model.model_vision.instance_on = True
176
+ model.model_vision.semantic_on = True
177
+ model.model_vision.panoptic_on = False
178
+
179
+ train.max_iter = 270000 * 2
180
+ train.eval_period = 270000 * 2
181
+
182
+ lr_multiplier = L(WarmupParamScheduler)(
183
+ scheduler=L(MultiStepParamScheduler)(
184
+ values=[1.0, 0.1],
185
+ milestones=[225000 * 2],
186
+ num_updates=270000 * 2,
187
+ ),
188
+ warmup_length=2000 / 270000,
189
+ warmup_method="linear",
190
+ warmup_factor=0.001,
191
+ )
192
+
193
+ dataloader.train.total_batch_size = 48
194
+ dataloader.train.total_batch_size_list = [48, 48, 48, 48, 48, 48, 48, 48, 48]
195
+ dataloader.train.num_workers = 2
196
+ train.iter_size = 2
197
+
198
+
199
+ model.model_vision.dataset_prompts = [
200
+ "name",
201
+ "name",
202
+ "name",
203
+ "phrase",
204
+ "name",
205
+ "phrase",
206
+ "phrase",
207
+ "phrase",
208
+ "phrase",
209
+ "expression",
210
+ ]
211
+ model.model_vision.dataset_names = [
212
+ "lvis+stuffonly",
213
+ "objects365",
214
+ "openimages",
215
+ "vgregion",
216
+ "sa1b",
217
+ "refcoco-mixed_group-by-image",
218
+ "gqa",
219
+ "phrasecut",
220
+ "flickr30k",
221
+ "refcoco",
222
+ ]
223
+ model.model_vision.dataset_metas = dataloader.train.dataset.names + ["refcoco-mixed"]
224
+
225
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1024_cp_64x1x270k.py ADDED
@@ -0,0 +1,228 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.nn as nn
2
+
3
+ from detectron2.config import LazyCall as L
4
+ from detectron2.layers import ShapeSpec
5
+ from detectron2.solver import WarmupParamScheduler
6
+ from detrex.modeling.neck import ChannelMapper
7
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
8
+
9
+ from ape.data.detection_utils import get_fed_loss_cls_weights
10
+ from ape.layers import VisionLanguageFusion
11
+ from ape.modeling.ape_deta import (
12
+ DeformableDETRSegmVL,
13
+ DeformableDetrTransformerDecoderVL,
14
+ DeformableDetrTransformerEncoderVL,
15
+ DeformableDetrTransformerVL,
16
+ )
17
+ from ape.modeling.text import EVA02CLIP
18
+
19
+ from ...common.backbone.vitl_eva02_clip import backbone
20
+ from ...common.data.lviscocococostuff_o365_oid_vgr_sa1b_refcoco_group_by_image_gqa_phrasecut_flickr30k_panoptic_lsj1024_cp import (
21
+ dataloader,
22
+ )
23
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
24
+ model,
25
+ optimizer,
26
+ train,
27
+ )
28
+
29
+ model.model_vision.backbone = backbone
30
+
31
+ train.init_checkpoint = (
32
+ "models/QuanSun/EVA-CLIP/EVA02_CLIP_L_336_psz14to16_s6B.pt?matching_heuristics=True"
33
+ )
34
+
35
+ model.model_language = L(EVA02CLIP)(
36
+ clip_model="EVA02-CLIP-bigE-14-plus",
37
+ cache_dir="models/QuanSun/EVA-CLIP/EVA02_CLIP_E_psz14_plus_s9B.pt",
38
+ dtype="float16",
39
+ )
40
+ model.model_vision.embed_dim_language = 1024
41
+
42
+ model.model_vision.neck = L(ChannelMapper)(
43
+ input_shapes={
44
+ "p2": ShapeSpec(channels=256),
45
+ "p3": ShapeSpec(channels=256),
46
+ "p4": ShapeSpec(channels=256),
47
+ "p5": ShapeSpec(channels=256),
48
+ "p6": ShapeSpec(channels=256),
49
+ },
50
+ in_features=["p2", "p3", "p4", "p5", "p6"],
51
+ out_channels=256,
52
+ num_outs=5,
53
+ kernel_size=1,
54
+ norm_layer=L(nn.GroupNorm)(num_groups=32, num_channels=256),
55
+ )
56
+
57
+ model.model_vision.mask_in_features = ["p2"]
58
+ model.model_vision.input_shapes = {
59
+ "p2": ShapeSpec(channels=256),
60
+ "p3": ShapeSpec(channels=256),
61
+ "p4": ShapeSpec(channels=256),
62
+ "p5": ShapeSpec(channels=256),
63
+ "p6": ShapeSpec(channels=256),
64
+ }
65
+
66
+ model.model_vision.transformer.encoder.num_layers = 6
67
+ model.model_vision.transformer.decoder.num_layers = 6
68
+ model.model_vision.transformer.encoder.embed_dim = 256
69
+ model.model_vision.transformer.decoder.embed_dim = 256
70
+ model.model_vision.embed_dim = 256
71
+ model.model_vision.backbone.out_channels = 256
72
+
73
+ model.model_vision.update(
74
+ _target_=DeformableDETRSegmVL,
75
+ )
76
+ model.model_vision.transformer.update(
77
+ _target_=DeformableDetrTransformerVL,
78
+ )
79
+ model.model_vision.transformer.encoder.update(
80
+ _target_=DeformableDetrTransformerEncoderVL,
81
+ )
82
+ model.model_vision.transformer.decoder.update(
83
+ _target_=DeformableDetrTransformerDecoderVL,
84
+ )
85
+
86
+
87
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
88
+ v_dim="${....embed_dim}",
89
+ l_dim="${....embed_dim_language}",
90
+ embed_dim=2048,
91
+ num_heads=8,
92
+ dropout=0.1,
93
+ drop_path=0.0,
94
+ init_values=1.0 / 6,
95
+ stable_softmax_2d=True,
96
+ clamp_min_for_underflow=True,
97
+ clamp_max_for_overflow=True,
98
+ use_checkpoint=True,
99
+ )
100
+ model.model_vision.transformer.encoder.use_act_checkpoint = True
101
+
102
+ model.model_vision.text_feature_bank = True
103
+ model.model_vision.text_feature_reduce_before_fusion = True
104
+ model.model_vision.text_feature_batch_repeat = True
105
+ model.model_vision.expression_cumulative_gt_class = True
106
+ model.model_vision.name_prompt_fusion_type = "zero"
107
+
108
+ model.model_vision.num_classes = 1256
109
+ model.model_vision.select_box_nums_for_evaluation = 300
110
+
111
+ criterion = model.model_vision.criterion[0]
112
+ del criterion.use_fed_loss
113
+ del criterion.get_fed_loss_cls_weights
114
+ del criterion.fed_loss_num_classes
115
+ model.model_vision.criterion = [criterion for _ in range(10)]
116
+ for criterion, num_classes in zip(
117
+ model.model_vision.criterion, [1256, 365, 601, 256, 1, 256, 256, 256, 256, 256]
118
+ ):
119
+ criterion.num_classes = num_classes
120
+
121
+ dataloader.train.mapper.max_num_phrase = 128
122
+ dataloader.train.mapper.nms_thresh_phrase = 0.6
123
+
124
+ model.model_vision.criterion[0].use_fed_loss = True
125
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
126
+ dataloader.train.dataset.names[0], 0.5
127
+ )
128
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
129
+ model.model_vision.criterion[0].fed_loss_pad_type = "cat"
130
+
131
+ model.model_vision.criterion[2].use_fed_loss = True
132
+ model.model_vision.criterion[2].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
133
+ dataloader.train.dataset.names[2], 0.5
134
+ )
135
+ model.model_vision.criterion[2].fed_loss_num_classes = 50
136
+ model.model_vision.criterion[2].fed_loss_pad_type = "cat"
137
+
138
+ model.model_vision.criterion[3].weight_dict["loss_class_enc"] = 0.0
139
+ for k, v in model.model_vision.criterion[3].weight_dict.items():
140
+ if "_enc" in k:
141
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
142
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
143
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
144
+
145
+ for k, v in model.model_vision.criterion[4].weight_dict.items():
146
+ if "_class" in k and "_enc" not in k:
147
+ model.model_vision.criterion[4].weight_dict.update({k: 0.0})
148
+
149
+ model.model_vision.criterion[5].weight_dict["loss_class_enc"] = 0.0
150
+
151
+ model.model_vision.criterion[6].weight_dict["loss_class_enc"] = 0.0
152
+ for k, v in model.model_vision.criterion[6].weight_dict.items():
153
+ if "_enc" in k:
154
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
155
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
156
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
157
+
158
+ model.model_vision.criterion[7].weight_dict["loss_class_enc"] = 0.0
159
+ for k, v in model.model_vision.criterion[7].weight_dict.items():
160
+ if "_enc" in k:
161
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
162
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
163
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
164
+
165
+ model.model_vision.criterion[8].weight_dict["loss_class_enc"] = 0.0
166
+ for k, v in model.model_vision.criterion[8].weight_dict.items():
167
+ if "_enc" in k:
168
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
169
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
170
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
171
+
172
+ model.model_vision.stuff_dataset_learn_thing = False
173
+ model.model_vision.stuff_prob_thing = 0.9
174
+ model.model_vision.transformer.proposal_ambiguous = 1
175
+
176
+ model.model_vision.instance_on = True
177
+ model.model_vision.semantic_on = True
178
+ model.model_vision.panoptic_on = False
179
+
180
+ train.max_iter = 270000
181
+ train.eval_period = 270000
182
+
183
+ lr_multiplier = L(WarmupParamScheduler)(
184
+ scheduler=L(MultiStepParamScheduler)(
185
+ values=[1.0, 0.1],
186
+ milestones=[225000],
187
+ num_updates=270000,
188
+ ),
189
+ warmup_length=2000 / 270000,
190
+ warmup_method="linear",
191
+ warmup_factor=0.001,
192
+ )
193
+
194
+ dataloader.train.total_batch_size = 64
195
+ dataloader.train.total_batch_size_list = [64, 64, 64, 64, 64, 64, 64, 64, 64]
196
+ dataloader.train.num_workers = 2
197
+ train.iter_size = 1
198
+
199
+ dataloader.wait_group = 2
200
+ dataloader.wait_time = 30 * 60
201
+
202
+ model.model_vision.dataset_prompts = [
203
+ "name",
204
+ "name",
205
+ "name",
206
+ "phrase",
207
+ "name",
208
+ "phrase",
209
+ "phrase",
210
+ "phrase",
211
+ "phrase",
212
+ "expression",
213
+ ]
214
+ model.model_vision.dataset_names = [
215
+ "lvis+stuffonly",
216
+ "objects365",
217
+ "openimages",
218
+ "vgregion",
219
+ "sa1b",
220
+ "refcoco-mixed_group-by-image",
221
+ "gqa",
222
+ "phrasecut",
223
+ "flickr30k",
224
+ "refcoco",
225
+ ]
226
+ model.model_vision.dataset_metas = dataloader.train.dataset.names + ["refcoco-mixed"]
227
+
228
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1536_cp_08x8x270k.py ADDED
@@ -0,0 +1,225 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.nn as nn
2
+
3
+ from detectron2.config import LazyCall as L
4
+ from detectron2.layers import ShapeSpec
5
+ from detectron2.solver import WarmupParamScheduler
6
+ from detrex.modeling.neck import ChannelMapper
7
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
8
+
9
+ from ape.data.detection_utils import get_fed_loss_cls_weights
10
+ from ape.layers import VisionLanguageFusion
11
+ from ape.modeling.ape_deta import (
12
+ DeformableDETRSegmVL,
13
+ DeformableDetrTransformerDecoderVL,
14
+ DeformableDetrTransformerEncoderVL,
15
+ DeformableDetrTransformerVL,
16
+ )
17
+ from ape.modeling.text import EVA02CLIP
18
+
19
+ from ...common.backbone.vitl_eva02_clip_1536 import backbone
20
+ from ...common.data.lviscocococostuff_o365_oid_vgr_sa1b_refcoco_group_by_image_gqa_phrasecut_flickr30k_panoptic_lsj1536_cp import (
21
+ dataloader,
22
+ )
23
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
24
+ model,
25
+ optimizer,
26
+ train,
27
+ )
28
+
29
+ model.model_vision.backbone = backbone
30
+
31
+ train.init_checkpoint = (
32
+ "models/QuanSun/EVA-CLIP/EVA02_CLIP_L_336_psz14to16_s6B.pt?matching_heuristics=True"
33
+ )
34
+
35
+ model.model_language = L(EVA02CLIP)(
36
+ clip_model="EVA02-CLIP-bigE-14-plus",
37
+ cache_dir="models/QuanSun/EVA-CLIP/EVA02_CLIP_E_psz14_plus_s9B.pt",
38
+ dtype="float16",
39
+ )
40
+ model.model_vision.embed_dim_language = 1024
41
+
42
+ model.model_vision.neck = L(ChannelMapper)(
43
+ input_shapes={
44
+ "p2": ShapeSpec(channels=256),
45
+ "p3": ShapeSpec(channels=256),
46
+ "p4": ShapeSpec(channels=256),
47
+ "p5": ShapeSpec(channels=256),
48
+ "p6": ShapeSpec(channels=256),
49
+ },
50
+ in_features=["p2", "p3", "p4", "p5", "p6"],
51
+ out_channels=256,
52
+ num_outs=5,
53
+ kernel_size=1,
54
+ norm_layer=L(nn.GroupNorm)(num_groups=32, num_channels=256),
55
+ )
56
+
57
+ model.model_vision.mask_in_features = ["p2"]
58
+ model.model_vision.input_shapes = {
59
+ "p2": ShapeSpec(channels=256),
60
+ "p3": ShapeSpec(channels=256),
61
+ "p4": ShapeSpec(channels=256),
62
+ "p5": ShapeSpec(channels=256),
63
+ "p6": ShapeSpec(channels=256),
64
+ }
65
+
66
+ model.model_vision.transformer.encoder.num_layers = 6
67
+ model.model_vision.transformer.decoder.num_layers = 6
68
+ model.model_vision.transformer.encoder.embed_dim = 256
69
+ model.model_vision.transformer.decoder.embed_dim = 256
70
+ model.model_vision.embed_dim = 256
71
+ model.model_vision.backbone.out_channels = 256
72
+
73
+ model.model_vision.update(
74
+ _target_=DeformableDETRSegmVL,
75
+ )
76
+ model.model_vision.transformer.update(
77
+ _target_=DeformableDetrTransformerVL,
78
+ )
79
+ model.model_vision.transformer.encoder.update(
80
+ _target_=DeformableDetrTransformerEncoderVL,
81
+ )
82
+ model.model_vision.transformer.decoder.update(
83
+ _target_=DeformableDetrTransformerDecoderVL,
84
+ )
85
+
86
+
87
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
88
+ v_dim="${....embed_dim}",
89
+ l_dim="${....embed_dim_language}",
90
+ embed_dim=2048,
91
+ num_heads=8,
92
+ dropout=0.1,
93
+ drop_path=0.0,
94
+ init_values=1.0 / 6,
95
+ stable_softmax_2d=True,
96
+ clamp_min_for_underflow=True,
97
+ clamp_max_for_overflow=True,
98
+ use_checkpoint=True,
99
+ )
100
+ model.model_vision.transformer.encoder.use_act_checkpoint = True
101
+ model.model_vision.transformer.decoder.use_act_checkpoint = True
102
+
103
+ model.model_vision.text_feature_bank = True
104
+ model.model_vision.text_feature_reduce_before_fusion = True
105
+ model.model_vision.text_feature_batch_repeat = True
106
+ model.model_vision.expression_cumulative_gt_class = True
107
+ model.model_vision.name_prompt_fusion_type = "zero"
108
+
109
+ model.model_vision.num_classes = 1256
110
+ model.model_vision.select_box_nums_for_evaluation = 300
111
+
112
+ criterion = model.model_vision.criterion[0]
113
+ del criterion.use_fed_loss
114
+ del criterion.get_fed_loss_cls_weights
115
+ del criterion.fed_loss_num_classes
116
+ model.model_vision.criterion = [criterion for _ in range(10)]
117
+ for criterion, num_classes in zip(
118
+ model.model_vision.criterion, [1256, 365, 601, 200, 1, 200, 200, 200, 200, 200]
119
+ ):
120
+ criterion.num_classes = num_classes
121
+
122
+ dataloader.train.mapper.max_num_phrase = 100
123
+ dataloader.train.mapper.nms_thresh_phrase = 0.6
124
+
125
+ model.model_vision.criterion[0].use_fed_loss = True
126
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
127
+ dataloader.train.dataset.names[0], 0.5
128
+ )
129
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
130
+ model.model_vision.criterion[0].fed_loss_pad_type = "cat"
131
+
132
+ model.model_vision.criterion[2].use_fed_loss = True
133
+ model.model_vision.criterion[2].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
134
+ dataloader.train.dataset.names[2], 0.5
135
+ )
136
+ model.model_vision.criterion[2].fed_loss_num_classes = 50
137
+ model.model_vision.criterion[2].fed_loss_pad_type = "cat"
138
+
139
+ model.model_vision.criterion[3].weight_dict["loss_class_enc"] = 0.0
140
+ for k, v in model.model_vision.criterion[3].weight_dict.items():
141
+ if "_enc" in k:
142
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
143
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
144
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
145
+
146
+ for k, v in model.model_vision.criterion[4].weight_dict.items():
147
+ if "_class" in k and "_enc" not in k:
148
+ model.model_vision.criterion[4].weight_dict.update({k: 0.0})
149
+
150
+ model.model_vision.criterion[5].weight_dict["loss_class_enc"] = 0.0
151
+
152
+ model.model_vision.criterion[6].weight_dict["loss_class_enc"] = 0.0
153
+ for k, v in model.model_vision.criterion[6].weight_dict.items():
154
+ if "_enc" in k:
155
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
156
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
157
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
158
+
159
+ model.model_vision.criterion[7].weight_dict["loss_class_enc"] = 0.0
160
+ for k, v in model.model_vision.criterion[7].weight_dict.items():
161
+ if "_enc" in k:
162
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
163
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
164
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
165
+
166
+ model.model_vision.criterion[8].weight_dict["loss_class_enc"] = 0.0
167
+ for k, v in model.model_vision.criterion[8].weight_dict.items():
168
+ if "_enc" in k:
169
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
170
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
171
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
172
+
173
+ model.model_vision.stuff_dataset_learn_thing = False
174
+ model.model_vision.stuff_prob_thing = 0.9
175
+ model.model_vision.transformer.proposal_ambiguous = 1
176
+
177
+ model.model_vision.instance_on = True
178
+ model.model_vision.semantic_on = True
179
+ model.model_vision.panoptic_on = False
180
+
181
+ train.max_iter = 270000 * 8
182
+ train.eval_period = 270000 * 8
183
+
184
+ lr_multiplier = L(WarmupParamScheduler)(
185
+ scheduler=L(MultiStepParamScheduler)(
186
+ values=[1.0, 0.1],
187
+ milestones=[225000 * 8],
188
+ num_updates=270000 * 8,
189
+ ),
190
+ warmup_length=2000 / 270000,
191
+ warmup_method="linear",
192
+ warmup_factor=0.001,
193
+ )
194
+
195
+ dataloader.train.total_batch_size = 8
196
+ dataloader.train.total_batch_size_list = [8, 8, 8, 8, 8, 8, 8, 8, 8]
197
+ train.iter_size = 8
198
+
199
+ model.model_vision.dataset_prompts = [
200
+ "name",
201
+ "name",
202
+ "name",
203
+ "phrase",
204
+ "name",
205
+ "phrase",
206
+ "phrase",
207
+ "phrase",
208
+ "phrase",
209
+ "expression",
210
+ ]
211
+ model.model_vision.dataset_names = [
212
+ "lvis+stuffonly",
213
+ "objects365",
214
+ "openimages",
215
+ "vgregion",
216
+ "sa1b",
217
+ "refcoco-mixed_group-by-image",
218
+ "gqa",
219
+ "phrasecut",
220
+ "flickr30k",
221
+ "refcoco",
222
+ ]
223
+ model.model_vision.dataset_metas = dataloader.train.dataset.names + ["refcoco-mixed"]
224
+
225
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1536_cp_32x2x270k.py ADDED
@@ -0,0 +1,222 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.nn as nn
2
+
3
+ from detectron2.config import LazyCall as L
4
+ from detectron2.layers import ShapeSpec
5
+ from detectron2.solver import WarmupParamScheduler
6
+ from detrex.modeling.neck import ChannelMapper
7
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
8
+
9
+ from ape.data.detection_utils import get_fed_loss_cls_weights
10
+ from ape.layers import VisionLanguageFusion
11
+ from ape.modeling.ape_deta import (
12
+ DeformableDETRSegmVL,
13
+ DeformableDetrTransformerDecoderVL,
14
+ DeformableDetrTransformerEncoderVL,
15
+ DeformableDetrTransformerVL,
16
+ )
17
+ from ape.modeling.text import EVA02CLIP
18
+
19
+ from ...common.backbone.vitl_eva02_clip_1536 import backbone
20
+ from ...common.data.lviscocococostuff_o365_oid_vgr_sa1b_refcoco_group_by_image_gqa_phrasecut_flickr30k_panoptic_lsj1536_cp import (
21
+ dataloader,
22
+ )
23
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
24
+ model,
25
+ optimizer,
26
+ train,
27
+ )
28
+
29
+ model.model_vision.backbone = backbone
30
+
31
+ train.init_checkpoint = (
32
+ "models/QuanSun/EVA-CLIP/EVA02_CLIP_L_336_psz14to16_s6B.pt?matching_heuristics=True"
33
+ )
34
+
35
+ model.model_language = L(EVA02CLIP)(
36
+ clip_model="EVA02-CLIP-bigE-14-plus",
37
+ cache_dir="models/QuanSun/EVA-CLIP/EVA02_CLIP_E_psz14_plus_s9B.pt",
38
+ )
39
+ model.model_vision.embed_dim_language = 1024
40
+
41
+ model.model_vision.neck = L(ChannelMapper)(
42
+ input_shapes={
43
+ "p2": ShapeSpec(channels=256),
44
+ "p3": ShapeSpec(channels=256),
45
+ "p4": ShapeSpec(channels=256),
46
+ "p5": ShapeSpec(channels=256),
47
+ "p6": ShapeSpec(channels=256),
48
+ },
49
+ in_features=["p2", "p3", "p4", "p5", "p6"],
50
+ out_channels=256,
51
+ num_outs=5,
52
+ kernel_size=1,
53
+ norm_layer=L(nn.GroupNorm)(num_groups=32, num_channels=256),
54
+ )
55
+
56
+ model.model_vision.mask_in_features = ["p2"]
57
+ model.model_vision.input_shapes = {
58
+ "p2": ShapeSpec(channels=256),
59
+ "p3": ShapeSpec(channels=256),
60
+ "p4": ShapeSpec(channels=256),
61
+ "p5": ShapeSpec(channels=256),
62
+ "p6": ShapeSpec(channels=256),
63
+ }
64
+
65
+ model.model_vision.transformer.encoder.num_layers = 9
66
+ model.model_vision.transformer.decoder.num_layers = 9
67
+ model.model_vision.transformer.encoder.embed_dim = 256
68
+ model.model_vision.transformer.decoder.embed_dim = 256
69
+ model.model_vision.embed_dim = 256
70
+ model.model_vision.backbone.out_channels = 256
71
+
72
+ model.model_vision.update(
73
+ _target_=DeformableDETRSegmVL,
74
+ )
75
+ model.model_vision.transformer.update(
76
+ _target_=DeformableDetrTransformerVL,
77
+ )
78
+ model.model_vision.transformer.encoder.update(
79
+ _target_=DeformableDetrTransformerEncoderVL,
80
+ )
81
+ model.model_vision.transformer.decoder.update(
82
+ _target_=DeformableDetrTransformerDecoderVL,
83
+ )
84
+
85
+
86
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
87
+ v_dim="${....embed_dim}",
88
+ l_dim="${....embed_dim_language}",
89
+ embed_dim=2048,
90
+ num_heads=8,
91
+ dropout=0.1,
92
+ drop_path=0.0,
93
+ init_values=1.0 / 6,
94
+ stable_softmax_2d=True,
95
+ clamp_min_for_underflow=True,
96
+ clamp_max_for_overflow=True,
97
+ use_checkpoint=True,
98
+ )
99
+
100
+ model.model_vision.text_feature_bank = True
101
+ model.model_vision.text_feature_reduce_before_fusion = True
102
+ model.model_vision.text_feature_batch_repeat = True
103
+ model.model_vision.expression_cumulative_gt_class = True
104
+ model.model_vision.name_prompt_fusion_type = "zero"
105
+
106
+ model.model_vision.num_classes = 1256
107
+ model.model_vision.select_box_nums_for_evaluation = 300
108
+
109
+ criterion = model.model_vision.criterion[0]
110
+ del criterion.use_fed_loss
111
+ del criterion.get_fed_loss_cls_weights
112
+ del criterion.fed_loss_num_classes
113
+ model.model_vision.criterion = [criterion for _ in range(10)]
114
+ for criterion, num_classes in zip(
115
+ model.model_vision.criterion, [1256, 365, 601, 200, 1, 200, 200, 200, 200, 200]
116
+ ):
117
+ criterion.num_classes = num_classes
118
+
119
+ dataloader.train.mapper.max_num_phrase = 100
120
+ dataloader.train.mapper.nms_thresh_phrase = 0.6
121
+
122
+ model.model_vision.criterion[0].use_fed_loss = True
123
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
124
+ dataloader.train.dataset.names[0], 0.5
125
+ )
126
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
127
+ model.model_vision.criterion[0].fed_loss_pad_type = "cat"
128
+
129
+ model.model_vision.criterion[2].use_fed_loss = True
130
+ model.model_vision.criterion[2].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
131
+ dataloader.train.dataset.names[2], 0.5
132
+ )
133
+ model.model_vision.criterion[2].fed_loss_num_classes = 50
134
+ model.model_vision.criterion[2].fed_loss_pad_type = "cat"
135
+
136
+ model.model_vision.criterion[3].weight_dict["loss_class_enc"] = 0.0
137
+ for k, v in model.model_vision.criterion[3].weight_dict.items():
138
+ if "_enc" in k:
139
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
140
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
141
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
142
+
143
+ for k, v in model.model_vision.criterion[4].weight_dict.items():
144
+ if "_class" in k and "_enc" not in k:
145
+ model.model_vision.criterion[4].weight_dict.update({k: 0.0})
146
+
147
+ model.model_vision.criterion[5].weight_dict["loss_class_enc"] = 0.0
148
+
149
+ model.model_vision.criterion[6].weight_dict["loss_class_enc"] = 0.0
150
+ for k, v in model.model_vision.criterion[6].weight_dict.items():
151
+ if "_enc" in k:
152
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
153
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
154
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
155
+
156
+ model.model_vision.criterion[7].weight_dict["loss_class_enc"] = 0.0
157
+ for k, v in model.model_vision.criterion[7].weight_dict.items():
158
+ if "_enc" in k:
159
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
160
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
161
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
162
+
163
+ model.model_vision.criterion[8].weight_dict["loss_class_enc"] = 0.0
164
+ for k, v in model.model_vision.criterion[8].weight_dict.items():
165
+ if "_enc" in k:
166
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
167
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
168
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
169
+
170
+ model.model_vision.stuff_dataset_learn_thing = False
171
+ model.model_vision.stuff_prob_thing = 0.9
172
+ model.model_vision.transformer.proposal_ambiguous = 1
173
+
174
+ model.model_vision.instance_on = True
175
+ model.model_vision.semantic_on = True
176
+ model.model_vision.panoptic_on = False
177
+
178
+ train.max_iter = 270000 * 2
179
+ train.eval_period = 270000 * 2
180
+
181
+ lr_multiplier = L(WarmupParamScheduler)(
182
+ scheduler=L(MultiStepParamScheduler)(
183
+ values=[1.0, 0.1],
184
+ milestones=[225000 * 2],
185
+ num_updates=270000 * 2,
186
+ ),
187
+ warmup_length=2000 / 270000,
188
+ warmup_method="linear",
189
+ warmup_factor=0.001,
190
+ )
191
+
192
+ dataloader.train.total_batch_size = 32
193
+ dataloader.train.total_batch_size_list = [32, 32, 32, 32, 32, 32, 32, 32, 32]
194
+ train.iter_size = 2
195
+
196
+ model.model_vision.dataset_prompts = [
197
+ "name",
198
+ "name",
199
+ "name",
200
+ "phrase",
201
+ "name",
202
+ "phrase",
203
+ "phrase",
204
+ "phrase",
205
+ "phrase",
206
+ "expression",
207
+ ]
208
+ model.model_vision.dataset_names = [
209
+ "lvis+stuffonly",
210
+ "objects365",
211
+ "openimages",
212
+ "vgregion",
213
+ "sa1b",
214
+ "refcoco-mixed_group-by-image",
215
+ "gqa",
216
+ "phrasecut",
217
+ "flickr30k",
218
+ "refcoco",
219
+ ]
220
+ model.model_vision.dataset_metas = dataloader.train.dataset.names + ["refcoco-mixed"]
221
+
222
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_clip_vlf_lsj1536_cp_64x270k.py ADDED
@@ -0,0 +1,222 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.nn as nn
2
+
3
+ from detectron2.config import LazyCall as L
4
+ from detectron2.layers import ShapeSpec
5
+ from detectron2.solver import WarmupParamScheduler
6
+ from detrex.modeling.neck import ChannelMapper
7
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
8
+
9
+ from ape.data.detection_utils import get_fed_loss_cls_weights
10
+ from ape.layers import VisionLanguageFusion
11
+ from ape.modeling.ape_deta import (
12
+ DeformableDETRSegmVL,
13
+ DeformableDetrTransformerDecoderVL,
14
+ DeformableDetrTransformerEncoderVL,
15
+ DeformableDetrTransformerVL,
16
+ )
17
+ from ape.modeling.text import EVA02CLIP
18
+
19
+ from ...common.backbone.vitl_eva02_clip_1536 import backbone
20
+ from ...common.data.lviscocococostuff_o365_oid_vgr_sa1b_refcoco_group_by_image_gqa_phrasecut_flickr30k_panoptic_lsj1536_cp import (
21
+ dataloader,
22
+ )
23
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
24
+ model,
25
+ optimizer,
26
+ train,
27
+ )
28
+
29
+ model.model_vision.backbone = backbone
30
+
31
+ train.init_checkpoint = (
32
+ "models/QuanSun/EVA-CLIP/EVA02_CLIP_L_336_psz14to16_s6B.pt?matching_heuristics=True"
33
+ )
34
+
35
+ model.model_language = L(EVA02CLIP)(
36
+ clip_model="EVA02-CLIP-bigE-14-plus",
37
+ cache_dir="models/QuanSun/EVA-CLIP/EVA02_CLIP_E_psz14_plus_s9B.pt",
38
+ )
39
+ model.model_vision.embed_dim_language = 1024
40
+
41
+ model.model_vision.neck = L(ChannelMapper)(
42
+ input_shapes={
43
+ "p2": ShapeSpec(channels=256),
44
+ "p3": ShapeSpec(channels=256),
45
+ "p4": ShapeSpec(channels=256),
46
+ "p5": ShapeSpec(channels=256),
47
+ "p6": ShapeSpec(channels=256),
48
+ },
49
+ in_features=["p2", "p3", "p4", "p5", "p6"],
50
+ out_channels=256,
51
+ num_outs=5,
52
+ kernel_size=1,
53
+ norm_layer=L(nn.GroupNorm)(num_groups=32, num_channels=256),
54
+ )
55
+
56
+ model.model_vision.mask_in_features = ["p2"]
57
+ model.model_vision.input_shapes = {
58
+ "p2": ShapeSpec(channels=256),
59
+ "p3": ShapeSpec(channels=256),
60
+ "p4": ShapeSpec(channels=256),
61
+ "p5": ShapeSpec(channels=256),
62
+ "p6": ShapeSpec(channels=256),
63
+ }
64
+
65
+ model.model_vision.transformer.encoder.num_layers = 9
66
+ model.model_vision.transformer.decoder.num_layers = 9
67
+ model.model_vision.transformer.encoder.embed_dim = 256
68
+ model.model_vision.transformer.decoder.embed_dim = 256
69
+ model.model_vision.embed_dim = 256
70
+ model.model_vision.backbone.out_channels = 256
71
+
72
+ model.model_vision.update(
73
+ _target_=DeformableDETRSegmVL,
74
+ )
75
+ model.model_vision.transformer.update(
76
+ _target_=DeformableDetrTransformerVL,
77
+ )
78
+ model.model_vision.transformer.encoder.update(
79
+ _target_=DeformableDetrTransformerEncoderVL,
80
+ )
81
+ model.model_vision.transformer.decoder.update(
82
+ _target_=DeformableDetrTransformerDecoderVL,
83
+ )
84
+
85
+
86
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
87
+ v_dim="${....embed_dim}",
88
+ l_dim="${....embed_dim_language}",
89
+ embed_dim=2048,
90
+ num_heads=8,
91
+ dropout=0.1,
92
+ drop_path=0.0,
93
+ init_values=1.0 / 6,
94
+ stable_softmax_2d=True,
95
+ clamp_min_for_underflow=True,
96
+ clamp_max_for_overflow=True,
97
+ use_checkpoint=True,
98
+ )
99
+
100
+ model.model_vision.text_feature_bank = True
101
+ model.model_vision.text_feature_reduce_before_fusion = True
102
+ model.model_vision.text_feature_batch_repeat = True
103
+ model.model_vision.expression_cumulative_gt_class = True
104
+ model.model_vision.name_prompt_fusion_type = "zero"
105
+
106
+ model.model_vision.num_classes = 1256
107
+ model.model_vision.select_box_nums_for_evaluation = 300
108
+
109
+ criterion = model.model_vision.criterion[0]
110
+ del criterion.use_fed_loss
111
+ del criterion.get_fed_loss_cls_weights
112
+ del criterion.fed_loss_num_classes
113
+ model.model_vision.criterion = [criterion for _ in range(10)]
114
+ for criterion, num_classes in zip(
115
+ model.model_vision.criterion, [1256, 365, 601, 200, 1, 200, 200, 200, 200, 200]
116
+ ):
117
+ criterion.num_classes = num_classes
118
+
119
+ dataloader.train.mapper.max_num_phrase = 100
120
+ dataloader.train.mapper.nms_thresh_phrase = 0.6
121
+
122
+ model.model_vision.criterion[0].use_fed_loss = True
123
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
124
+ dataloader.train.dataset.names[0], 0.5
125
+ )
126
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
127
+ model.model_vision.criterion[0].fed_loss_pad_type = "cat"
128
+
129
+ model.model_vision.criterion[2].use_fed_loss = True
130
+ model.model_vision.criterion[2].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
131
+ dataloader.train.dataset.names[2], 0.5
132
+ )
133
+ model.model_vision.criterion[2].fed_loss_num_classes = 50
134
+ model.model_vision.criterion[2].fed_loss_pad_type = "cat"
135
+
136
+ model.model_vision.criterion[3].weight_dict["loss_class_enc"] = 0.0
137
+ for k, v in model.model_vision.criterion[3].weight_dict.items():
138
+ if "_enc" in k:
139
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
140
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
141
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
142
+
143
+ for k, v in model.model_vision.criterion[4].weight_dict.items():
144
+ if "_class" in k and "_enc" not in k:
145
+ model.model_vision.criterion[4].weight_dict.update({k: 0.0})
146
+
147
+ model.model_vision.criterion[5].weight_dict["loss_class_enc"] = 0.0
148
+
149
+ model.model_vision.criterion[6].weight_dict["loss_class_enc"] = 0.0
150
+ for k, v in model.model_vision.criterion[6].weight_dict.items():
151
+ if "_enc" in k:
152
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
153
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
154
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
155
+
156
+ model.model_vision.criterion[7].weight_dict["loss_class_enc"] = 0.0
157
+ for k, v in model.model_vision.criterion[7].weight_dict.items():
158
+ if "_enc" in k:
159
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
160
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
161
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
162
+
163
+ model.model_vision.criterion[8].weight_dict["loss_class_enc"] = 0.0
164
+ for k, v in model.model_vision.criterion[8].weight_dict.items():
165
+ if "_enc" in k:
166
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
167
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
168
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
169
+
170
+ model.model_vision.stuff_dataset_learn_thing = False
171
+ model.model_vision.stuff_prob_thing = 0.9
172
+ model.model_vision.transformer.proposal_ambiguous = 1
173
+
174
+ model.model_vision.instance_on = True
175
+ model.model_vision.semantic_on = True
176
+ model.model_vision.panoptic_on = False
177
+
178
+ train.max_iter = 270000
179
+ train.eval_period = 270000
180
+
181
+ lr_multiplier = L(WarmupParamScheduler)(
182
+ scheduler=L(MultiStepParamScheduler)(
183
+ values=[1.0, 0.1],
184
+ milestones=[225000],
185
+ num_updates=270000,
186
+ ),
187
+ warmup_length=2000 / 270000,
188
+ warmup_method="linear",
189
+ warmup_factor=0.001,
190
+ )
191
+
192
+ dataloader.train.total_batch_size = 64
193
+ dataloader.train.total_batch_size_list = [64, 64, 64, 64, 64, 64, 64, 64, 64]
194
+
195
+
196
+ model.model_vision.dataset_prompts = [
197
+ "name",
198
+ "name",
199
+ "name",
200
+ "phrase",
201
+ "name",
202
+ "phrase",
203
+ "phrase",
204
+ "phrase",
205
+ "phrase",
206
+ "expression",
207
+ ]
208
+ model.model_vision.dataset_names = [
209
+ "lvis+stuffonly",
210
+ "objects365",
211
+ "openimages",
212
+ "vgregion",
213
+ "sa1b",
214
+ "refcoco-mixed_group-by-image",
215
+ "gqa",
216
+ "phrasecut",
217
+ "flickr30k",
218
+ "refcoco",
219
+ ]
220
+ model.model_vision.dataset_metas = dataloader.train.dataset.names + ["refcoco-mixed"]
221
+
222
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_O365_OID_VGR_SA1B_REFCOCO_GQA_PhraseCut_Flickr30k/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_1080k.py ADDED
@@ -0,0 +1,173 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from detectron2.config import LazyCall as L
2
+ from detectron2.solver import WarmupParamScheduler
3
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
4
+
5
+ from ape.data.detection_utils import get_fed_loss_cls_weights
6
+ from ape.layers import VisionLanguageFusion
7
+ from ape.modeling.ape_deta import (
8
+ DeformableDETRSegmVL,
9
+ DeformableDetrTransformerDecoderVL,
10
+ DeformableDetrTransformerEncoderVL,
11
+ DeformableDetrTransformerVL,
12
+ )
13
+
14
+ from ...common.data.lviscocococostuff_o365_oid_vgr_sa1b_refcoco_group_by_image_gqa_phrasecut_flickr30k_panoptic_lsj1024_cp import (
15
+ dataloader,
16
+ )
17
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
18
+ model,
19
+ optimizer,
20
+ train,
21
+ )
22
+
23
+ model.model_vision.update(
24
+ _target_=DeformableDETRSegmVL,
25
+ )
26
+ model.model_vision.transformer.update(
27
+ _target_=DeformableDetrTransformerVL,
28
+ )
29
+ model.model_vision.transformer.encoder.update(
30
+ _target_=DeformableDetrTransformerEncoderVL,
31
+ )
32
+ model.model_vision.transformer.decoder.update(
33
+ _target_=DeformableDetrTransformerDecoderVL,
34
+ )
35
+
36
+
37
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
38
+ v_dim="${....embed_dim}",
39
+ l_dim="${....embed_dim_language}",
40
+ embed_dim=2048,
41
+ num_heads=8,
42
+ dropout=0.1,
43
+ drop_path=0.0,
44
+ init_values=1.0 / 6,
45
+ stable_softmax_2d=True,
46
+ clamp_min_for_underflow=True,
47
+ clamp_max_for_overflow=True,
48
+ use_checkpoint=True,
49
+ )
50
+
51
+ model.model_vision.text_feature_bank = True
52
+ model.model_vision.text_feature_reduce_before_fusion = True
53
+ model.model_vision.text_feature_batch_repeat = True
54
+ model.model_vision.expression_cumulative_gt_class = True
55
+ model.model_vision.name_prompt_fusion_type = "zero"
56
+
57
+ model.model_vision.num_classes = 1256
58
+ model.model_vision.select_box_nums_for_evaluation = 300
59
+
60
+ criterion = model.model_vision.criterion[0]
61
+ del criterion.use_fed_loss
62
+ del criterion.get_fed_loss_cls_weights
63
+ del criterion.fed_loss_num_classes
64
+ model.model_vision.criterion = [criterion for _ in range(10)]
65
+ for criterion, num_classes in zip(
66
+ model.model_vision.criterion, [1256, 365, 601, 200, 1, 200, 200, 200, 200, 200]
67
+ ):
68
+ criterion.num_classes = num_classes
69
+
70
+ dataloader.train.mapper.max_num_phrase = 100
71
+ dataloader.train.mapper.nms_thresh_phrase = 0.6
72
+
73
+ model.model_vision.criterion[0].use_fed_loss = True
74
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
75
+ dataloader.train.dataset.names[0], 0.5
76
+ )
77
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
78
+ model.model_vision.criterion[0].fed_loss_pad_type = "cat"
79
+
80
+ model.model_vision.criterion[2].use_fed_loss = True
81
+ model.model_vision.criterion[2].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
82
+ dataloader.train.dataset.names[2], 0.5
83
+ )
84
+ model.model_vision.criterion[2].fed_loss_num_classes = 50
85
+ model.model_vision.criterion[2].fed_loss_pad_type = "cat"
86
+
87
+ model.model_vision.criterion[3].weight_dict["loss_class_enc"] = 0.0
88
+ for k, v in model.model_vision.criterion[3].weight_dict.items():
89
+ if "_enc" in k:
90
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
91
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
92
+ model.model_vision.criterion[3].weight_dict.update({k: 0.0})
93
+
94
+ for k, v in model.model_vision.criterion[4].weight_dict.items():
95
+ if "_class" in k and "_enc" not in k:
96
+ model.model_vision.criterion[4].weight_dict.update({k: 0.0})
97
+
98
+ model.model_vision.criterion[5].weight_dict["loss_class_enc"] = 0.0
99
+
100
+ model.model_vision.criterion[6].weight_dict["loss_class_enc"] = 0.0
101
+ for k, v in model.model_vision.criterion[6].weight_dict.items():
102
+ if "_enc" in k:
103
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
104
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
105
+ model.model_vision.criterion[6].weight_dict.update({k: 0.0})
106
+
107
+ model.model_vision.criterion[7].weight_dict["loss_class_enc"] = 0.0
108
+ for k, v in model.model_vision.criterion[7].weight_dict.items():
109
+ if "_enc" in k:
110
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
111
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
112
+ model.model_vision.criterion[7].weight_dict.update({k: 0.0})
113
+
114
+ model.model_vision.criterion[8].weight_dict["loss_class_enc"] = 0.0
115
+ for k, v in model.model_vision.criterion[8].weight_dict.items():
116
+ if "_enc" in k:
117
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
118
+ if "_bbox" in k or "_giou" in k or "_dice" in k or "_mask" in k:
119
+ model.model_vision.criterion[8].weight_dict.update({k: 0.0})
120
+
121
+ model.model_vision.stuff_dataset_learn_thing = False
122
+ model.model_vision.stuff_prob_thing = 0.9
123
+ model.model_vision.transformer.proposal_ambiguous = 1
124
+
125
+ model.model_vision.instance_on = True
126
+ model.model_vision.semantic_on = True
127
+ model.model_vision.panoptic_on = False
128
+
129
+ train.max_iter = 1080000
130
+ train.eval_period = 1080000
131
+
132
+ lr_multiplier = L(WarmupParamScheduler)(
133
+ scheduler=L(MultiStepParamScheduler)(
134
+ values=[1.0, 0.1],
135
+ milestones=[900000],
136
+ num_updates=1080000,
137
+ ),
138
+ warmup_length=2000 / 1080000,
139
+ warmup_method="linear",
140
+ warmup_factor=0.001,
141
+ )
142
+
143
+ dataloader.train.total_batch_size = 16
144
+ dataloader.train.total_batch_size_list = [16, 16, 16, 16, 16, 16, 16, 16, 16]
145
+ dataloader.train.num_workers = 4
146
+
147
+ model.model_vision.dataset_prompts = [
148
+ "name",
149
+ "name",
150
+ "name",
151
+ "phrase",
152
+ "name",
153
+ "phrase",
154
+ "phrase",
155
+ "phrase",
156
+ "phrase",
157
+ "expression",
158
+ ]
159
+ model.model_vision.dataset_names = [
160
+ "lvis+stuffonly",
161
+ "objects365",
162
+ "openimages",
163
+ "vgregion",
164
+ "sa1b",
165
+ "refcoco-mixed_group-by-image",
166
+ "gqa",
167
+ "phrasecut",
168
+ "flickr30k",
169
+ "refcoco",
170
+ ]
171
+ model.model_vision.dataset_metas = dataloader.train.dataset.names + ["refcoco-mixed"]
172
+
173
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_PanopticSegmentation/ape_deta/ape_deta_r50_lsj1024_cp_50ep.py ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from detectron2.data.detection_utils import get_fed_loss_cls_weights
2
+ from detrex.config import get_config
3
+
4
+ from ...common.data.lviscocococostuff_panoptic_lsj1024_cp import dataloader
5
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_r50_24ep import (
6
+ lr_multiplier,
7
+ model,
8
+ optimizer,
9
+ train,
10
+ )
11
+
12
+ model.model_vision.num_classes = 1256
13
+ model.model_vision.criterion[0].num_classes = 1256
14
+ model.model_vision.criterion[0].use_fed_loss = True
15
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
16
+ dataloader.train.dataset.names, 0.5
17
+ )
18
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
19
+ model.model_vision.criterion[0].fed_loss_pad_type = "cat"
20
+
21
+ model.model_vision.instance_on = True
22
+ model.model_vision.semantic_on = True
23
+ model.model_vision.panoptic_on = False
24
+
25
+ train.max_iter = 375000
26
+ train.eval_period = 20000
27
+
28
+ lr_multiplier = get_config("common/coco_schedule.py").lr_multiplier_50ep
29
+
30
+ dataloader.train.total_batch_size = 16
31
+
32
+ model.model_vision.dataset_prompts = ["name"]
33
+ model.model_vision.dataset_names = ["lvis+stuffonly"]
34
+ model.model_vision.dataset_metas = dataloader.train.dataset.names
35
+
36
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/LVISCOCOCOCOSTUFF_PanopticSegmentation/ape_deta/ape_deta_vitl_eva02_lsj1024_cp_24ep.py ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from ...common.data.lviscocococostuff_panoptic_lsj1024_cp import dataloader
2
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
3
+ lr_multiplier,
4
+ model,
5
+ optimizer,
6
+ train,
7
+ )
8
+
9
+ model.model_vision.num_classes = 1256
10
+ model.model_vision.criterion[0].num_classes = 1256
11
+
12
+ model.model_vision.instance_on = True
13
+ model.model_vision.semantic_on = True
14
+ model.model_vision.panoptic_on = False
15
+
16
+ model.model_vision.dataset_prompts = ["name"]
17
+ model.model_vision.dataset_names = ["lvis+stuffonly"]
18
+ model.model_vision.dataset_metas = dataloader.train.dataset.names
19
+
20
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/LVISCOCO_COCOSTUFF_O365_OID_VG_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_180k.py ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from detectron2.config import LazyCall as L
2
+ from detectron2.solver import WarmupParamScheduler
3
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
4
+
5
+ from .ape_deta_vitl_eva02_vlf_lsj1024_cp_720k import (
6
+ dataloader,
7
+ lr_multiplier,
8
+ model,
9
+ optimizer,
10
+ train,
11
+ )
12
+
13
+ train.max_iter = 180000
14
+ train.eval_period = 180000
15
+
16
+ lr_multiplier = L(WarmupParamScheduler)(
17
+ scheduler=L(MultiStepParamScheduler)(
18
+ values=[1.0, 0.1],
19
+ milestones=[150000],
20
+ num_updates=180000,
21
+ ),
22
+ warmup_length=1000 / 180000,
23
+ warmup_method="linear",
24
+ warmup_factor=0.001,
25
+ )
26
+
27
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/LVISCOCO_COCOSTUFF_O365_OID_VG_REFCOCO/ape_deta/ape_deta_vitl_eva02_vlf_lsj1024_cp_720k.py ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import random
2
+
3
+ from detectron2.config import LazyCall as L
4
+ from detectron2.solver import WarmupParamScheduler
5
+ from fvcore.common.param_scheduler import MultiStepParamScheduler
6
+
7
+ from ape.data.detection_utils import get_fed_loss_cls_weights
8
+ from ape.data.samplers import MultiDatasetTrainingSampler
9
+ from ape.layers import VisionLanguageFusion
10
+ from ape.modeling.ape_deta import (
11
+ DeformableDETRSegmVL,
12
+ DeformableDetrTransformerDecoderVL,
13
+ DeformableDetrTransformerEncoderVL,
14
+ DeformableDetrTransformerVL,
15
+ )
16
+
17
+ from ...common.data.lviscoco_cocostuff_o365_oid_vg_refcoco_panoptic_lsj1024_cp import dataloader
18
+ from ...LVIS_InstanceSegmentation.ape_deta.ape_deta_vitl_eva02_lsj1024_cp_24ep import (
19
+ lr_multiplier,
20
+ model,
21
+ optimizer,
22
+ train,
23
+ )
24
+
25
+ model.model_vision.update(
26
+ _target_=DeformableDETRSegmVL,
27
+ )
28
+ model.model_vision.transformer.update(
29
+ _target_=DeformableDetrTransformerVL,
30
+ )
31
+ model.model_vision.transformer.encoder.update(
32
+ _target_=DeformableDetrTransformerEncoderVL,
33
+ )
34
+ model.model_vision.transformer.decoder.update(
35
+ _target_=DeformableDetrTransformerDecoderVL,
36
+ )
37
+
38
+ model.model_vision.transformer.encoder.vl_layer = L(VisionLanguageFusion)(
39
+ v_dim="${....embed_dim}",
40
+ l_dim="${....embed_dim_language}",
41
+ embed_dim=2048,
42
+ num_heads=8,
43
+ dropout=0.1,
44
+ drop_path=0.0,
45
+ init_values=1.0 / 6,
46
+ stable_softmax_2d=False,
47
+ clamp_min_for_underflow=True,
48
+ clamp_max_for_overflow=True,
49
+ use_checkpoint=True,
50
+ )
51
+
52
+ model.model_vision.text_feature_bank = True
53
+
54
+ model.model_vision.num_classes = 1203
55
+ model.model_vision.select_box_nums_for_evaluation = 300
56
+
57
+ criterion = model.model_vision.criterion[0]
58
+ del criterion.use_fed_loss
59
+ del criterion.get_fed_loss_cls_weights
60
+ model.model_vision.criterion = [criterion for _ in range(6)]
61
+ for criterion, num_classes in zip(model.model_vision.criterion, [1203, 54, 365, 601, 150, 200]):
62
+ criterion.num_classes = num_classes
63
+
64
+ model.model_vision.criterion[0].use_fed_loss = True
65
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
66
+ dataloader.train.dataset.names[0], 0.5
67
+ )
68
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
69
+
70
+ model.model_vision.criterion[5].weight_dict["loss_class_enc"] = 0.0
71
+
72
+
73
+ model.model_vision.instance_on = True
74
+ model.model_vision.semantic_on = True
75
+ model.model_vision.panoptic_on = False
76
+
77
+ model.model_vision.neck = None
78
+
79
+ train.max_iter = 720000
80
+ train.eval_period = 720000
81
+
82
+ lr_multiplier = L(WarmupParamScheduler)(
83
+ scheduler=L(MultiStepParamScheduler)(
84
+ values=[1.0, 0.1],
85
+ milestones=[640000],
86
+ num_updates=720000,
87
+ ),
88
+ warmup_length=1000 / 720000,
89
+ warmup_method="linear",
90
+ warmup_factor=0.001,
91
+ )
92
+
93
+ dataloader.train.total_batch_size = 16
94
+ dataloader.train.total_batch_size_list = [16, 16, 16, 16, 16]
95
+
96
+ model.model_vision.dataset_prompts = ["name", "name", "name", "name", "name", "expression"]
97
+ model.model_vision.dataset_names = [
98
+ "lvis",
99
+ "stuffonly",
100
+ "objects365",
101
+ "openimages",
102
+ "visualgenome",
103
+ "refcoco",
104
+ ]
105
+ model.model_vision.dataset_metas = dataloader.train.dataset.names
106
+
107
+ train.output_dir = "output/" + __file__[:-3]
108
+
109
+ dataloader.train.sampler = lambda dataset_dicts: MultiDatasetTrainingSampler(
110
+ repeat_factors=MultiDatasetTrainingSampler.get_repeat_factors(
111
+ dataset_dicts=dataset_dicts,
112
+ num_datasets=6,
113
+ dataset_ratio=[1, 1, 1, 1, 1, 0],
114
+ use_rfs=[True, False, True, True, True, True],
115
+ use_cas=[False, False, False, False, False, False],
116
+ repeat_thresh=0.001,
117
+ cas_lambda=1.0,
118
+ ),
119
+ seed=random.randint(0, 2**31),
120
+ )
approach/ovod/APE/configs/LVIS_SA1B_InstanceSegmentation/ape_deta/ape_deta_r50_50ep.py ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from detectron2.data.detection_utils import get_fed_loss_cls_weights
2
+ from detrex.config import get_config
3
+
4
+ from ...COCO_SA1B_InstanceSegmentation.ape_deta.ape_deta_r50_24ep import model, optimizer, train
5
+
6
+ from ...common.data.lvis_sa1b_instance import dataloader
7
+
8
+ model.model_vision.num_classes = 1203
9
+ model.model_vision.criterion[0].num_classes = 1203
10
+ model.model_vision.select_box_nums_for_evaluation = 300
11
+ model.model_vision.criterion[0].use_fed_loss = True
12
+ model.model_vision.criterion[0].get_fed_loss_cls_weights = lambda: get_fed_loss_cls_weights(
13
+ dataloader.train.dataset.names[0], 0.5
14
+ )
15
+ model.model_vision.criterion[0].fed_loss_num_classes = 50
16
+
17
+ model.model_vision.semantic_on = False
18
+ model.model_vision.panoptic_on = False
19
+
20
+ train.max_iter = 375000
21
+ train.eval_period = 20000
22
+
23
+ lr_multiplier = get_config("common/coco_schedule.py").lr_multiplier_50ep
24
+
25
+ model.model_vision.dataset_prompts = ["name", "name"]
26
+ model.model_vision.dataset_names = ["lvis", "sa1b"]
27
+ model.model_vision.dataset_metas = dataloader.train.dataset.names
28
+
29
+ train.output_dir = "output/" + __file__[:-3]
approach/ovod/APE/configs/LVIS_SA1B_InstanceSegmentation/ape_deta/ape_deta_r50_50ep_eval_odinw13.py ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ from ...common.data.odinw13_instance import dataloader
2
+ from .ape_deta_r50_50ep import lr_multiplier, model, optimizer, train
3
+
4
+ model.model_vision.dataset_prompts = ["name" for _ in dataloader.tests]
5
+ model.model_vision.dataset_names = [
6
+ test.dataset.names.replace("_val", "") for test in dataloader.tests
7
+ ]
8
+ model.model_vision.dataset_metas = [test.dataset.names for test in dataloader.tests]
9
+
10
+ train.output_dir = "output/" + __file__[:-3]