--- license: agpl-3.0 language: - ru base_model: - Daniil-Domino/yolo11x-text-detection library_name: ultralytics library_version: 8.3.155 pipeline_tag: object-detection tags: - yolo - yolo11 - yolo11x - htr - text-detection - dialectic - linguistics --- # Handwritten Russian Dialectic Text Detection using YOLO11 The [YOLO11x-text-detection](https://huggingface.co/Daniil-Domino/yolo11x-text-detection) model was fine-tuned on a dataset of nearly 150 images containing handwritten Russian dialectic texts. For more information, check out the [GitHub repository](https://github.com/DialecticalHTR/RuDialect-HTR). ## Model description YOLO11x-text-detection was fine-tuned for Handwritten Russian Dialectic Text Detection in dialectological cards. The model was trained for 100 epochs with a batch size of 32 using dual NVIDIA T4 GPUs. Fifteen layers were frozen during training as part of the transfer learning process. The entire training took approximately 7 minutes. ### What is a dialectological text? Linguists at NaRFU go on dialectological expeditions to different villages of Arkhangelsk region. The dialogs with locals are transcribed into notebooks and the examples of a dialect words and an example of its usage is written on cards. The dialectological text is a text that conveys linguistic features using special symbols like acutes, apostrophes etc. Example of a card: ![Example of a card](https://cdn-uploads.huggingface.co/production/uploads/66f94ad1b720048bbc98aeea/OxbyTr2krLmkYUS7I738p.png) # Example Usage ```python # Load libraries import cv2 from ultralytics import YOLO from pathlib import Path import matplotlib.pyplot as plt from huggingface_hub import hf_hub_download # Download model model_path = hf_hub_download(repo_id="Daniil-Domino/yolo11x-dialectic", filename="model.pt") # Load model model = YOLO(model_path) # Inference image_path = "/path/to/image" image = cv2.imread(image_path).copy() output = model.predict(image, conf=0.3) # Draw bounding boxes out_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) for data in output[0].boxes.data.tolist(): xmin, ymin, xmax, ymax, _, _ = map(int, data) cv2.rectangle(out_image, (xmin, ymin), (xmax, ymax), color=(0, 0, 255), thickness=3) # Display result plt.figure(figsize=(15, 10)) plt.imshow(out_image) plt.axis('off') plt.show() ``` # Metrics Below are the key evaluation metrics on the validation set: - **Precision**: 0.940 - **Recall**: 0.924 - **mAP50**: 0.972 - **mAP50-95**: 0.656