Browse Source

Update datasets.py

5.0
Glenn Jocher GitHub 4 years ago
parent
commit
335c607a24
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 18 deletions
  1. +13
    -18
      utils/datasets.py

+ 13
- 18
utils/datasets.py View File

try: try:
path = str(Path(path)) # os-agnostic path = str(Path(path)) # os-agnostic
parent = str(Path(path).parent) + os.sep parent = str(Path(path).parent) + os.sep

joined_path = os.path.join(os.getcwd(), parent)
print('Parent folder override for loading image files: %s' % (os.path.abspath(joined_path)))

if os.path.isfile(path): # file if os.path.isfile(path): # file
with open(path, 'r') as f: with open(path, 'r') as f:
f = f.read().splitlines() f = f.read().splitlines()
raise Exception('Error loading data from %s. See %s' % (path, help_url)) raise Exception('Error loading data from %s. See %s' % (path, help_url))


n = len(self.img_files) n = len(self.img_files)
print('Loaded %g images' % (n))
assert n > 0, 'No images found in %s. See %s' % (path, help_url) assert n > 0, 'No images found in %s. See %s' % (path, help_url)


bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index
nb = bi[-1] + 1 # number of batches nb = bi[-1] + 1 # number of batches


self.label_files = [x.replace('images', 'labels').replace(os.path.splitext(x)[-1], '.txt') self.label_files = [x.replace('images', 'labels').replace(os.path.splitext(x)[-1], '.txt')
for x in self.img_files] for x in self.img_files]


# Read image shapes (wh)
sp = path.replace('.txt', '') + '.shapes' # shapefile path
try:
with open(sp, 'r') as f: # read existing shapefile
s = [x.split() for x in f.read().splitlines()]
assert len(s) == n, 'Shapefile out of sync'
except:
s = [exif_size(Image.open(f)) for f in tqdm(self.img_files, desc='Reading image shapes')]
np.savetxt(sp, s, fmt='%g') # overwrites existing (if any)

self.shapes = np.array(s, dtype=np.float64)

# Rectangular Training https://github.com/ultralytics/yolov3/issues/232 # Rectangular Training https://github.com/ultralytics/yolov3/issues/232
if self.rect: if self.rect:
# Read image shapes (wh)
sp = path.replace('.txt', '') + '.shapes' # shapefile path
try:
with open(sp, 'r') as f: # read existing shapefile
s = [x.split() for x in f.read().splitlines()]
assert len(s) == n, 'Shapefile out of sync'
except:
s = [exif_size(Image.open(f)) for f in tqdm(self.img_files, desc='Reading image shapes')]
np.savetxt(sp, s, fmt='%g') # overwrites existing (if any)

# Sort by aspect ratio # Sort by aspect ratio
s = np.array(s, dtype=np.float64)
s = self.shapes # wh
ar = s[:, 1] / s[:, 0] # aspect ratio ar = s[:, 1] / s[:, 0] # aspect ratio
irect = ar.argsort() irect = ar.argsort()
self.img_files = [self.img_files[i] for i in irect] self.img_files = [self.img_files[i] for i in irect]

Loading…
Cancel
Save