I'm training an SSD model in TensorFlow using Google ML engine and Google Storage. In TF's object detection example, they put all images into a single big TFRecord file. However, in this scheme, if one wants to assemble different training set by choosing subset of all images, a given image will be stored multiple times, once for each training set the image belongs to.
The alternative is to store each image as an individual file, and use a flat list of URLs to indicate the membership of an image in various data sets. However, based on my experience, Google Storage isn't optimized for reading large number of small files, which results in low training throughput.
I would like to see if there're other ways to avoid saving each image multiple times while achieve good throughput.