Extracting features using a RunnerΒΆ
import argparse
from feature_extractors.ssim_fex import SsimFeatureExtractor # Import feature extractor(s) to make visible to get_fex
from qualitylib.feature_extractor import get_fex
from qualitylib.tools import import_python_file, read_dataset
from qualitylib.runner import Runner
def get_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(description='Run feature extractors and store results')
parser.add_argument('--dataset', help='Path to dataset file for which to extract features', type=str)
parser.add_argument('--fex_name', help='Name of feature extractor', type=str)
parser.add_argument('--fex_version', help='Version of feature extractor', type=str, default=None)
parser.add_argument('--processes', help='Number of parallel processes', type=int, default=1)
return parser
def main() -> None:
args = get_parser().parse_args()
dataset = import_python_file(args.dataset)
assets = read_dataset(dataset, shuffle=True)
FexClass = get_fex(args.fex_name, args.fex_version) # Finds feature extractor by name and version
runner = Runner(FexClass, processes=args.processes, use_cache=True) # Reads from stored results if available, else stores results.
runner(assets, return_results=False) # Only extract features, do not use for anything. Since use_cache is True above, results are stored without being returned.
if __name__ == '__main__':
main()