File size: 3,643 Bytes
c5f8542
 
 
55a7d3c
2d06a96
c5f8542
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4d10207
c5f8542
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55a7d3c
4d10207
93e86da
c5f8542
 
 
 
 
55a7d3c
4d10207
c5f8542
4d10207
c5f8542
 
 
4d10207
 
c5f8542
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
---
base_model:
- Ultralytics/YOLOv8
pipeline_tag: object-detection
license: agpl-3.0
---

## Text column and row line intersection detection from Finnish census records from the 1930s

The model is trained to find the intersection points of table column and cell lines from digitized census record documents
from the 1930s. The model has been trained using yolov8x by Ultralytics as the base model.


## Intended uses & limitations

<img src='census_intersection_example.jpg' width='500'>

The model has been trained to detect intersection points from specific kinds of tables, and probably generalizes badly to other, 
very different table types.

## Training data

Training dataset consisted of 218 digitized and annotated documents containing tables, while validation
dataset contained 25 annotated document images.

## Training procedure

This model was trained using 2 NVIDIA RTX A6000 GPUs with the following hyperparameters:

- image size: 2560
- initial learning rate (lr0): 0.00098
- final learning rate (lrf): 0.01285
- maximum number of detections per image (max_det): 500
- train batch size: 2
- epochs: 100
- patience: 30 epochs
- warmup_epochs: 3.91327
- optimizer: AdamW
- workers: 4
- momentum: 0.90725
- warmup_momentum: 0.72051
- weight_decay: 0.00061
- box loss weight (box): 9.34214
- classification loss weight (cls): 0.34133
- distribution focal loss weight (dfl): 1.83008
- hue augment (hsv_h): 0.01126
- saturation augment (hsv_s): 0.84221
- brightness augment (hsv_v): 0.435
- translation augment (translate): 0.11692
- scale augment (scale): 0.45713
- flip augment (fliplr): 0.38368
- mosaic augment (mosaic): 0.77082

Default settings were used for other training hyperparameters (find more information [here](https://docs.ultralytics.com/modes/train/#train-settings)).

Model training was performed using the following code:

```python
from ultralytics import YOLO

# Use pretrained Yolo segmentation model
model = YOLO('yolov8x.pt')                                                                                                               

# Path to .yaml file where data location and object classes are defined
yaml_path = 'intersections.yaml'

# Start model training with the defined parameters
model.train(data=yaml_path, name='model_name', epochs=100, imgsz=2560, max_det=500, workers=4, optimizer='AdamW', 
            lr0=0.00098, lrf=0.01285, momentum=0.90725, weight_decay=0.00061, warmup_epochs=3.91327, warmup_momentum=0.72051,
            box=9.34214, cls=0.34133, dfl=1.83008, hsv_h=0.01126, hsv_s=0.84221, hsv_v=0.435, translate=0.11692,
            scale=0.45713, fliplr=0.38368, mosaic=0.77082, seed=42, val=True, patience=30, batch=2, device='0,1')
```

## Evaluation results

Evaluation results using the validation dataset are listed below:
|Class|Images|Class instances|Box precision|Box recall|Box mAP50|Box mAP50-95
|:----|:----|:----|:----|:----|:----|:----|
Intersection|25|10411|0.996|0.997|0.994|0.653

More information on the performance metrics can be found [here](https://docs.ultralytics.com/guides/yolo-performance-metrics/).

## Inference

If the model file `huoneistokortit_13082024.pt` is downloaded to a folder `\models\ huoneistokortit_13082024.pt`
and the input image path is `\data\image.jpg`, inference can be perfomed using the following code:

```python
from ultralytics import YOLO

# Initialize model
model = YOLO('\models\ huoneistokortit_13082024.pt')
prediction_results = model.predict(source='\data\image.jpg', save=True)
```
More information for available inference arguments can be found [here](https://docs.ultralytics.com/modes/predict/#inference-arguments).