Source code for pyvar.ml.utils.label
# Copyright 2021 Variscite LTD
# SPDX-License-Identifier: BSD-3-Clause
"""
:platform: Unix/Yocto
:synopsis: Class to handle labels file from Machine Learning models.
.. moduleauthor:: Diego Dorta <diego.d@variscite.com>
"""
import os
import re
from pyvar.ml.config import CLASSIFICATION
from pyvar.ml.config import DETECTION
[docs]class Label:
"""
:ivar labels_file: path to the labels file.
:ivar list: list with the labels from the label file.
"""
def __init__(self, labels_file_path=None):
"""
Constructor method for the Label class.
"""
if not os.path.isfile(labels_file_path):
raise ValueError("Must pass a labels file")
if not labels_file_path.endswith(".txt"):
raise TypeError(f"Expects {labels_file_path} to be a text file")
self.labels_file = labels_file_path
self.list = []
[docs] def read_labels(self, category=None):
"""
Reads Machine Learning labels file and save the result as a list.
Args:
category (str): model category (classification or detection).
Returns:
True if the labels file was read successfully.
"""
if category is None:
raise TypeError("Must specify the category")
else:
with open(self.labels_file, 'r', encoding='utf-8') as f:
if category is CLASSIFICATION:
self.list = [line.strip() for line in f.readlines()]
elif category is DETECTION:
p = re.compile(r'\s*(\d+)(.+)')
lines = (p.match(line).groups() for line in f.readlines())
self.list = {int(num): text.strip() for num, text in lines}
f.close()
return True