Args: name (str): name of the dataset to evaluate shard, num_shards: to get subset of evaluation data
(name, shard=0, num_shards=1)
| 371 | |
| 372 | |
| 373 | def get_eval_dataflow(name, shard=0, num_shards=1): |
| 374 | """ |
| 375 | Args: |
| 376 | name (str): name of the dataset to evaluate |
| 377 | shard, num_shards: to get subset of evaluation data |
| 378 | """ |
| 379 | roidbs = DatasetRegistry.get(name).inference_roidbs() |
| 380 | logger.info("Found {} images for inference.".format(len(roidbs))) |
| 381 | |
| 382 | num_imgs = len(roidbs) |
| 383 | img_per_shard = num_imgs // num_shards |
| 384 | img_range = (shard * img_per_shard, (shard + 1) * img_per_shard if shard + 1 < num_shards else num_imgs) |
| 385 | |
| 386 | # no filter for training |
| 387 | ds = DataFromListOfDict(roidbs[img_range[0]: img_range[1]], ["file_name", "image_id"]) |
| 388 | |
| 389 | def f(fname): |
| 390 | im = cv2.imread(fname, cv2.IMREAD_COLOR) |
| 391 | assert im is not None, fname |
| 392 | return im |
| 393 | |
| 394 | ds = MapDataComponent(ds, f, 0) |
| 395 | # Evaluation itself may be multi-threaded, therefore don't add prefetch here. |
| 396 | return ds |
| 397 | |
| 398 | |
| 399 | if __name__ == "__main__": |
no test coverage detected