@@ -31,7 +31,8 @@ def evaluate(model, test_csv, image_root_dir):
31
31
"""
32
32
# create trainer
33
33
devices = torch .cuda .device_count ()
34
- model .create_trainer (num_nodes = 1 , devices = devices )
34
+ strategy = "ddp" if devices > 1 else None
35
+ model .create_trainer (num_nodes = 1 , devices = devices , strategy = strategy )
35
36
model .config ["validation" ]["csv_file" ] = test_csv
36
37
model .config ["validation" ]["root_dir" ] = image_root_dir
37
38
results = model .trainer .validate (model )
@@ -163,32 +164,28 @@ def train(model, train_annotations, test_annotations, train_image_dir, comet_log
163
164
model .config [key ] = value
164
165
165
166
devices = torch .cuda .device_count ()
166
- if comet_logger :
167
- comet_logger .experiment .log_parameters (model .config )
168
- comet_logger .experiment .log_table ("train.csv" , train_annotations )
169
- comet_logger .experiment .log_table ("test.csv" , test_annotations )
170
- model .create_trainer (logger = comet_logger , num_nodes = 1 , devices = devices )
171
- else :
172
- model .create_trainer (num_nodes = 1 , devices = devices )
173
-
174
- with comet_logger .experiment .context_manager ("train_images" ):
175
- non_empty_train_annotations = read_file (model .config ["train" ]["csv_file" ], root_dir = train_image_dir )
176
- # Sanity check for debug
177
- n = 5 if non_empty_train_annotations .shape [0 ] > 5 else non_empty_train_annotations .shape [0 ]
178
- for filename in non_empty_train_annotations .image_path .sample (n = n ).unique ():
179
- sample_train_annotations_for_image = non_empty_train_annotations [non_empty_train_annotations .image_path == filename ]
180
- sample_train_annotations_for_image .root_dir = train_image_dir
181
- visualize .plot_annotations (sample_train_annotations_for_image , savedir = tmpdir )
182
- comet_logger .experiment .log_image (os .path .join (tmpdir , filename ))
183
-
184
- with comet_logger .experiment .context_manager ("test_images" ):
185
- non_empty_validation_annotations = read_file (model .config ["validation" ]["csv_file" ], root_dir = train_image_dir )
186
- n = 5 if non_empty_validation_annotations .shape [0 ] > 5 else non_empty_validation_annotations .shape [0 ]
187
- for filename in non_empty_validation_annotations .image_path .sample (n = n ).unique ():
188
- sample_validation_annotations_for_image = non_empty_validation_annotations [non_empty_validation_annotations .image_path == filename ]
189
- sample_validation_annotations_for_image .root_dir = train_image_dir
190
- visualize .plot_annotations (sample_validation_annotations_for_image , savedir = tmpdir )
191
- comet_logger .experiment .log_image (os .path .join (tmpdir , filename ))
167
+ strategy = "ddp" if devices > 1 else None
168
+ comet_logger .experiment .log_parameters (model .config )
169
+ comet_logger .experiment .log_table ("train.csv" , train_annotations )
170
+ comet_logger .experiment .log_table ("test.csv" , test_annotations )
171
+ model .create_trainer (logger = comet_logger , num_nodes = 1 , accelerator = "gpu" , strategy = "ddp" , devices = 2 )
172
+
173
+ non_empty_train_annotations = read_file (model .config ["train" ]["csv_file" ], root_dir = train_image_dir )
174
+ # Sanity check for debug
175
+ n = 5 if non_empty_train_annotations .shape [0 ] > 5 else non_empty_train_annotations .shape [0 ]
176
+ for filename in non_empty_train_annotations .image_path .sample (n = n ).unique ():
177
+ sample_train_annotations_for_image = non_empty_train_annotations [non_empty_train_annotations .image_path == filename ]
178
+ sample_train_annotations_for_image .root_dir = train_image_dir
179
+ visualize .plot_annotations (sample_train_annotations_for_image , savedir = tmpdir )
180
+ comet_logger .experiment .log_image (os .path .join (tmpdir , filename ),metadata = {"name" :filename ,"context" :'train_images' })
181
+
182
+ non_empty_validation_annotations = read_file (model .config ["validation" ]["csv_file" ], root_dir = train_image_dir )
183
+ n = 5 if non_empty_validation_annotations .shape [0 ] > 5 else non_empty_validation_annotations .shape [0 ]
184
+ for filename in non_empty_validation_annotations .image_path .sample (n = n ).unique ():
185
+ sample_validation_annotations_for_image = non_empty_validation_annotations [non_empty_validation_annotations .image_path == filename ]
186
+ sample_validation_annotations_for_image .root_dir = train_image_dir
187
+ visualize .plot_annotations (sample_validation_annotations_for_image , savedir = tmpdir )
188
+ comet_logger .experiment .log_image (os .path .join (tmpdir , filename ),metadata = {"name" :filename ,"context" :'validation_images' })
192
189
193
190
with comet_logger .experiment .context_manager ("detection" ):
194
191
model .trainer .fit (model )
0 commit comments