example.benchmark_CUI のソースコード

"""顔認識のベンチマークをとるエグザンプルコード例.

Summary:
    このコード例では、CUIモードでのベンチマークテストを行う方法を示します。
    このベンチマークテストを行うには開発用パッケージを追加インストールする必要があります。
    具体的にはrequirements_dev.txtをインストールしてください。

    .. code-block:: bash

        pip install -r requirements_dev.txt

    実行後、ベンチマークが自動的にブラウザで表示されます。
    終了するには、このエグザンプルが実行されているターミナル(またはコンソール)で「Ctrl + C」を押してください。

.. image:: ../docs/img/benchmark_CUI_restats.png
    :alt: SnakeVizによるベンチマークテスト画像
    :scale: 50%

Example:
    .. code-block:: bash

        python3 benchmark_CUI.py

Source code:
    `benchmark_CUI.py <https://github.com/yKesamaru/FACE01_DEV/blob/master/example/benchmark_CUI.py>`_
"""
# Operate directory: Common to all examples
import os.path
import sys

dir: str = os.path.dirname(__file__)
parent_dir, _ = os.path.split(dir)
sys.path.append(parent_dir)


import cProfile as pr
import subprocess
from typing import Dict

from face01lib.Calc import Cal
from face01lib.Core import Core
from face01lib.Initialize import Initialize


[ドキュメント] def main(exec_times: int = 50) -> None: """Open automatically benchmark on you're own browser. Args: exec_times (int, optional): Number of frames for process. Defaults to 50 times. Returns: None """ # Initialize CONFIG: Dict = Initialize().initialize() gen = Core().common_process(CONFIG) # Specify START point START: float = Cal.Measure_processing_time_forward() # Repeat 'exec_times' times for i in range(0, exec_times): # Call __next__() from the generator object frame_datas_array = gen.__next__() for frame_datas in frame_datas_array: for person_data in frame_datas['person_data_list']: if not person_data['name'] == 'Unknown': # pass print( person_data['name'], "\n", "\t", "similarity\t\t", person_data['percentage_and_symbol'], "\n", "\t", "coordinate\t\t", person_data['location'], "\n", "\t", "time\t\t\t", person_data['date'], "\n", "\t", "output\t\t\t", person_data['pict'], "\n", "-------\n" ) END = Cal.Measure_processing_time_backward() print(f'Total processing time: {round(Cal.Measure_processing_time(START, END) , 3)}[seconds]') print(f'Per frame: {round(Cal.Measure_processing_time(START, END) / ( exec_times), 3)}[seconds]')
if __name__ == '__main__': pr.run('main(exec_times = 1)', 'restats') subprocess.run(["snakeviz", "restats"])