From 593725625593ed6061489769a3eaad4eb9f668f9 Mon Sep 17 00:00:00 2001 From: enricobu96 Date: Sun, 28 Apr 2024 10:52:51 +0200 Subject: [PATCH] concept drifting katchow --- mACHINE-LEARNINGS/classes/MemeDataset.py | 32 +++++++++++- mACHINE-LEARNINGS/danknessificator.py | 57 +++++++++++++++++++++ mACHINE-LEARNINGS/data/already_trained.pkl | Bin 0 -> 266583 bytes mACHINE-LEARNINGS/eval.py | 1 - mACHINE-LEARNINGS/requirements.txt | 2 + mACHINE-LEARNINGS/train.py | 37 +++++-------- 6 files changed, 102 insertions(+), 27 deletions(-) create mode 100644 mACHINE-LEARNINGS/danknessificator.py create mode 100644 mACHINE-LEARNINGS/data/already_trained.pkl diff --git a/mACHINE-LEARNINGS/classes/MemeDataset.py b/mACHINE-LEARNINGS/classes/MemeDataset.py index 8daaf8a..ed0b1be 100644 --- a/mACHINE-LEARNINGS/classes/MemeDataset.py +++ b/mACHINE-LEARNINGS/classes/MemeDataset.py @@ -5,18 +5,46 @@ from torch.utils.data import Dataset import torch import imghdr +from PIL import Image +import imagehash +import pickle +import random supported_ext = ['jpg'] class MemeDataset(Dataset): - def __init__(self, data_dir, transform=None): + def __init__(self, data_dir, retrain=False, grace=0, transform=None): self.transform = transform self.img_path = [] + + seen_images = [] + if retrain: + with open(data_dir+'already_trained.pkl', 'rb') as f: + seen_images = pickle.load(f) + + # cyclomatic complexity goes brrr but whatevs for e in supported_ext: path = glob.glob(os.path.join(data_dir, '*', f'*.{e}')) for p in path: if imghdr.what(p) == 'jpeg': - self.img_path.append(p) + if not retrain: + self.img_path.append(p) + seen_images.append(imagehash.average_hash(Image.open(p))) + else: + h_img = imagehash.average_hash(Image.open(p)) + similar = False + for si in seen_images: + if abs(h_img - si) > 30: # totally random hamming distance + similar = True + break + + if not similar or random.uniform(0, 1)>1-grace: # let's probability do their job + self.img_path.append(p) + seen_images.append(h_img) + + with open(data_dir+'already_trained.pkl', 'wb') as f: + pickle.dump(seen_images, f) + classes = set() for path in self.img_path: classes.add(os.path.basename(os.path.dirname(path))) diff --git a/mACHINE-LEARNINGS/danknessificator.py b/mACHINE-LEARNINGS/danknessificator.py new file mode 100644 index 0000000..9672b5e --- /dev/null +++ b/mACHINE-LEARNINGS/danknessificator.py @@ -0,0 +1,57 @@ +from train import train +from eval import eval +import argparse + + +def main(args): + if args.subcommand == 'train': + train( + train_set_size=args.trainsetsize[0] if args.trainsetsize[0]!=0 else 0.8, + batch_size=args.batchsize[0] if args.batchsize else 1000, + lr=args.learningrate[0] if args.learningrate else 0.0001, + epochs=args.epochs[0] if args.epochs else 10, + is_verbose=args.verbose if args.verbose else True, + weight_decay=args.weightdecay[0] if args.weightdecay else 0.9, + retrain=False + ) + elif args.subcommand == 'retrain': + train( + train_set_size=0.8, + batch_size=10, + lr=0.0001, + epochs=1, + is_verbose=args.verbose if args.verbose else True, + weight_decay=0.8, + retrain=True, + grace=args.grace[0] if args.grace else 0 + ) + elif args.subcommand == 'eval': + eval( + image=args.image[0] + ) + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers(dest='subcommand') + + parser_train = subparsers.add_parser('train') + parser_retrain = subparsers.add_parser('retrain') + parser_eval = subparsers.add_parser('eval') + + parser_train.add_argument('-ts', '--trainsetsize', nargs=1, type=float, choices=[x/10 for x in range(0, 10)], help='Train set split size', required=True) + parser_train.add_argument('-bs', '--batchsize', nargs=1, type=int, help='Size of the training batch', required=False) + parser_train.add_argument('-lr', '--learningrate', nargs=1, type=float, help='Learning rate', required=False) + parser_train.add_argument('-e', '--epochs', nargs=1, type=int, help='Number of epochs', required=False) + parser_train.add_argument('-v', '--verbose', nargs=1, type=bool, help='Verbose mode on/off', required=False) + parser_train.add_argument('-wd', '--weightdecay', nargs=1, type=float, help='Weight decay (L2 regularization)', required=False) + + parser_retrain.add_argument('-g', '--grace', nargs=1, type=float, choices=[x/10 for x in range(0, 11)], help='Proportion of old memes to consider again', required=False) + parser_retrain.add_argument('-v', '--verbose', nargs=1, type=bool, help='Verbose mode on/off', required=False) + + parser_eval.add_argument('-i', '--image', nargs=1, help='Image to evaluate', required=True) + + args = parser.parse_args() + + main(args) + + \ No newline at end of file diff --git a/mACHINE-LEARNINGS/data/already_trained.pkl b/mACHINE-LEARNINGS/data/already_trained.pkl new file mode 100644 index 0000000000000000000000000000000000000000..971a9f64f7a201b9d132a1c352b53871220c95a9 GIT binary patch literal 266583 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