MikkoLipsanen commited on
Commit
6d372f6
·
verified ·
1 Parent(s): 3ce1c6a

Add global device definition for all models

Browse files
Files changed (1) hide show
  1. app.py +23 -8
app.py CHANGED
@@ -48,6 +48,7 @@ class Config:
48
  SEGMENTATION_REGION_IOU = 0.3
49
  SEGMENTATION_LINE_OVERLAP_THRESHOLD = 0.5
50
  SEGMENTATION_REGION_OVERLAP_THRESHOLD = 0.5
 
51
  ALLOWED_SOURCES = ("https://astia.narc.fi, /tmp/gradio")
52
 
53
  # Model paths
@@ -121,7 +122,8 @@ class HTRPipeline:
121
  segmentation_line_iou: float = 0.3,
122
  segmentation_region_iou: float = 0.3,
123
  segmentation_line_overlap_threshold: float = 0.5,
124
- segmentation_region_overlap_threshold: float = 0.5
 
125
  ):
126
  """
127
  Initialize HTR pipeline with segmentation and recognition models.
@@ -147,9 +149,15 @@ class HTRPipeline:
147
  segmentation_line_iou,
148
  segmentation_region_iou,
149
  segmentation_line_overlap_threshold,
150
- segmentation_region_overlap_threshold
 
151
  )
152
- self.recognizer = self._init_recognizer(recognition_model_path, recognition_batch_size)
 
 
 
 
 
153
  self.plotter = PlotHTR()
154
 
155
  if self.segmenter is None or self.recognizer is None:
@@ -164,7 +172,8 @@ class HTRPipeline:
164
  segmentation_line_iou: float,
165
  segmentation_region_iou: float,
166
  segmentation_line_overlap_threshold: float,
167
- segmentation_region_overlap_threshold: float
 
168
  ) -> Optional[SegmentImage]:
169
  """
170
  Initialize document segmentation model.
@@ -179,6 +188,7 @@ class HTRPipeline:
179
  segmentation_region_iou: IoU threshold for merging overlapping region polygons
180
  segmentation_line_overlap_threshold: Area overlap ratio threshold for merging lines
181
  segmentation_region_overlap_threshold: Area overlap ratio threshold for merging regions
 
182
  Returns:
183
  Initialized SegmentImage instance or None if initialization fails
184
  """
@@ -192,7 +202,8 @@ class HTRPipeline:
192
  line_iou=segmentation_line_iou,
193
  region_iou=segmentation_region_iou,
194
  line_overlap_threshold=segmentation_line_overlap_threshold,
195
- region_overlap_threshold=segmentation_region_overlap_threshold
 
196
  )
197
  logger.info("✓ Segmentation model initialized")
198
  return segmenter
@@ -200,7 +211,10 @@ class HTRPipeline:
200
  logger.error(f"Failed to initialize segmentation model: {e}")
201
  return None
202
 
203
- def _init_recognizer(self, model_path: str, batch_size: int) -> Optional[TextRecognition]:
 
 
 
204
  """
205
  Initialize text recognition model.
206
 
@@ -214,7 +228,7 @@ class HTRPipeline:
214
  try:
215
  recognizer = TextRecognition(
216
  model_path=model_path,
217
- device='cuda:0' if torch.cuda.is_available() else 'cpu',
218
  batch_size=batch_size
219
  )
220
  logger.info("✓ Text recognition model initialized")
@@ -369,7 +383,8 @@ try:
369
  segmentation_line_iou = Config.SEGMENTATION_LINE_IOU,
370
  segmentation_region_iou = Config.SEGMENTATION_REGION_IOU,
371
  segmentation_line_overlap_threshold = Config.SEGMENTATION_LINE_OVERLAP_THRESHOLD,
372
- segmentation_region_overlap_threshold = Config.SEGMENTATION_REGION_OVERLAP_THRESHOLD
 
373
  )
374
  logger.info("✓ HTR Pipeline initialized successfully")
375
  except Exception as e:
 
48
  SEGMENTATION_REGION_IOU = 0.3
49
  SEGMENTATION_LINE_OVERLAP_THRESHOLD = 0.5
50
  SEGMENTATION_REGION_OVERLAP_THRESHOLD = 0.5
51
+ DEVICE = 'cuda:0' if torch.cuda.is_available() else 'cpu'
52
  ALLOWED_SOURCES = ("https://astia.narc.fi, /tmp/gradio")
53
 
54
  # Model paths
 
122
  segmentation_line_iou: float = 0.3,
123
  segmentation_region_iou: float = 0.3,
124
  segmentation_line_overlap_threshold: float = 0.5,
125
+ segmentation_region_overlap_threshold: float = 0.5,
126
+ device: str = 'cuda:0'
127
  ):
128
  """
129
  Initialize HTR pipeline with segmentation and recognition models.
 
149
  segmentation_line_iou,
150
  segmentation_region_iou,
151
  segmentation_line_overlap_threshold,
152
+ segmentation_region_overlap_threshold,
153
+ device
154
  )
155
+ self.recognizer = self._init_recognizer(
156
+ recognition_model_path,
157
+ recognition_batch_size,
158
+ device
159
+ )
160
+
161
  self.plotter = PlotHTR()
162
 
163
  if self.segmenter is None or self.recognizer is None:
 
172
  segmentation_line_iou: float,
173
  segmentation_region_iou: float,
174
  segmentation_line_overlap_threshold: float,
175
+ segmentation_region_overlap_threshold: float,
176
+ device: str
177
  ) -> Optional[SegmentImage]:
178
  """
179
  Initialize document segmentation model.
 
188
  segmentation_region_iou: IoU threshold for merging overlapping region polygons
189
  segmentation_line_overlap_threshold: Area overlap ratio threshold for merging lines
190
  segmentation_region_overlap_threshold: Area overlap ratio threshold for merging regions
191
+ device: Device where the model is run (cpu, cuda:0)
192
  Returns:
193
  Initialized SegmentImage instance or None if initialization fails
194
  """
 
202
  line_iou=segmentation_line_iou,
203
  region_iou=segmentation_region_iou,
204
  line_overlap_threshold=segmentation_line_overlap_threshold,
205
+ region_overlap_threshold=segmentation_region_overlap_threshold,
206
+ device=device
207
  )
208
  logger.info("✓ Segmentation model initialized")
209
  return segmenter
 
211
  logger.error(f"Failed to initialize segmentation model: {e}")
212
  return None
213
 
214
+ def _init_recognizer(self,
215
+ model_path: str,
216
+ batch_size: int,
217
+ device: str) -> Optional[TextRecognition]:
218
  """
219
  Initialize text recognition model.
220
 
 
228
  try:
229
  recognizer = TextRecognition(
230
  model_path=model_path,
231
+ device=device,
232
  batch_size=batch_size
233
  )
234
  logger.info("✓ Text recognition model initialized")
 
383
  segmentation_line_iou = Config.SEGMENTATION_LINE_IOU,
384
  segmentation_region_iou = Config.SEGMENTATION_REGION_IOU,
385
  segmentation_line_overlap_threshold = Config.SEGMENTATION_LINE_OVERLAP_THRESHOLD,
386
+ segmentation_region_overlap_threshold = Config.SEGMENTATION_REGION_OVERLAP_THRESHOLD,
387
+ device = Config.DEVICE
388
  )
389
  logger.info("✓ HTR Pipeline initialized successfully")
390
  except Exception as e: