Package: ak-video-analyser
AKFruitYield: AK_VIDEO_ANALYSER - Azure Kinect Video AnalyserAKFruitYield is a modular software that allows orchard data from RGB-D Azure Kinect cameras to be processed for fruit
size and fruit yield estimation. Specifically, two modules have been developed: i)AK_SIMULATORthat makes it possible
to apply different sizing algorithms and allometric yield prediction models to manually labeled color and depth tree
images; and ii)AK_VIDEO_ANALYSERthat analyses videos on which to automatically detect apples, estimate their size and
predict yield at the plot or per hectare scale using the appropriate simulated algorithms. Both modules have easy-to-use
graphical interfaces and provide reports that can subsequently be used by other analysis tools.AK_VIDEO_ANALYSERis part of theAKFruitDataand AKFruitYield family (Fig 1.), a suite
that offers field acquisition tools focused on theAzure Kinect DK sensor. Table 1-2 shows the links to the other
developed tools.Fig. 1. a) Proposed stages of data acquisition and extraction for AKFruitData and AKFruitYield. Dashed green lines correspond to processes related to acquisition, red lines to processes related to data creation and training, and black lines to processes for performance estimation. b) Interoperability between the data acquisition (AK_ACQS;AK_SM_RECORDER), data creation (AK_FRAEX), algorithm simulation (AK_SIMULATOR) and video analysis (AK_VIDEO_ANALYSER) modules. The processes proposed in Figure 1 are expanded and represented by the developed software.PackageDescriptionAK_ACQS Azure Kinect Acquisition System (https://github.com/GRAP-UdL-AT/ak_acquisition_system)AK_ACQS is a software solution for data acquisition in fruit orchards using a sensor system boarded on a terrestrial vehicle. It allows the coordination of computers and sensors through the sending of remote commands via a GUI. At the same time, it adds an abstraction layer on library stack of each sensor, facilitating its integration. This software solution is supported by a local area network (LAN), which connects computers and sensors from different manufacturers ( cameras of different technologies, GNSS receiver) for in-field fruit yield testing.AK_SM_RECORDER - Azure Kinect Standalone Mode (https://github.com/GRAP-UdL-AT/ak_sm_recorder)A simple GUI recorder based on Python to manage Azure Kinect camera devices in a standalone mode.https://pypi.org/project/ak-sm-recorder/AK_FRAEX - Azure Kinect Frame Extractor (https://github.com/GRAP-UdL-AT/ak_frame_extractor)AK_FRAEX is a desktop tool created for post-processing tasks after field acquisition. It enables the extraction of information from videos recorded in MKV format with the Azure Kinect camera. Through a GUI, the user can configure initial parameters to extract frames and automatically create the necessary metadata for a set of images. (https://pypi.org/project/ak-frame-extractor/)Table 1.Modules developed under theAKFruitDatafamilyPackageDescriptionAK_SIMULATOR - Azure Kinect Size Estimation & Weight Prediction Simulator (https://github.com/GRAP-UdL-AT/ak_simulator/)Python based GUI tool for fruit size estimation and weight prediction.AK_VIDEO_ANALYSER - Azure Kinect Video Analyser (https://github.com/GRAP-UdL-AT/ak_video_analyser/)Python based GUI tool for fruit size estimation and weight prediction from videos.Table 2.Modules developed under the AKFruitYield familyAK_VIDEO_ANALYSER descriptionAK_VIDEO_ANALYSERis a Python based GUI tool for fruit size estimation and weight prediction from videos recorded with
theAzure Kinect DK sensorcamera  inMatroskaformat (Fig 2.). It receives as input a set of videos to analyse and gives as result
reports in CSV datasheet format with measures and weight predictions of each detected fruit. Videos were recorded as is explained byMiranda et al., 2022and examples available atAK_FRAEX - Azure Kinect Frame Extractor demo videos.
Table 1 shows the links to the other developed tools. This is the Github repository ofak_video_analyser, an installable version can be found published onPypi.orgat the following
linkhttps://pypi.org/project/ak-video-analyser/Fig. 2. AK_VIDEO_ANALYSER module user interface. a) Main GUI. b) Output screen showing detected fruits and report of results in real time.ContentsPre-requisites.Functionalities.Install and run.Files and folder description.Development tools, environment, build executables.1. Pre-requisitesSDK Azure Kinectinstalled.pyk4a libraryinstalled. If the operating system is Windows, follow
thesesteps. You can find test basic examples with
pyk4ahere.In Ubuntu 20.04, we provide a script to install the camera drivers following the instructions
inazure_kinect_notes.Videos recorded with the Azure Kinect camera, optional video samples are available
atAK_FRAEX - Azure Kinect Frame Extractor demo videos2. FunctionalitiesThe functionalities of the software are briefly described. Supplementary material can be found
inUSER's Manual.Analyse videoallows the user to configure video analysis parameters. Examples are the number of frames to analyze, filters to apply, or detection, sizing and weight prediction models to be implemented. Results are displayed on screen and conveniently organized in a CSV file.Preview videohelps to configure detection zone dimensions and distance filters on color images.Export framesprovides the user with a set of analyzed images and the information obtained. It is a useful functionality to observe how algorithms are applied on the frames.Reset settingsallows the user default values in the GUI to be reset.Run in command lineallows video analysis using the command line without the need for a GUI screen. Useful functionality in carrying out scriptable processes.3. Install and run (TO COMPLETE)3.1 PIP quick install package  (TO COMPLETE)The fastest way to runak-video-analyseris to install using the pip command. Create your virtual Python
environment.python3 -m venv ./ak-video-analyser-venv

# On Windows systems .\venv\Scripts\activate
source ./ak-video-analyser-venv/bin/activate

# On Windows systems python.exe -m pip install --upgrade pip

pip install --upgrade pip

pip install ak-video-analyser
python -m ak_video_analyserDownload videos recorded with the Azure Kinect camera, optional video samples are available atAK_FRAEX - Azure Kinect Frame Extractor demo videos.Executing from command linepython -m ak_video_analyser.ak_video_analyser_cmd3.2 Install and run virtual environments using scripts providedInstalling and running using virtual environments is a second alternative.Enter to the folder"ak-video-analyser/"Create virtual environment(only first time)./creating_env_ak_video_analyser.shWith the environment created, install the libraries using the files for each operating system:requirements_windows_10.txtrequirements_ubuntu_20.04_cpu.txtrequirements_ubuntu_20.04_gpu.txtFor example:pip install -r requirements_windows_10.txtRun script for GUI.python ./src/ak-video-analyser_main.pyRun scriptable command-line interfacepython ./src/ak-video-analyser_cmd.pyAn example of command-line processing could be:python ./src/ak-video-analyser_cmd.py --video-path /home/user/recorded_video/static_recording/20210927_115932_k_r2_e_000_150_138.mkv --start-sec 0 --frames 1 --filter-bar VERTICAL --filter-px 300 --depth-min 500 --depth-max 3800 --roi-sel MASK --model-sel MASK_RCNN_CUSTOMIZED --threshold 0.8 --size-sel EF --depth-sel AVG --weight-sel D1D2_LM_MET_034.3 Files and folder descriptionFolder description:FoldersDescriptiondocs/Documentationsrc/Source codeAK_FRAEX - Azure Kinect Frame Extractor demo videosVideos were recorded as is explained byMiranda et al., 2022and examples available atAK_FRAEX - Azure Kinect Frame Extractor demo videos...Python environment files:FilesDescriptionOSactivate_env.batActivate environments in WindowsWINak_video_analyser_start.batExecuting main scriptWINcreating_env_ak_frame_extractor.shAutomatically creates Python environmentsLinuxak_video_analyser_start.shExecuting main scriptLinuxMain files:FilesDescriptionOS/src/ak_video_analyser/__main__.pyMain function used in package compilationSupported by Pythonak_video_analyser_main.pyMain function with GUISupported by Pythonak_video_analyser_cmd.pyMain function command-line orientedSupported by PythonPypi.org PIP packages files:FilesDescriptionOSbuild_pip.batBuild PIP package to distributionWIN/src/ak_video_analyser/__main__.pyMain function used in package compilationSupported by Pythonsetup.cfgPackage configuration PIPSupported by Pythonpyproject.tomlPackage description PIPSupported by Python5. Development tools, environment, build executablesSome development tools are needed with this package, if you need to reproduce the package compilation process, the tools
are listed below:Opencv.7zip.5.1 Notes for developersYou can use the __main__.py for execute as first time in src/ak_video_analyser/__main__.py Configure the path of
the project, if you use Pycharm, put your folder root like this:5.2 Creating virtual environment Windows / Linuxpython3 -m venv ak_video_analyser_venv
source ./ak_video_analyser_venv/bin/activate
pip install --upgrade pip
pip install -r requirements_windows.txt or pip install -r requirements_linux.txt** If there are some problems in Windows, followthis**pip install pyk4a --no-use-pep517 --global-option=build_ext --global-option="-IC:\Program Files\Azure Kinect SDK v1.4.1\sdk\include" --global-option="-LC:\Program Files\Azure Kinect SDK v1.4.1\sdk\windows-desktop\amd64\release\lib"5.3 Building PIP packageWe are working to offer Pypi support for this package. At this time this software can be built by scripts automatically.5.3.1 Build packagespy -m pip install --upgrade build
build_pip.bat5.3.2 Download PIP packagepip install package.whl5.3.3 Run ak-video-analyserpython -m ak_video_analyser.pyAfter the execution of the script, a new folder will be generated inside the project"/dist". You can copy **
ak_size_estimation_f/** or a compressed file"ak_frame_Extractor_f.zip"to distribute.5.6 Package distribution formatAt this time, the current supported format for the distribution is Python packages.Package typePackageUrlDescriptionPIP.whl.whlPIP packages are stored in build/AuthorshipThis project is contributed byGRAP-UdL-AT. Please contact authors to report bugsjuancarlos.miranda@udl.catCitationIf you find this code useful, please consider citing:@article{MIRANDA2022101231,
title = {AKFruitYield: Modular simulation and video analysis software for Azure Kinect cameras for fruit size and fruit yield estimation in apple orchards},
journal = {SoftwareX},
volume = {XX},
pages = {000000},
year = {2023},
issn = {0000-0000},
doi = {},
url = {},
author = {Juan Carlos Miranda and Jaume Arnó and Jordi Gené-Mola and Spyros Fountas and Eduard Gregorio},
keywords = {RGB-D camera, apple fruit sizing, yield prediction, detection and simulation algorithms, allometry},
abstract = {.}
}AcknowledgementsThis work was partly funded by the Department of Research and Universities of the Generalitat de Catalunya (grants 2017
SGR 646) and by the Spanish Ministry of Science and Innovation/AEI/10.13039/501100011033/ERDF (grant
RTI2018-094222-B-I00PAgFRUIT projectand PID2021-126648OB-I00PAgPROTECT project. The Secretariat of Universities
and Research of the Department of Business and Knowledge of theGeneralitat de Catalunyaand European Social Fund (ESF)
are also thanked for financing Juan Carlos Miranda’s pre-doctoral fellowship (2020 FI_B 00586). The work of Jordi
Gené-Mola was supported by the Spanish Ministry of Universities through a Margarita Salas postdoctoral grant funded by
the European Union - NextGenerationEU. The authors would also like to thank the Institut de Recerca i Tecnologia
Agroalimentàries(IRTA)for allowing the use of their experimental fields, and in particular Dr. Luís Asín and Dr. Jaume
Lordán who have contributed to the success of this work.