Views
No views yet
1from transformers import AutoModelForImageClassification
2import torch
3from torchvision.transforms import v2
4from torchvision.io import read_image, ImageReadMode
5
6model = AutoModelForImageClassification.from_pretrained("gullalc/convnextv2-base-22k-224-cinescale-angle")
7im_size = 224
8
9## https://www.pexels.com/photo/man-in-black-dress-walking-in-between-brown-wooden-pews-9614069/
10image = read_image("demo/angle_demo.jpg", mode=ImageReadMode.RGB)
11
12transform = v2.Compose([v2.Resize(im_size, antialias=True),
13 v2.CenterCrop((im_size,im_size)),
14 v2.ToDtype(torch.float32, scale=True),
15 v2.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])])
16
17inputs = transform(image).unsqueeze(0)
18
19with torch.no_grad():
20 outputs = model(pixel_values=inputs)
21
22
23predicted_label = model.config.id2label[torch.argmax(outputs.logits).item()]
24print(predicted_label)
25# --> high1## Training transforms
2randomorder = v2.RandomOrder([
3 v2.RandomHorizontalFlip(),
4 v2.GaussianBlur(5),
5 v2.RandomAdjustSharpness(2),
6 v2.RandomGrayscale(p=0.2),
7 v2.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2, hue=0.1)])
8
9train_transform = v2.Compose([v2.Resize(im_size, antialias=True),
10 v2.RandomResizedCrop((im_size,im_size), antialias=True),
11 randomorder,
12 v2.ToDtype(torch.float32, scale=True),
13 v2.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])])
14
15## Training Arguments
16training_args = TrainingArguments(
17 evaluation_strategy = "epoch",
18 save_strategy = "epoch",
19 learning_rate=5e-5,
20 per_device_train_batch_size=128,
21 gradient_accumulation_steps=4,
22 per_device_eval_batch_size=128,
23 num_train_epochs=30,
24 warmup_ratio=0.1,
25 logging_steps=10,
26 load_best_model_at_end=True,
27 metric_for_best_model="f1",
28 dataloader_num_workers=32,
29 torch_compile=True
30)