Update app.py
Browse files
app.py
CHANGED
@@ -33,14 +33,55 @@ DEVICE = 'cuda' if torch.cuda.is_available() else 'cpu'
|
|
33 |
|
34 |
# Load tokenizer
|
35 |
@st.cache_resource
|
36 |
-
def load_tokenizer():
|
37 |
-
|
|
|
|
|
|
|
|
|
38 |
tokenizer = pickle.load(f)
|
39 |
return tokenizer
|
40 |
|
41 |
-
|
42 |
-
|
43 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
|
45 |
class CRNN(nn.Module):
|
46 |
def __init__(self, num_channels, hidden_size, num_classes):
|
@@ -133,6 +174,9 @@ fp = Path(".").glob("crnn*.pt")
|
|
133 |
selected_model_path = st.selectbox(label="Select Model...", options=fp)
|
134 |
model = load_model(selected_model_path)
|
135 |
uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])
|
|
|
|
|
|
|
136 |
|
137 |
if uploaded_file is not None:
|
138 |
image = Image.open(uploaded_file).convert("L")
|
|
|
33 |
|
34 |
# Load tokenizer
|
35 |
@st.cache_resource
|
36 |
+
def load_tokenizer(selected_model):
|
37 |
+
if "large" in selected_model.parts[-1]:
|
38 |
+
text_processor_path = "text_process-large.cls"
|
39 |
+
else:
|
40 |
+
text_processor_path = "text_process.cls"
|
41 |
+
with open(text_processor_path,'rb') as f:
|
42 |
tokenizer = pickle.load(f)
|
43 |
return tokenizer
|
44 |
|
45 |
+
# class CRNN(nn.Module):
|
46 |
+
# def __init__(self, num_chars):
|
47 |
+
# super(CRNN, self).__init__()
|
48 |
+
|
49 |
+
# self.cnn = nn.Sequential(
|
50 |
+
# nn.Conv2d(1, 64, kernel_size=3, stride=1, padding=1),
|
51 |
+
# nn.ReLU(),
|
52 |
+
# nn.MaxPool2d(kernel_size=2, stride=2),
|
53 |
+
# nn.Conv2d(64, 128, kernel_size=3, stride=1, padding=1),
|
54 |
+
# nn.ReLU(),
|
55 |
+
# nn.MaxPool2d(kernel_size=2, stride=2),
|
56 |
+
# nn.Conv2d(128, 256, kernel_size=3, stride=1, padding=1),
|
57 |
+
# nn.BatchNorm2d(256),
|
58 |
+
# nn.ReLU(),
|
59 |
+
# nn.Conv2d(256, 256, kernel_size=3, stride=1, padding=1),
|
60 |
+
# nn.ReLU(),
|
61 |
+
# nn.MaxPool2d(kernel_size=(2, 1)),
|
62 |
+
# nn.Conv2d(256, 512, kernel_size=3, stride=1, padding=1),
|
63 |
+
# nn.BatchNorm2d(512),
|
64 |
+
# nn.ReLU(),
|
65 |
+
# nn.Conv2d(512, 512, kernel_size=3, stride=1, padding=1),
|
66 |
+
# nn.ReLU(),
|
67 |
+
# nn.MaxPool2d(kernel_size=(2, 1)),
|
68 |
+
# nn.Conv2d(512, 512, kernel_size=2, stride=1),
|
69 |
+
# nn.BatchNorm2d(512),
|
70 |
+
# nn.ReLU()
|
71 |
+
# )
|
72 |
+
|
73 |
+
# # RNN layers
|
74 |
+
# self.rnn = nn.GRU(512 * 7, 256, bidirectional=True, batch_first=True, num_layers=2)
|
75 |
+
# self.linear = nn.Linear(512, num_chars)
|
76 |
+
|
77 |
+
# def forward(self, x):
|
78 |
+
# conv = self.cnn(x)
|
79 |
+
# batch, channel, height, width = conv.size()
|
80 |
+
# conv = conv.permute(0, 3, 1, 2)
|
81 |
+
# conv = conv.contiguous().view(batch, width, channel * height)
|
82 |
+
# output, _ = self.rnn(conv)
|
83 |
+
# output = self.linear(output)
|
84 |
+
# return output
|
85 |
|
86 |
class CRNN(nn.Module):
|
87 |
def __init__(self, num_channels, hidden_size, num_classes):
|
|
|
174 |
selected_model_path = st.selectbox(label="Select Model...", options=fp)
|
175 |
model = load_model(selected_model_path)
|
176 |
uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])
|
177 |
+
tokenizer = load_tokenizer(selected_model_path)
|
178 |
+
encode = tokenizer.encode
|
179 |
+
decode = tokenizer.decode
|
180 |
|
181 |
if uploaded_file is not None:
|
182 |
image = Image.open(uploaded_file).convert("L")
|