User Instructions¶
The purpose of this section is to provide detailed, step-by-step instructions on how to use the important interfaces for our codebase.
Importing YOLOv3¶
Make sure you activate the conda environment was described in the Installation section:
>>> conda activate [envname]
In your Python driver script, make sure that the yolov3 filepath is in the Python search path. For example, if the full filepath to the yolov3 repo is
/full/path/to/topdir/yolov3/
, then you would do this as:import sys sys.path.append('/full/path/to/topdir/')
The yolov3 project uses the Python
import
system to load all source code inyolov3/src/
andyolov3/utils/
in a heirarchical manner. You may therefore import this codebase as a module; for example:import yolov3 darknet = yolov3.src.models.Darknet(<network_cfg_file> , <imgsize>)
Unit Tests¶
Unit tests are maintained in the yolov3/tests
subdirectory. To run
these, navigate to the directory that contains yolov3, and run the
unittests as a Python package from the shell:
>>> python3 -m yolov3.tests.unittests
Training Example¶
An example driver script demonstrating proper interface usage for
network training is provided in scripts/train.py
, together with
the scripts/input_train.dat
input file.
Note
To run this example, certain options must be set in the inputfile. In particular, please ensure that the following pieces of data exist and are specified in the input file:
targetspath
: filepath to the target metadata filetraindir
: filepath to the training image datasetnetworkcfg
: YOLOv3 network configuration fileclass_path
: filepath to the class names/labels file
Please consult the Code Documentation on the InputFile class for further details on these and other necessary options.
To run this example, do the following:
- Edit the
scripts/input_train.dat
input file so that those settings involving filepaths accurately reflect the data/filepaths on your machine. - Navigate to the directory that contains yolov3, and issue the following shell command to run the script as a package:
>>> python3 -m yolov3.scripts.train yolov3/scripts/input_train.datNote
Mulitple-GPU support is currently not available for any part of this software. Please run in either CPU or single-GPU mode only. If you have multiple GPUs on your machine, you may use the CUDA_VISIBLE_DEVICES flag to enforce single-GPU mode, e.g.:
>>> CUDA_VISIBLE_DEVICES=0 python3 -m yolov3.scripts.train yolov3/scripts/input_train.dat
Detection Example¶
An example driver script demonstrating proper interface usage for
network detection/testing is provided in scripts/detect.py
,
together with the scripts/input_detect.dat
input file.
Note
To run this example, certain options must be set in the inputfile. For image detection only,
set plot_flag = False
and ensure that the following pieces of data exist
and are specified in the input file:
imagepath
: filepath to image datasetnetworkcfg
: YOLOv3 network configuration filenetworksavefile
: PyTorch saved neural network file (.pt)
To additionally run with scoring, set plot_flag = True
and ensure that these
necessary options are specified in the input file as well:
targetspath
: filepath to the target metadata fileclass_path
: filepath to the class names/labels fileclass_mean
: filepath to training data class mean statisticsclass_sigma
: filepath to training data class sigma statistics
For more details, consult the Code Documentation on the InputFile class.
To run this example, do the following:
- Edit the
scripts/input_detect.dat
input file so that those settings involving filepaths accurately reflect the data/filepaths on your machine. - Navigate to the directory that contains yolov3, and issue the following shell command to run the script as a package:
>>> python3 -m yolov3.scripts.detect yolov3/scripts/input_detect.datNote
Mulitple-GPU support is currently not available for any part of this software. Please run in either CPU or single-GPU mode only. If you have multiple GPUs on your machine, you may use the CUDA_VISIBLE_DEVICES flag to enforce single-GPU mode, e.g.:
>>> CUDA_VISIBLE_DEVICES=0 python3 -m yolov3.scripts.detect yolov3/scripts/input_detect.dat