rynfkn commited on
Commit
c54d9bb
·
1 Parent(s): 7e32569

add inference

Browse files
inference/__pycache__/predictions.cpython-312.pyc ADDED
Binary file (3.3 kB). View file
 
inference/predictions.py ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from processor.tabular_processor import TabularProcessor
2
+ from processor.image_processor import ImageProcessor
3
+ from processor.text_processor import TextProcessor
4
+
5
+ from utils.model_loader import EnhancedFusionModel
6
+ from utils.dataset import InferenceDataset
7
+
8
+ import torch
9
+ from torch.utils.data import DataLoader
10
+
11
+ from config import IMAGE_MODEL_NAME, TEXT_MODEL_NAME, TABULAR_DIM, IMAGE_DIM, TEXT_DIM, DEVICE, MODEL_PATH, SCALER_PATH
12
+
13
+ class MultimodalPredictor:
14
+ def __init__(self, model_path=MODEL_PATH):
15
+ self.tabular_processor = TabularProcessor()
16
+ self.image_processor = ImageProcessor(model_name=IMAGE_MODEL_NAME)
17
+ self.text_processor = TextProcessor(model_name=TEXT_MODEL_NAME)
18
+
19
+ self.model = EnhancedFusionModel(
20
+ tab_dim=TABULAR_DIM,
21
+ img_dim=IMAGE_DIM,
22
+ text_dim=TEXT_DIM
23
+ )
24
+
25
+ self.model.load_state_dict(torch.load(model_path, map_location=DEVICE))
26
+ self.model.to(DEVICE)
27
+ self.model.eval()
28
+
29
+ def predict(self, tabular_data, image_path, text_data, batch_size=1):
30
+ tabular_processed = self.tabular_processor.process(tabular_data)
31
+ image_processed = self.image_processor.process(image_path)
32
+ text_processed = self.text_processor.process(text_data)
33
+
34
+ dataset = InferenceDataset(tabular_data=tabular_processed, image_features=image_processed, text_features=text_processed)
35
+ dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=False)
36
+
37
+ predictions = []
38
+ with torch.no_grad():
39
+ for batch in dataloader:
40
+ tab_batch, img_batch, text_batch = [b.to(DEVICE) for b in batch]
41
+ outputs = self.model(tab_batch, img_batch, text_batch)
42
+ predictions.extend(outputs.cpu().numpy().flatten().tolist())
43
+
44
+ predictions = [pred * 1000000 for pred in predictions]
45
+ return predictions
46
+
47
+
48
+
49
+
50
+