example.data_augmentation のソースコード

"""データセットのデータ拡張コード例.

Summary:
    このエグザンプルコードでは、データセットのデータ拡張する方法に
    ついて学びます。

Example:
    .. code-block:: bash

        python3 example/data_augmentation.py \
            "/path/to/dir" "" "lens" 224 10 -0.1 0.1 0.01

Result:
    .. image:: ../docs/img/data_augmentation.png
        :scale: 50%
        :alt: Image taken from https://tokai-kaoninsho.com

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

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

from typing import Dict

from face01lib.Initialize import Initialize
from face01lib.logger import Logger
from face01lib.utils import Utils

# Initialize
CONFIG: Dict = Initialize('DEFAULT', 'info').initialize()
# Set up logger
logger = Logger(CONFIG['log_level']).logger(__file__, CONFIG['RootDir'])
"""Initialize and Setup logger.
"""

utils = Utils(CONFIG['log_level'])


[ドキュメント] def main( dir_path: str, size: int = 224, num_jitters: int = 10, initial_value: float = -0.1, closing_value: float = 0.1, step_value: float = 0.01, ): """ この簡単なコード例では、与えられたディレクトリパスから再帰的に ファイルを読み込み、それらに対してデータ拡張を行います。 この例でのデータ拡張は、FACE01のUtilsモジュールから、 樽型歪みとジッターを呼び出します。 Args: dir_path (str): ターゲットディレクトリの絶対パス. size (int, optional): 作成するイメージサイズ. Defaults to 224. num_jitters (int, optional): ジッター回数. Defaults to 10. initial_value (float, optional): 樽型歪みの初期値. Defaults to -0.1. closing_value (float, optional): 終わり値. Defaults to 0.1. step_value (float, optional): ステップ値. Defaults to 0.01. Return: ターゲットディレクトリから再帰的に読み込んだディレクトリごとに データ拡張したファイルを保存します。 .. image:: ../assets/images/one_point_R.png :width: 70% :alt: one point 樽型歪みをデータセットに加えることで、カメラのキャリブレーションが出来ない環境への耐性を高めます⭐️'' `レンズの歪曲収差と対応方法 <https://tokai-kaoninsho.com/%e3%82%b3%e3%83%a9%e3%83%a0/%e3%83%ac%e3%83%b3%e3%82%ba%e3%81%ae%e6%ad%aa%e6%9b%b2%e5%8f%8e%e5%b7%ae%e3%81%a8%e5%af%be%e5%bf%9c%e6%96%b9%e6%b3%95/>`_ をご参照ください。 See Also: `dlib.jitter_image <http://dlib.net/python/index.html#dlib_pybind11.jitter_image>`_ """ data_dir = dir_path directory_list = [] # Search recursively under the data directory for root, dirs, _ in os.walk(data_dir): for directory in dirs: directory_path = os.path.join(root, directory) # Get all files in directory_path and store them in files files = glob(os.path.join(directory_path, "*")) # skip the for statement if any element of the list files contains the string jitter if any('jitter' in file for file in files): continue else: directory_list.append(directory_path) for dir in directory_list: logger.info(f"dir: {dir}") os.chdir(dir) utils.distort_barrel( dir, size=size, initial_value=initial_value, closing_value=closing_value, step_value=step_value, ) utils.get_jitter_image( dir, num_jitters=num_jitters, size=size, disturb_color=True, )
if __name__ == '__main__': args: list = sys.argv main( args[1], int(args[2]), int(args[3]), float(args[4]), float(args[5]), float(args[6]), )