diff --git a/utils/datasets.py b/utils/datasets.py index e559f987..ec15b93c 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -410,7 +410,7 @@ def letterbox(img, new_shape=416, color=(128, 128, 128), mode='auto'): ratiow, ratioh = new_shape / shape[1], new_shape / shape[0] if shape[::-1] != new_unpad: # resize - img = cv2.resize(img, new_unpad, interpolation=cv2.INTER_LINEAR) # INTER_AREA is better, INTER_LINEAR is faster + img = cv2.resize(img, new_unpad, interpolation=cv2.INTER_AREA) # INTER_AREA is better, INTER_LINEAR is faster top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) # add border diff --git a/utils/utils.py b/utils/utils.py index fdfd760f..d7634d65 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -1,6 +1,7 @@ import glob import os import random +import shutil from pathlib import Path import cv2 @@ -545,6 +546,28 @@ def select_best_evolve(path='evolve*.txt'): # from utils.utils import *; select print(file, x[fitness.argmax()]) +def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): + # Makes single-class coco datasets. from utils.utils import *; coco_single_class_labels() + if os.path.exists('new/'): + shutil.rmtree('new/') # delete output folder + os.makedirs('new/') # make new output folder + os.makedirs('new/labels/') + os.makedirs('new/images/') + for file in tqdm(sorted(glob.glob('%s/*.*' % path))): + with open(file, 'r') as f: + labels = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) + i = labels[:, 0] == label_class + if any(i): + img_file = file.replace('labels', 'images').replace('txt', 'jpg') + labels[:, 0] = 0 # reset class to 0 + with open('new/images.txt', 'a') as f: # add image to dataset list + f.write(img_file + '\n') + with open('new/labels/' + Path(file).name, 'a') as f: # write label + for l in labels[i]: + f.write('%g %.6f %.6f %.6f %.6f\n' % tuple(l)) + shutil.copyfile(src=img_file, dst='new/images/' + Path(file).name.replace('txt', 'jpg')) # copy images + + def kmeans_targets(path='./data/coco_64img.txt', n=9, img_size=320): # from utils.utils import *; kmeans_targets() # Produces a list of target kmeans suitable for use in *.cfg files img_formats = ['.bmp', '.jpg', '.jpeg', '.png', '.tif']