Compare commits

...

17 Commits

Author SHA1 Message Date
Sergey Revyakin e89b6f6545 Поменял расположение файла зависимостей 3 weeks ago
Sergey Revyakin f4c4a0bd22 Изменил capture hourly для возможного запуска
через at
3 weeks ago
Sergey Revyakin ce87ded510 Readme для агента 3 weeks ago
Sergey Revyakin a54e6ae3da не валится на сервисах без прописанных hack_id 3 weeks ago
Sergey Revyakin bc1f6ce578 изменил конфиг обучения 1 month ago
Sergey Revyakin 3b76f81c70 Расширил памятку по Readme.md 1 month ago
Sergey Revyakin 053a1384e9 добавил сервисы на 2400 и 5800 для nn 1 month ago
Sergey Revyakin eaacc8e3b7 Merge remote-tracking branch 'origin/automatica-1' into Ufa 1 month ago
Sergey Revyakin b8d7db91cf . 1 month ago
Sergey Revyakin 73b0bc3298 Добавил скрипт на проверку диапазонов широким сканированием 1 month ago
Sergey Revyakin f7aed6b0e2 Добавил .venv в игнор 1 month ago
Sergey Revyakin c53bc9bd7a добавил .venv в игнор 1 month ago
Sergey Revyakin 5624b3065f добавил распаковку и установку torchsig в скрипте 1 month ago
Sergey Revyakin 69d6ae19bd добавил нужный бинарник torchsig 1 month ago
Sergey Revyakin df2ddd5b94 убрал хардкод в capture_hourly.sh 1 month ago
Sergey Revyakin f91df8de44 добавил шаблон .env 1 month ago
Sergey Revyakin d6feece926 Удалил лишние скрипты и бинарники 1 month ago

@ -0,0 +1,272 @@
#################
# GENERAL
#################
module_name=dronedetector
freqs=433,750,868,915,1200,1500,2400,3300,4500,5200,5800
signal_threshold=0.02
signal_threshold_433=0.0195
signal_threshold_700=0.01
signal_threshold_868=0.01
signal_threshold_5200=0.01
signal_threshold_5800=0.01
# Runtime flags
# 1/0, true/false, yes/no, on/off
debug_flag=0
debug_freq_flag=0
debug_module_flag=0
send_to_module_flag=1
save_data_flag=0
freq_endpoint=process_data
send_to_master_flag=1
send_to_jammer_flag=0
jammer_timeout=2
master_timeout=1
amount_connection_attempts=3
mad_k_on=5.0
mad_eps=0.05
# Per-frequency MAD sensitivity (scanner frequencies)
path_to_save_medians=/tmp/dronedetector/noises_medians/
path_to_save_alarms=/tmp/dronedetector/alarms/
elems_to_save=signal,abs_signal
file_types_to_save=npy,npy
smb_host=127.0.0.1
smb_port=139
smb_user=guest
smb_pass=guest
shared_folder=shared
the_pc_name=dronedetector-host
remote_pc_name=dronedetector-storage
smb_domain=WORKGROUP
#################
# 433
#################
hack_433=
c_freq_433=433
f_step_433=-20e6
f_bases_433=0.480e9
f_roofs_433=0.400e9
signal_length_433=1000000
buffer_columns_size_433=11
num_of_thinning_iter_433=32
multiply_factor_433=1.3
num_for_alarm_433=4
mad_k_on_433=0
dbfs_linear_offset_db_433=0
dbfs_linear_abs_median_scale_433=0
#################
# 750
#################
hack_750=
c_freq_750=750
f_step_750=-20e6
f_bases_750=0.755e9
f_roofs_750=0.695e9
signal_length_750=1000000
buffer_columns_size_750=11
num_of_thinning_iter_750=32
multiply_factor_750=1.3
num_for_alarm_750=4
mad_k_on_750=0
dbfs_linear_offset_db_750=0
dbfs_linear_abs_median_scale_750=0
#################
# 915
#################
hack_915=
c_freq_915=915
f_step_915=-20e6
f_bases_915=0.98e9
f_roofs_915=0.840e9
signal_length_915=1000000
buffer_columns_size_915=11
num_of_thinning_iter_915=32
multiply_factor_915=1.3
num_for_alarm_915=4
mad_k_on_915=0
dbfs_linear_offset_db_915=0
dbfs_linear_abs_median_scale_915=0
#################
# 1200
#################
hack_1200=
c_freq_1200=1200
f_step_1200=-20e6
f_bases_1200=1.1e9
f_roofs_1200=1.3e9
signal_length_1200=1000000
buffer_columns_size_1200=11
num_of_thinning_iter_1200=32
multiply_factor_1200=1.3
num_for_alarm_1200=4
mad_k_on_1200=0
dbfs_linear_offset_db_1200=0
dbfs_linear_abs_median_scale_1200=0
#################
# 1500
#################
hack_1500=
c_freq_1500=1500
f_step_1500=-20e6
f_bases_1500=1.605e9
f_roofs_1500=1.405e9
signal_length_1500=1000000
buffer_columns_size_1500=11
num_of_thinning_iter_1500=32
multiply_factor_1500=1.3
num_for_alarm_1500=4
mad_k_on_1500=0
dbfs_linear_offset_db_1500=0
dbfs_linear_abs_median_scale_1500=0
#################
# 2400
#################
hack_2400=
c_freq_2400=2400
f_step_2400=-20e6
f_bases_2400=2.3e9
f_roofs_2400=2.5e9
signal_length_2400=1000000
buffer_columns_size_2400=11
num_of_thinning_iter_2400=32
multiply_factor_2400=1.3
num_for_alarm_2400=4
mad_k_on_2400=0
dbfs_linear_offset_db_2400=0
dbfs_linear_abs_median_scale_2400=0
#################
# 3300
#################
hack_3300=
c_freq_3300=3300
f_step_3300=-20e6
f_bases_3300=3.5e9
f_roofs_3300=3.3e9
signal_length_3300=1000000
buffer_columns_size_3300=11
num_of_thinning_iter_3300=32
multiply_factor_3300=1.3
num_for_alarm_3300=3
mad_k_on_3300=0
dbfs_linear_offset_db_3300=0
dbfs_linear_abs_median_scale_3300=0
#################
# 4500
#################
hack_4500=
c_freq_4500=4500
f_step_4500=-20e6
f_bases_4500=4.7e9
f_roofs_4500=4.5e9
signal_length_4500=1000000
buffer_columns_size_4500=11
num_of_thinning_iter_4500=32
multiply_factor_4500=1.3
num_for_alarm_4500=2
mad_k_on_4500=0
dbfs_linear_offset_db_4500=0
dbfs_linear_abs_median_scale_4500=0
#################
# 5200
#################
hack_5200=
c_freq_5200=5200
f_step_5200=-20e6
f_bases_5200=5.3e9
f_roofs_5200=5.1e9
signal_length_5200=1000000
buffer_columns_size_5200=11
num_of_thinning_iter_5200=32
multiply_factor_5200=1.08
num_for_alarm_5200=3
mad_k_on_5200=0
dbfs_linear_offset_db_5200=0
dbfs_linear_abs_median_scale_4500=0
#################
# 5800
#################
hack_5800=
c_freq_5800=5800
f_step_5800=-20e6
f_bases_5800=5.8e9
f_roofs_5800=5.5e9
signal_length_5800=1000000
buffer_columns_size_5800=11
num_of_thinning_iter_5800=32
multiply_factor_5800=1.08
num_for_alarm_5800=3
mad_k_on_5800=0
dbfs_linear_offset_db_5200=0
dbfs_linear_abs_median_scale_5800=0
#################
# MODULE SERVER (server_to_master)
#################
lochost=0.0.0.0
locport=5010
master_server_ip=192.168.11.223
master_server_port=3000
module_mac=bc:fc:e7:ca:87:2b
module_ip=192.168.11.223
threshold_to_alarm=5
num_of_clear_packs=5
time_to_jam=30
time_to_fresh=5
active_interval_to_send=1
passive_interval_to_send=60
gpsport=/dev/null
latitude=1
longitude=1
jamhost=127.0.0.1
jamport=3000
#################
# ORANGE SDR (915/1200/2400 -> NN_server)
#################
POROG_2400=0.01
HACKID_2400=
POROG_1200=0.01
HACKID_1200=
POROG_915=0.01
HACKID_915=
SERVER_IP_1=127.0.0.1
SERVER_PORT_1=8080
SERVER_IP_2=127.0.0.1
SERVER_PORT_2=8080
#################
# NN_SERVER
#################
FREQS=915,1200,2400
PATH_TO_NN=/app/NN_server/NN/
SRC_RESULT=/app/NN_server/result/
SRC_EXAMPLE=${PATH_TO_NN}example/
NN_1='${PATH_TO_NN}resnet18_1.pth && ${PATH_TO_NN}config_resnet18.yaml && ${SRC_EXAMPLE} && ${SRC_RESULT} && Resnet18_1_2400 && build_func_resnet18 && pre_func_resnet18 && inference_func_resnet18 && post_func_resnet18 && [drone,noise,wifi] && 10 && 1 && /app/NN_server/datasets/full_dataset_pic/'
NN_21='${PATH_TO_NN}ensemble_1.2.pth && ${PATH_TO_NN}config_ensemble.yaml && ${SRC_EXAMPLE} && ${SRC_RESULT} && ensemble_1200 && build_func_ensemble && pre_func_ensemble && inference_func_ensemble && post_func_ensemble && [drone,noise] && 10 && 1 && /app/NN_server/datasets/full_dataset/'
NN_22='${PATH_TO_NN}ensemble_915.pth && ${PATH_TO_NN}config_ensemble.yaml && ${SRC_EXAMPLE} && ${SRC_RESULT} && ensemble_915 && build_func_ensemble && pre_func_ensemble && inference_func_ensemble && post_func_ensemble && [drone,noise] && 10 && 1 && /app/NN_server/datasets/full_dataset/'
GENERAL_SERVER_IP=dronedetector-server-to-master
GENERAL_SERVER_PORT=5010
SERVER_IP=0.0.0.0
SERVER_PORT=8080
NN_HOT_RELOAD=1

2
.gitignore vendored

@ -147,7 +147,7 @@ celerybeat.pid
.env.bak* .env.bak*
.venv .venv
env/ env/
venv/ .venv/
ENV/ ENV/
env.bak/ env.bak/
venv.bak/ venv.bak/

@ -1,247 +0,0 @@
<#
.Synopsis
Activate a Python virtual environment for the current PowerShell session.
.Description
Pushes the python executable for a virtual environment to the front of the
$Env:PATH environment variable and sets the prompt to signify that you are
in a Python virtual environment. Makes use of the command line switches as
well as the `pyvenv.cfg` file values present in the virtual environment.
.Parameter VenvDir
Path to the directory that contains the virtual environment to activate. The
default value for this is the parent of the directory that the Activate.ps1
script is located within.
.Parameter Prompt
The prompt prefix to display when this virtual environment is activated. By
default, this prompt is the name of the virtual environment folder (VenvDir)
surrounded by parentheses and followed by a single space (ie. '(.venv) ').
.Example
Activate.ps1
Activates the Python virtual environment that contains the Activate.ps1 script.
.Example
Activate.ps1 -Verbose
Activates the Python virtual environment that contains the Activate.ps1 script,
and shows extra information about the activation as it executes.
.Example
Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv
Activates the Python virtual environment located in the specified location.
.Example
Activate.ps1 -Prompt "MyPython"
Activates the Python virtual environment that contains the Activate.ps1 script,
and prefixes the current prompt with the specified string (surrounded in
parentheses) while the virtual environment is active.
.Notes
On Windows, it may be required to enable this Activate.ps1 script by setting the
execution policy for the user. You can do this by issuing the following PowerShell
command:
PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
For more information on Execution Policies:
https://go.microsoft.com/fwlink/?LinkID=135170
#>
Param(
[Parameter(Mandatory = $false)]
[String]
$VenvDir,
[Parameter(Mandatory = $false)]
[String]
$Prompt
)
<# Function declarations --------------------------------------------------- #>
<#
.Synopsis
Remove all shell session elements added by the Activate script, including the
addition of the virtual environment's Python executable from the beginning of
the PATH variable.
.Parameter NonDestructive
If present, do not remove this function from the global namespace for the
session.
#>
function global:deactivate ([switch]$NonDestructive) {
# Revert to original values
# The prior prompt:
if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) {
Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt
Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT
}
# The prior PYTHONHOME:
if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) {
Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME
Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME
}
# The prior PATH:
if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) {
Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH
Remove-Item -Path Env:_OLD_VIRTUAL_PATH
}
# Just remove the VIRTUAL_ENV altogether:
if (Test-Path -Path Env:VIRTUAL_ENV) {
Remove-Item -Path env:VIRTUAL_ENV
}
# Just remove VIRTUAL_ENV_PROMPT altogether.
if (Test-Path -Path Env:VIRTUAL_ENV_PROMPT) {
Remove-Item -Path env:VIRTUAL_ENV_PROMPT
}
# Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether:
if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) {
Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force
}
# Leave deactivate function in the global namespace if requested:
if (-not $NonDestructive) {
Remove-Item -Path function:deactivate
}
}
<#
.Description
Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the
given folder, and returns them in a map.
For each line in the pyvenv.cfg file, if that line can be parsed into exactly
two strings separated by `=` (with any amount of whitespace surrounding the =)
then it is considered a `key = value` line. The left hand string is the key,
the right hand is the value.
If the value starts with a `'` or a `"` then the first and last character is
stripped from the value before being captured.
.Parameter ConfigDir
Path to the directory that contains the `pyvenv.cfg` file.
#>
function Get-PyVenvConfig(
[String]
$ConfigDir
) {
Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg"
# Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue).
$pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue
# An empty map will be returned if no config file is found.
$pyvenvConfig = @{ }
if ($pyvenvConfigPath) {
Write-Verbose "File exists, parse `key = value` lines"
$pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath
$pyvenvConfigContent | ForEach-Object {
$keyval = $PSItem -split "\s*=\s*", 2
if ($keyval[0] -and $keyval[1]) {
$val = $keyval[1]
# Remove extraneous quotations around a string value.
if ("'""".Contains($val.Substring(0, 1))) {
$val = $val.Substring(1, $val.Length - 2)
}
$pyvenvConfig[$keyval[0]] = $val
Write-Verbose "Adding Key: '$($keyval[0])'='$val'"
}
}
}
return $pyvenvConfig
}
<# Begin Activate script --------------------------------------------------- #>
# Determine the containing directory of this script
$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition
$VenvExecDir = Get-Item -Path $VenvExecPath
Write-Verbose "Activation script is located in path: '$VenvExecPath'"
Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)"
Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)"
# Set values required in priority: CmdLine, ConfigFile, Default
# First, get the location of the virtual environment, it might not be
# VenvExecDir if specified on the command line.
if ($VenvDir) {
Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values"
}
else {
Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir."
$VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/")
Write-Verbose "VenvDir=$VenvDir"
}
# Next, read the `pyvenv.cfg` file to determine any required value such
# as `prompt`.
$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir
# Next, set the prompt from the command line, or the config file, or
# just use the name of the virtual environment folder.
if ($Prompt) {
Write-Verbose "Prompt specified as argument, using '$Prompt'"
}
else {
Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value"
if ($pyvenvCfg -and $pyvenvCfg['prompt']) {
Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'"
$Prompt = $pyvenvCfg['prompt'];
}
else {
Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virtual environment)"
Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'"
$Prompt = Split-Path -Path $venvDir -Leaf
}
}
Write-Verbose "Prompt = '$Prompt'"
Write-Verbose "VenvDir='$VenvDir'"
# Deactivate any currently active virtual environment, but leave the
# deactivate function in place.
deactivate -nondestructive
# Now set the environment variable VIRTUAL_ENV, used by many tools to determine
# that there is an activated venv.
$env:VIRTUAL_ENV = $VenvDir
if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) {
Write-Verbose "Setting prompt to '$Prompt'"
# Set the prompt to include the env name
# Make sure _OLD_VIRTUAL_PROMPT is global
function global:_OLD_VIRTUAL_PROMPT { "" }
Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT
New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt
function global:prompt {
Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) "
_OLD_VIRTUAL_PROMPT
}
$env:VIRTUAL_ENV_PROMPT = $Prompt
}
# Clear PYTHONHOME
if (Test-Path -Path Env:PYTHONHOME) {
Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME
Remove-Item -Path Env:PYTHONHOME
}
# Add the venv to the PATH
Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH
$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH"

@ -1,70 +0,0 @@
# This file must be used with "source bin/activate" *from bash*
# You cannot run it directly
deactivate () {
# reset old environment variables
if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
PATH="${_OLD_VIRTUAL_PATH:-}"
export PATH
unset _OLD_VIRTUAL_PATH
fi
if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
export PYTHONHOME
unset _OLD_VIRTUAL_PYTHONHOME
fi
# Call hash to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
hash -r 2> /dev/null
if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
PS1="${_OLD_VIRTUAL_PS1:-}"
export PS1
unset _OLD_VIRTUAL_PS1
fi
unset VIRTUAL_ENV
unset VIRTUAL_ENV_PROMPT
if [ ! "${1:-}" = "nondestructive" ] ; then
# Self destruct!
unset -f deactivate
fi
}
# unset irrelevant variables
deactivate nondestructive
# on Windows, a path can contain colons and backslashes and has to be converted:
if [ "${OSTYPE:-}" = "cygwin" ] || [ "${OSTYPE:-}" = "msys" ] ; then
# transform D:\path\to\venv to /d/path/to/venv on MSYS
# and to /cygdrive/d/path/to/venv on Cygwin
export VIRTUAL_ENV=$(cygpath /home/sibscience-4/from_ssh/DroneDetector/.venv-sdr)
else
# use the path as-is
export VIRTUAL_ENV=/home/sibscience-4/from_ssh/DroneDetector/.venv-sdr
fi
_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/"bin":$PATH"
export PATH
# unset PYTHONHOME if set
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
# could use `if (set -u; : $PYTHONHOME) ;` in bash
if [ -n "${PYTHONHOME:-}" ] ; then
_OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}"
unset PYTHONHOME
fi
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
_OLD_VIRTUAL_PS1="${PS1:-}"
PS1='(.venv-sdr) '"${PS1:-}"
export PS1
VIRTUAL_ENV_PROMPT='(.venv-sdr) '
export VIRTUAL_ENV_PROMPT
fi
# Call hash to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
hash -r 2> /dev/null

@ -1,27 +0,0 @@
# This file must be used with "source bin/activate.csh" *from csh*.
# You cannot run it directly.
# Created by Davide Di Blasi <davidedb@gmail.com>.
# Ported to Python 3.3 venv by Andrew Svetlov <andrew.svetlov@gmail.com>
alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate'
# Unset irrelevant variables.
deactivate nondestructive
setenv VIRTUAL_ENV /home/sibscience-4/from_ssh/DroneDetector/.venv-sdr
set _OLD_VIRTUAL_PATH="$PATH"
setenv PATH "$VIRTUAL_ENV/"bin":$PATH"
set _OLD_VIRTUAL_PROMPT="$prompt"
if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then
set prompt = '(.venv-sdr) '"$prompt"
setenv VIRTUAL_ENV_PROMPT '(.venv-sdr) '
endif
alias pydoc python -m pydoc
rehash

@ -1,69 +0,0 @@
# This file must be used with "source <venv>/bin/activate.fish" *from fish*
# (https://fishshell.com/). You cannot run it directly.
function deactivate -d "Exit virtual environment and return to normal shell environment"
# reset old environment variables
if test -n "$_OLD_VIRTUAL_PATH"
set -gx PATH $_OLD_VIRTUAL_PATH
set -e _OLD_VIRTUAL_PATH
end
if test -n "$_OLD_VIRTUAL_PYTHONHOME"
set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME
set -e _OLD_VIRTUAL_PYTHONHOME
end
if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
set -e _OLD_FISH_PROMPT_OVERRIDE
# prevents error when using nested fish instances (Issue #93858)
if functions -q _old_fish_prompt
functions -e fish_prompt
functions -c _old_fish_prompt fish_prompt
functions -e _old_fish_prompt
end
end
set -e VIRTUAL_ENV
set -e VIRTUAL_ENV_PROMPT
if test "$argv[1]" != "nondestructive"
# Self-destruct!
functions -e deactivate
end
end
# Unset irrelevant variables.
deactivate nondestructive
set -gx VIRTUAL_ENV /home/sibscience-4/from_ssh/DroneDetector/.venv-sdr
set -gx _OLD_VIRTUAL_PATH $PATH
set -gx PATH "$VIRTUAL_ENV/"bin $PATH
# Unset PYTHONHOME if set.
if set -q PYTHONHOME
set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
set -e PYTHONHOME
end
if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
# fish uses a function instead of an env var to generate the prompt.
# Save the current fish_prompt function as the function _old_fish_prompt.
functions -c fish_prompt _old_fish_prompt
# With the original prompt function renamed, we can override with our own.
function fish_prompt
# Save the return status of the last command.
set -l old_status $status
# Output the venv prompt; color taken from the blue of the Python logo.
printf "%s%s%s" (set_color 4B8BBE) '(.venv-sdr) ' (set_color normal)
# Restore the return status of the previous command.
echo "exit $old_status" | .
# Output the original/"old" prompt.
_old_fish_prompt
end
set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
set -gx VIRTUAL_ENV_PROMPT '(.venv-sdr) '
end

@ -1,6 +0,0 @@
#!/home/sibscience-4/from_ssh/DroneDetector/.venv-sdr/bin/python3
import sys
from numpy.f2py.f2py2e import main
if __name__ == '__main__':
sys.argv[0] = sys.argv[0].removesuffix('.exe')
sys.exit(main())

@ -1,6 +0,0 @@
#!/home/sibscience-4/from_ssh/DroneDetector/.venv-sdr/bin/python3
import sys
from charset_normalizer.cli import cli_detect
if __name__ == '__main__':
sys.argv[0] = sys.argv[0].removesuffix('.exe')
sys.exit(cli_detect())

@ -1,8 +0,0 @@
#!/home/sibscience-4/from_ssh/DroneDetector/.venv-sdr/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

@ -1,8 +0,0 @@
#!/home/sibscience-4/from_ssh/DroneDetector/.venv-sdr/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

@ -1,8 +0,0 @@
#!/home/sibscience-4/from_ssh/DroneDetector/.venv-sdr/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

@ -1 +0,0 @@
/usr/bin/python3

@ -1,5 +0,0 @@
home = /usr/bin
include-system-site-packages = true
version = 3.12.3
executable = /usr/bin/python3.12
command = /usr/bin/python3 -m venv --system-site-packages /home/sibscience-4/from_ssh/DroneDetector/.venv-sdr

@ -0,0 +1,66 @@
# CLAUDE.md
Behavioral guidelines to reduce common LLM coding mistakes. Merge with project-specific instructions as needed.
**Tradeoff:** These guidelines bias toward caution over speed. For trivial tasks, use judgment.
## 1. Think Before Coding
**Don't assume. Don't hide confusion. Surface tradeoffs.**
Before implementing:
- State your assumptions explicitly. If uncertain, ask.
- If multiple interpretations exist, present them - don't pick silently.
- If a simpler approach exists, say so. Push back when warranted.
- If something is unclear, stop. Name what's confusing. Ask.
## 2. Simplicity First
**Minimum code that solves the problem. Nothing speculative.**
- No features beyond what was asked.
- No abstractions for single-use code.
- No "flexibility" or "configurability" that wasn't requested.
- No error handling for impossible scenarios.
- If you write 200 lines and it could be 50, rewrite it.
Ask yourself: "Would a senior engineer say this is overcomplicated?" If yes, simplify.
## 3. Surgical Changes
**Touch only what you must. Clean up only your own mess.**
When editing existing code:
- Don't "improve" adjacent code, comments, or formatting.
- Don't refactor things that aren't broken.
- Match existing style, even if you'd do it differently.
- If you notice unrelated dead code, mention it - don't delete it.
When your changes create orphans:
- Remove imports/variables/functions that YOUR changes made unused.
- Don't remove pre-existing dead code unless asked.
The test: Every changed line should trace directly to the user's request.
## 4. Goal-Driven Execution
**Define success criteria. Loop until verified.**
Transform tasks into verifiable goals:
- "Add validation" → "Write tests for invalid inputs, then make them pass"
- "Fix the bug" → "Write a test that reproduces it, then make it pass"
- "Refactor X" → "Ensure tests pass before and after"
For multi-step tasks, state a brief plan:
```
1. [Step] → verify: [check]
2. [Step] → verify: [check]
3. [Step] → verify: [check]
```
Strong success criteria let you loop independently. Weak criteria ("make it work") require constant clarification.
---
**These guidelines are working if:** fewer unnecessary changes in diffs, fewer rewrites due to overcomplication, and clarifying questions come before implementation rather than after mistakes.

@ -173,8 +173,7 @@ sudo systemctl stop dronedetector-sdr-5800.service
sudo systemctl stop dronedetector-sdr-1200.service sudo systemctl stop dronedetector-sdr-1200.service
sudo systemctl stop dronedetector-sdr-2400.service sudo systemctl stop dronedetector-sdr-2400.service
sudo systemctl stop dronedetector-sdr-1500.service sudo systemctl stop dronedetector-sdr-1500.service
sudo systemctl stop dronedetector-sdr-868.service sudo systemctl stop dronedetector-sdr-915.service
sudo systemctl stop dronedetector-sdr-868-915.service
``` ```
@ -198,8 +197,6 @@ since="$(systemctl show -p ActiveEnterTimestamp --value dronedetector-sdr-5800.s
sudo journalctl -u dronedetector-sdr-5800.service --since "$since" --no-pager sudo journalctl -u dronedetector-sdr-5800.service --since "$since" --no-pager
``` ```
### Просмотр логов от server-to-master ### Просмотр логов от server-to-master
``` bash ``` bash
docker compose -f deploy/docker/docker-compose.yml logs --timestamps dronedetector-server-to-master | tail -n 50 docker compose -f deploy/docker/docker-compose.yml logs --timestamps dronedetector-server-to-master | tail -n 50
@ -210,4 +207,24 @@ docker compose -f deploy/docker/docker-compose.yml logs --timestamps dronedetect
sudo hackrf_spiflash -w hackrf_one_usb.bin sudo hackrf_spiflash -w hackrf_one_usb.bin
``` ```
./.venv-sdr/bin/python scripts_nn/data_saver_headless.py --serial 000 --freq 4500000000 --save-dir /home/sibscience-4/Dataset/3300 --file-tag DJI_3_ --samp-rate 20000000 --split-size 400000 --delay 0.1 --rf-gain 12 --if-gain 30 --bb-gain 36 ### Wide_read_energy
``` bash
./.venv-sdr/bin/python read_energy_wide.py \
--serial 0000000000000000a18c63dc2a83b813 \
--sample-rate 20000000 \
--base 6000 \
--roof 5700 \
--step 20
```
### Проверка тревоги
``` bash
curl -X POST 'http://127.0.0.1:5010/process_data' \
-H 'Content-Type: application/json' \
-d '{"freq":"1200","amplitude":9}'
```
### Read_energy
``` bash
.venv-sdr/bin/python read_energy.py
```

@ -1,31 +1,44 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -Eeuo pipefail set -Eeuo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SCRIPT_OWNER="${CAPTURE_USER:-$(stat -c %U "$SCRIPT_DIR")}"
SCRIPT_OWNER_HOME="$(getent passwd "$SCRIPT_OWNER" | cut -d: -f6)"
cd "$SCRIPT_DIR"
source "$SCRIPT_DIR/.env"
############################ ############################
# НАСТРОЙКИ # НАСТРОЙКИ
############################ ############################
# ЗАМЕНИ на реальную точку монтирования nvme1n1 BASE_DIR="${CAPTURE_BASE_DIR:-${SCRIPT_OWNER_HOME}/dataset/noise}"
BASE_DIR="/mnt/nvme1/dataset"
# Путь к python из venv # Путь к python из venv
PYTHON_BIN="${PYTHON_BIN:-$PWD/.venv-sdr/bin/python}" PYTHON_BIN="${PYTHON_BIN:-$SCRIPT_DIR/.venv-sdr/bin/python}"
# Путь к headless скрипту # Путь к headless скрипту
SCRIPT_PATH="${SCRIPT_PATH:-$PWD/scripts_nn/data_saver_headless.py}" SCRIPT_PATH="${SCRIPT_PATH:-$SCRIPT_DIR/scripts_nn/data_saver_headless.py}"
RUN_ONCE="${RUN_ONCE:-0}"
CAPTURE_LOG_FILE="${CAPTURE_LOG_FILE:-$BASE_DIR/capture_hourly.log}"
SYSTEMCTL_BIN=(systemctl)
CURRENT_CAPTURE_PID=""
CURRENT_SERVICE_UNIT=""
# Проверка, что каталог реально на nvme1n1
EXPECTED_DEVICE_PREFIX="/dev/nvme1n1"
# Лимиты # Лимиты
PER_FREQ_LIMIT_BYTES=$((3 * 1024 * 1024 * 1024)) # 3 GiB на частоту за запуск
TOTAL_LIMIT_BYTES=$((128 * 1024 * 1024 * 1024)) # общий лимит 512 GiB lim_all=10
CYCLE_SECONDS=36 # один цикл в час PER_FREQ_LIMIT_BYTES=$((1 * 1024 * 1024 * 1024)) # GiB на частоту за запуск
TOTAL_LIMIT_BYTES=$((lim_all * 1024 * 1024 * 1024)) # общий лимит GiB
CYCLE_SECONDS=1 # один цикл в час
# Параметры SDR # Параметры SDR
SAMP_RATE="20e6" SAMP_RATE="20e6"
SPLIT_SIZE="400000" SPLIT_SIZE="400000"
DELAY="0.1" DELAY="0.01"
RF_GAIN="12" RF_GAIN="12"
IF_GAIN="30" IF_GAIN="30"
BB_GAIN="36" BB_GAIN="36"
@ -34,41 +47,51 @@ BB_GAIN="36"
# ЧАСТОТЫ И SERIAL ИЗ ENV # ЧАСТОТЫ И SERIAL ИЗ ENV
############################ ############################
ORDER=(433 750 915 1200 2400 3300 4500 5200 5800) ORDER=(433)
declare -A SERIAL declare -A SERIAL
declare -A FREQ_HZ declare -A FREQ_HZ
declare -A SERVICE_UNIT
SERIAL[433]="0000000000000000114864dc382a8e1b" SERIAL[433]="$hack_433"
FREQ_HZ[433]="433000000" FREQ_HZ[433]="433000000"
SERIAL[750]="0000000000000000114864dc383d0d1b" SERIAL[750]="$hack_750"
FREQ_HZ[750]="750000000" FREQ_HZ[750]="750000000"
SERIAL[868]="000000000000000026a468dc36066b63"
FREQ_HZ[868]="868000000"
SERIAL[915]="000000000000000026a468dc36066b63" SERIAL[915]="$hack_915"
FREQ_HZ[915]="915000000" FREQ_HZ[915]="915000000"
SERIAL[1200]="0000000000000000518864dc32660d83" SERIAL[1200]="$hack_1200"
FREQ_HZ[1200]="1200000000" FREQ_HZ[1200]="1200000000"
SERIAL[2400]="0000000000000000919068dc3437b31f" SERIAL[2400]="$hack_2400"
FREQ_HZ[2400]="2400000000" FREQ_HZ[2400]="2400000000"
SERIAL[3300]="0000000000000000114864dc325069a3" SERIAL[3300]="$hack_3300"
FREQ_HZ[3300]="3300000000" FREQ_HZ[3300]="3300000000"
SERIAL[4500]="0000000000000000518864dc33833183" SERIAL[4500]="$hack_4500"
FREQ_HZ[4500]="4500000000" FREQ_HZ[4500]="4500000000"
SERIAL[5200]="0000000000000000874461dc241c7857" SERIAL[5200]="$hack_5200"
FREQ_HZ[5200]="5200000000" FREQ_HZ[5200]="5200000000"
SERIAL[5800]="0000000000000000919068dc35781c1f" SERIAL[5800]="$hack_5800"
FREQ_HZ[5800]="5800000000" FREQ_HZ[5800]="5800000000"
SERVICE_UNIT[433]="dronedetector-sdr-433.service"
SERVICE_UNIT[750]="dronedetector-sdr-750.service"
SERVICE_UNIT[915]="dronedetector-sdr-915.service"
SERVICE_UNIT[1200]="dronedetector-sdr-1200.service"
SERVICE_UNIT[2400]="dronedetector-sdr-2400.service"
SERVICE_UNIT[3300]="dronedetector-sdr-3300.service"
SERVICE_UNIT[4500]="dronedetector-sdr-4500.service"
SERVICE_UNIT[5200]="dronedetector-sdr-5200.service"
SERVICE_UNIT[5800]="dronedetector-sdr-5800.service"
############################ ############################
# ВСПОМОГАТЕЛЬНОЕ # ВСПОМОГАТЕЛЬНОЕ
############################ ############################
@ -77,6 +100,65 @@ log() {
printf '[%s] %s\n' "$(date '+%F %T')" "$*" printf '[%s] %s\n' "$(date '+%F %T')" "$*"
} }
systemctl_run() {
"${SYSTEMCTL_BIN[@]}" "$@"
}
service_exists() {
local unit="$1"
systemctl_run show "$unit" >/dev/null 2>&1
}
stop_band_service() {
local band="$1"
local unit="${SERVICE_UNIT[$band]:-}"
if [[ -z "$unit" ]]; then
log "Для band=$band не найден service unit"
return 0
fi
if ! service_exists "$unit"; then
log "Service unit $unit не установлен, пропускаю stop/start"
return 0
fi
log "Останавливаю service $unit перед записью band=$band"
systemctl_run stop "$unit"
CURRENT_SERVICE_UNIT="$unit"
}
start_current_service() {
if [[ -z "$CURRENT_SERVICE_UNIT" ]]; then
return 0
fi
log "Запускаю service $CURRENT_SERVICE_UNIT после записи"
systemctl_run start "$CURRENT_SERVICE_UNIT"
CURRENT_SERVICE_UNIT=""
}
cleanup_capture() {
if [[ -n "$CURRENT_CAPTURE_PID" ]] && kill -0 "$CURRENT_CAPTURE_PID" 2>/dev/null; then
log "Останавливаю текущий PID=$CURRENT_CAPTURE_PID при завершении скрипта"
kill -TERM "$CURRENT_CAPTURE_PID" 2>/dev/null || true
wait "$CURRENT_CAPTURE_PID" 2>/dev/null || true
fi
CURRENT_CAPTURE_PID=""
if [[ -n "$CURRENT_SERVICE_UNIT" ]]; then
log "Восстанавливаю service $CURRENT_SERVICE_UNIT при завершении скрипта"
systemctl_run start "$CURRENT_SERVICE_UNIT" || true
CURRENT_SERVICE_UNIT=""
fi
}
on_signal() {
local sig="$1"
log "Получен сигнал $sig, завершаю работу"
exit 130
}
dir_size_bytes() { dir_size_bytes() {
local path="$1" local path="$1"
if [[ -e "$path" ]]; then if [[ -e "$path" ]]; then
@ -101,16 +183,41 @@ ensure_requirements() {
exit 1 exit 1
fi fi
if ! command -v systemctl >/dev/null 2>&1; then
echo "Не найден systemctl" >&2
exit 1
fi
if [[ "${EUID}" -ne 0 ]]; then
if command -v sudo >/dev/null 2>&1; then
SYSTEMCTL_BIN=(sudo systemctl)
else
echo "Для управления service нужен root или sudo" >&2
exit 1
fi
fi
mkdir -p "$BASE_DIR" mkdir -p "$BASE_DIR"
mkdir -p "$(dirname "$CAPTURE_LOG_FILE")"
local dev if [[ -n "${CAPTURE_ORDER:-}" ]]; then
dev="$(df -P "$BASE_DIR" | awk 'NR==2 {print $1}')" ORDER=()
local band
for band in ${CAPTURE_ORDER//,/ }; do
ORDER+=("$band")
done
fi
if [[ "$dev" != ${EXPECTED_DEVICE_PREFIX}* ]]; then if [[ "${#ORDER[@]}" -eq 0 ]]; then
echo "BASE_DIR=$BASE_DIR сейчас находится на $dev, а ожидался ${EXPECTED_DEVICE_PREFIX}*" >&2 echo "ORDER пустой. Укажите частоты в ORDER или задайте CAPTURE_ORDER." >&2
echo "Исправь BASE_DIR на точку монтирования nvme1n1" >&2
exit 1 exit 1
fi fi
log "Рабочая директория: $SCRIPT_DIR"
log "BASE_DIR: $BASE_DIR"
log "ORDER: ${ORDER[*]}"
log "RUN_ONCE: $RUN_ONCE"
} }
run_one_freq() { run_one_freq() {
@ -118,14 +225,23 @@ run_one_freq() {
local serial="${SERIAL[$band]}" local serial="${SERIAL[$band]}"
local freq="${FREQ_HZ[$band]}" local freq="${FREQ_HZ[$band]}"
if [[ -z "$serial" ]]; then
log "Для band=$band пустой serial, пропускаю"
return 0
fi
local ts out_dir log_file local ts out_dir log_file
ts="$(date '+%F_%H-%M-%S')" ts="$(date '+%F_%H-%M-%S')"
out_dir="$BASE_DIR/$band/$ts" out_dir="$BASE_DIR/$band/$ts"
log_file="$out_dir/run.log" log_file="$out_dir/run.log"
mkdir -p "$out_dir"
log "Старт band=$band serial=$serial freq=$freq dir=$out_dir" log "Старт band=$band serial=$serial freq=$freq dir=$out_dir"
if ! mkdir -p "$out_dir"; then
log "Не удалось создать каталог $out_dir"
return 1
fi
stop_band_service "$band"
"$PYTHON_BIN" "$SCRIPT_PATH" \ "$PYTHON_BIN" "$SCRIPT_PATH" \
--serial "$serial" \ --serial "$serial" \
@ -141,6 +257,7 @@ run_one_freq() {
>"$log_file" 2>&1 & >"$log_file" 2>&1 &
local pid=$! local pid=$!
CURRENT_CAPTURE_PID="$pid"
log "PID=$pid" log "PID=$pid"
while kill -0 "$pid" 2>/dev/null; do while kill -0 "$pid" 2>/dev/null; do
@ -149,9 +266,11 @@ run_one_freq() {
cur_total_size="$(total_size_bytes)" cur_total_size="$(total_size_bytes)"
if (( cur_total_size >= TOTAL_LIMIT_BYTES )); then if (( cur_total_size >= TOTAL_LIMIT_BYTES )); then
log "Достигнут общий лимит 512 GiB. Останавливаю PID=$pid" log "Достигнут общий лимит $lim_all GiB. Останавливаю PID=$pid"
kill -TERM "$pid" 2>/dev/null || true kill -TERM "$pid" 2>/dev/null || true
wait "$pid" 2>/dev/null || true wait "$pid" 2>/dev/null || true
CURRENT_CAPTURE_PID=""
start_current_service
return 2 return 2
fi fi
@ -178,6 +297,8 @@ run_one_freq() {
sleep 1 sleep 1
done done
CURRENT_CAPTURE_PID=""
start_current_service
log "Завершен band=$band, размер=$(du -sh "$out_dir" | awk '{print $1}')" log "Завершен band=$band, размер=$(du -sh "$out_dir" | awk '{print $1}')"
return 0 return 0
} }
@ -188,7 +309,7 @@ main_loop() {
total_before="$(total_size_bytes)" total_before="$(total_size_bytes)"
if (( total_before >= TOTAL_LIMIT_BYTES )); then if (( total_before >= TOTAL_LIMIT_BYTES )); then
log "Общий размер уже >= 512 GiB, выхожу" log "Общий размер уже >= GiB, выхожу"
break break
fi fi
@ -206,10 +327,18 @@ main_loop() {
if [[ $rc -eq 2 ]]; then if [[ $rc -eq 2 ]]; then
log "Остановка по общему лимиту" log "Остановка по общему лимиту"
return 0 return 0
else
log "Ошибка записи band=$band rc=$rc"
return "$rc"
fi fi
} }
done done
if [[ "$RUN_ONCE" == "1" ]]; then
log "RUN_ONCE=1, завершаю работу после одного цикла"
break
fi
elapsed=$(( $(date +%s) - cycle_start )) elapsed=$(( $(date +%s) - cycle_start ))
sleep_left=$(( CYCLE_SECONDS - elapsed )) sleep_left=$(( CYCLE_SECONDS - elapsed ))
@ -222,5 +351,9 @@ main_loop() {
done done
} }
trap cleanup_capture EXIT
trap 'on_signal INT' INT
trap 'on_signal TERM' TERM
ensure_requirements ensure_requirements
main_loop main_loop

@ -11,7 +11,18 @@ services:
- PYTHONPATH=/app - PYTHONPATH=/app
- JAMMER_STATE_FILE=/app/runtime/jammer_active.flag - JAMMER_STATE_FILE=/app/runtime/jammer_active.flag
working_dir: /app working_dir: /app
command: ["python3", "-m", "src.server_to_master"] command:
- uvicorn
- src.server_to_master:app
- --host
- 0.0.0.0
- --port
- "5010"
- --reload
- --reload-dir
- /app/src
- --reload-dir
- /app/common
restart: unless-stopped restart: unless-stopped
ports: ports:
- "5010:5010" - "5010:5010"
@ -67,7 +78,18 @@ services:
environment: environment:
- PYTHONPATH=/app - PYTHONPATH=/app
working_dir: /app working_dir: /app
command: ["python3", "-m", "telemetry.telemetry_server"] command:
- uvicorn
- telemetry.telemetry_server:app
- --host
- 0.0.0.0
- --port
- "5020"
- --reload
- --reload-dir
- /app/telemetry
- --reload-dir
- /app/common
restart: unless-stopped restart: unless-stopped
ports: ports:
- "5020:5020" - "5020:5020"

@ -8,9 +8,9 @@ Requires=docker.service
Type=oneshot Type=oneshot
WorkingDirectory=__PROJECT_ROOT__ WorkingDirectory=__PROJECT_ROOT__
RemainAfterExit=yes RemainAfterExit=yes
ExecStart=/usr/bin/docker compose -f __PROJECT_ROOT__/deploy/docker/docker-compose.yml up -d --build ExecStart=/usr/bin/docker compose -f __PROJECT_ROOT__/deploy/docker/docker-compose.yml up -d
ExecStop=/usr/bin/docker compose -f __PROJECT_ROOT__/deploy/docker/docker-compose.yml down ExecStop=/usr/bin/docker compose -f __PROJECT_ROOT__/deploy/docker/docker-compose.yml down
ExecReload=/usr/bin/docker compose -f __PROJECT_ROOT__/deploy/docker/docker-compose.yml up -d --build ExecReload=/usr/bin/docker compose -f __PROJECT_ROOT__/deploy/docker/docker-compose.yml up -d
TimeoutStartSec=0 TimeoutStartSec=0
[Install] [Install]

@ -10,8 +10,7 @@ Group=__RUN_GROUP__
WorkingDirectory=__PROJECT_ROOT__ WorkingDirectory=__PROJECT_ROOT__
EnvironmentFile=__PROJECT_ROOT__/.env EnvironmentFile=__PROJECT_ROOT__/.env
Environment=PYTHONPATH=__PROJECT_ROOT__ Environment=PYTHONPATH=__PROJECT_ROOT__
ExecStartPre=/usr/local/bin/dronedetector-precheck-sdr.sh ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_1200.py
ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python orange_scripts/main_1200.py
Restart=always Restart=always
RestartSec=3 RestartSec=3

@ -10,7 +10,6 @@ Group=__RUN_GROUP__
WorkingDirectory=__PROJECT_ROOT__ WorkingDirectory=__PROJECT_ROOT__
EnvironmentFile=__PROJECT_ROOT__/.env EnvironmentFile=__PROJECT_ROOT__/.env
Environment=PYTHONPATH=__PROJECT_ROOT__ Environment=PYTHONPATH=__PROJECT_ROOT__
ExecStartPre=/usr/local/bin/dronedetector-precheck-sdr.sh
ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_1500.py ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_1500.py
Restart=always Restart=always
RestartSec=3 RestartSec=3

@ -10,8 +10,7 @@ Group=__RUN_GROUP__
WorkingDirectory=__PROJECT_ROOT__ WorkingDirectory=__PROJECT_ROOT__
EnvironmentFile=__PROJECT_ROOT__/.env EnvironmentFile=__PROJECT_ROOT__/.env
Environment=PYTHONPATH=__PROJECT_ROOT__ Environment=PYTHONPATH=__PROJECT_ROOT__
ExecStartPre=/usr/local/bin/dronedetector-precheck-sdr.sh ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_2400.py
ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python orange_scripts/main_2400.py
Restart=always Restart=always
RestartSec=3 RestartSec=3

@ -10,7 +10,6 @@ Group=__RUN_GROUP__
WorkingDirectory=__PROJECT_ROOT__ WorkingDirectory=__PROJECT_ROOT__
EnvironmentFile=__PROJECT_ROOT__/.env EnvironmentFile=__PROJECT_ROOT__/.env
Environment=PYTHONPATH=__PROJECT_ROOT__ Environment=PYTHONPATH=__PROJECT_ROOT__
ExecStartPre=/usr/local/bin/dronedetector-precheck-sdr.sh
ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_3300.py ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_3300.py
Restart=always Restart=always
RestartSec=3 RestartSec=3

@ -10,7 +10,6 @@ Group=__RUN_GROUP__
WorkingDirectory=__PROJECT_ROOT__ WorkingDirectory=__PROJECT_ROOT__
EnvironmentFile=__PROJECT_ROOT__/.env EnvironmentFile=__PROJECT_ROOT__/.env
Environment=PYTHONPATH=__PROJECT_ROOT__ Environment=PYTHONPATH=__PROJECT_ROOT__
ExecStartPre=/usr/local/bin/dronedetector-precheck-sdr.sh
ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_433.py ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_433.py
Restart=always Restart=always
RestartSec=3 RestartSec=3

@ -10,7 +10,6 @@ Group=__RUN_GROUP__
WorkingDirectory=__PROJECT_ROOT__ WorkingDirectory=__PROJECT_ROOT__
EnvironmentFile=__PROJECT_ROOT__/.env EnvironmentFile=__PROJECT_ROOT__/.env
Environment=PYTHONPATH=__PROJECT_ROOT__ Environment=PYTHONPATH=__PROJECT_ROOT__
ExecStartPre=/usr/local/bin/dronedetector-precheck-sdr.sh
ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_4500.py ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_4500.py
Restart=always Restart=always
RestartSec=3 RestartSec=3

@ -10,7 +10,6 @@ Group=__RUN_GROUP__
WorkingDirectory=__PROJECT_ROOT__ WorkingDirectory=__PROJECT_ROOT__
EnvironmentFile=__PROJECT_ROOT__/.env EnvironmentFile=__PROJECT_ROOT__/.env
Environment=PYTHONPATH=__PROJECT_ROOT__ Environment=PYTHONPATH=__PROJECT_ROOT__
ExecStartPre=/usr/local/bin/dronedetector-precheck-sdr.sh
ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_5200.py ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_5200.py
Restart=always Restart=always
RestartSec=3 RestartSec=3

@ -10,7 +10,6 @@ Group=__RUN_GROUP__
WorkingDirectory=__PROJECT_ROOT__ WorkingDirectory=__PROJECT_ROOT__
EnvironmentFile=__PROJECT_ROOT__/.env EnvironmentFile=__PROJECT_ROOT__/.env
Environment=PYTHONPATH=__PROJECT_ROOT__ Environment=PYTHONPATH=__PROJECT_ROOT__
ExecStartPre=/usr/local/bin/dronedetector-precheck-sdr.sh
ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_5800.py ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_5800.py
Restart=always Restart=always
RestartSec=3 RestartSec=3

@ -10,7 +10,6 @@ Group=__RUN_GROUP__
WorkingDirectory=__PROJECT_ROOT__ WorkingDirectory=__PROJECT_ROOT__
EnvironmentFile=__PROJECT_ROOT__/.env EnvironmentFile=__PROJECT_ROOT__/.env
Environment=PYTHONPATH=__PROJECT_ROOT__ Environment=PYTHONPATH=__PROJECT_ROOT__
ExecStartPre=/usr/local/bin/dronedetector-precheck-sdr.sh
ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_750.py ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_750.py
Restart=always Restart=always
RestartSec=3 RestartSec=3

@ -1,19 +0,0 @@
[Unit]
Description=DroneDetector SDR Router 868/915 Shared HackRF
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=__RUN_USER__
Group=__RUN_GROUP__
WorkingDirectory=__PROJECT_ROOT__
EnvironmentFile=__PROJECT_ROOT__/.env
Environment=PYTHONPATH=__PROJECT_ROOT__
ExecStartPre=/usr/local/bin/dronedetector-precheck-sdr.sh
ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_868_915_router.py
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target

@ -1,20 +0,0 @@
[Unit]
Description=DroneDetector SDR Scanner 868 MHz
After=network-online.target dronedetector-sdr-868-915.service
Wants=network-online.target
Requires=dronedetector-sdr-868-915.service
[Service]
Type=simple
User=__RUN_USER__
Group=__RUN_GROUP__
WorkingDirectory=__PROJECT_ROOT__
EnvironmentFile=__PROJECT_ROOT__/.env
Environment=PYTHONPATH=__PROJECT_ROOT__
ExecStartPre=/usr/local/bin/dronedetector-precheck-sdr.sh
ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_868.py
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target

@ -1,8 +1,7 @@
[Unit] [Unit]
Description=DroneDetector SDR Scanner 915 MHz Description=DroneDetector SDR Scanner 915 MHz
After=network-online.target dronedetector-sdr-868-915.service After=network-online.target
Wants=network-online.target Wants=network-online.target
Requires=dronedetector-sdr-868-915.service
[Service] [Service]
Type=simple Type=simple
@ -11,8 +10,7 @@ Group=__RUN_GROUP__
WorkingDirectory=__PROJECT_ROOT__ WorkingDirectory=__PROJECT_ROOT__
EnvironmentFile=__PROJECT_ROOT__/.env EnvironmentFile=__PROJECT_ROOT__/.env
Environment=PYTHONPATH=__PROJECT_ROOT__ Environment=PYTHONPATH=__PROJECT_ROOT__
ExecStartPre=/usr/local/bin/dronedetector-precheck-sdr.sh ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python src/main_915.py
ExecStart=__PROJECT_ROOT__/.venv-sdr/bin/python orange_scripts/main_915.py
Restart=always Restart=always
RestartSec=3 RestartSec=3

@ -1,22 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
if ! command -v hackrf_info >/dev/null 2>&1; then
echo "[dronedetector-precheck] hackrf_info not found. Install hackrf-tools/hackrf package." >&2
exit 1
fi
if ! command -v gnuradio-config-info >/dev/null 2>&1; then
echo "[dronedetector-precheck] gnuradio-config-info not found. Install gnuradio." >&2
exit 1
fi
if ! python3 -c "import osmosdr" >/dev/null 2>&1; then
echo "[dronedetector-precheck] Python module osmosdr not importable." >&2
exit 1
fi
if ! hackrf_info 2>/dev/null | grep -q "Found HackRF"; then
echo "[dronedetector-precheck] HackRF device was not detected by hackrf_info." >&2
exit 1
fi

@ -7,11 +7,13 @@ SYSTEMD_TARGET_DIR="/etc/systemd/system"
RUN_USER="${SUDO_USER:-${USER}}" RUN_USER="${SUDO_USER:-${USER}}"
RUN_GROUP="$(id -gn "${RUN_USER}")" RUN_GROUP="$(id -gn "${RUN_USER}")"
SOURCE_ARCHIVES=(
"torchsig.tar.gz:torchsig:pyproject.toml"
)
SDR_UNITS=( SDR_UNITS=(
dronedetector-sdr-433.service dronedetector-sdr-433.service
dronedetector-sdr-750.service dronedetector-sdr-750.service
dronedetector-sdr-868-915.service
dronedetector-sdr-868.service
dronedetector-sdr-1500.service dronedetector-sdr-1500.service
dronedetector-sdr-3300.service dronedetector-sdr-3300.service
dronedetector-sdr-4500.service dronedetector-sdr-4500.service
@ -22,6 +24,8 @@ SDR_UNITS=(
dronedetector-sdr-2400.service dronedetector-sdr-2400.service
) )
CONFIGURED_SDR_UNITS=()
log() { log() {
printf '[install_all] %s\n' "$*" printf '[install_all] %s\n' "$*"
} }
@ -31,6 +35,51 @@ die() {
exit 1 exit 1
} }
sdr_unit_env_key() {
local unit="$1"
local band="${unit#dronedetector-sdr-}"
band="${band%.service}"
printf 'hack_%s\n' "$band"
}
get_env_value() {
local key="$1"
awk -F= -v key="$key" '
$1 == key {
value = substr($0, index($0, "=") + 1)
sub(/^[[:space:]]+/, "", value)
sub(/[[:space:]]+$/, "", value)
gsub(/^"/, "", value)
gsub(/"$/, "", value)
gsub(/^'\''/, "", value)
gsub(/'\''$/, "", value)
print value
exit
}
' "${PROJECT_ROOT}/.env"
}
populate_configured_sdr_units() {
CONFIGURED_SDR_UNITS=()
local unit env_key env_value
for unit in "${SDR_UNITS[@]}"; do
env_key="$(sdr_unit_env_key "$unit")"
env_value="$(get_env_value "$env_key")"
if [[ -n "$env_value" ]]; then
CONFIGURED_SDR_UNITS+=("$unit")
else
log "Skipping ${unit}: ${env_key} is empty in .env"
fi
done
if [[ "${#CONFIGURED_SDR_UNITS[@]}" -eq 0 ]]; then
log "No SDR units are configured in .env"
else
log "Configured SDR units: ${CONFIGURED_SDR_UNITS[*]}"
fi
}
print_failure_logs() { print_failure_logs() {
log "Collecting diagnostics..." log "Collecting diagnostics..."
systemctl --no-pager --full status dronedetector-compose.service || true systemctl --no-pager --full status dronedetector-compose.service || true
@ -59,6 +108,35 @@ require_root() {
fi fi
} }
extract_local_source_archives() {
local spec archive_rel target_rel sentinel_rel
local archive_path target_path sentinel_path
for spec in "${SOURCE_ARCHIVES[@]}"; do
IFS=':' read -r archive_rel target_rel sentinel_rel <<< "$spec"
archive_path="${PROJECT_ROOT}/${archive_rel}"
target_path="${PROJECT_ROOT}/${target_rel}"
sentinel_path="${target_path}/${sentinel_rel}"
if [[ -f "${sentinel_path}" ]]; then
log "Vendored source already available: ${target_rel}"
continue
fi
if [[ -e "${target_path}" ]]; then
die "Found ${target_path}, but ${sentinel_rel} is missing. Remove or repair this directory, then rerun the installer."
fi
[[ -f "${archive_path}" ]] || die "Missing vendored source ${target_path} and archive ${archive_path}"
command -v tar >/dev/null 2>&1 || die "tar is required to unpack ${archive_rel}"
log "Extracting ${archive_rel} -> ${target_rel}"
tar -xzf "${archive_path}" -C "${PROJECT_ROOT}"
[[ -f "${sentinel_path}" ]] || die "Archive ${archive_path} did not unpack expected file ${sentinel_path}"
chown -R "${RUN_USER}:${RUN_GROUP}" "${target_path}"
done
}
preflight() { preflight() {
log "Preflight checks" log "Preflight checks"
[[ -f "${PROJECT_ROOT}/.env" ]] || die "Missing ${PROJECT_ROOT}/.env" [[ -f "${PROJECT_ROOT}/.env" ]] || die "Missing ${PROJECT_ROOT}/.env"
@ -171,8 +249,6 @@ build_and_run_compose() {
install_systemd_units() { install_systemd_units() {
log "Installing systemd units" log "Installing systemd units"
install -m 0755 "${PROJECT_ROOT}/deploy/systemd/precheck-sdr.sh" /usr/local/bin/dronedetector-precheck-sdr.sh
local src dst local src dst
for src in "${PROJECT_ROOT}"/deploy/systemd/*.service; do for src in "${PROJECT_ROOT}"/deploy/systemd/*.service; do
dst="${SYSTEMD_TARGET_DIR}/$(basename "$src")" dst="${SYSTEMD_TARGET_DIR}/$(basename "$src")"
@ -187,7 +263,7 @@ install_systemd_units() {
systemctl enable dronedetector-compose.service systemctl enable dronedetector-compose.service
systemctl restart dronedetector-compose.service systemctl restart dronedetector-compose.service
for unit in "${SDR_UNITS[@]}"; do for unit in "${CONFIGURED_SDR_UNITS[@]}"; do
systemctl enable "$unit" systemctl enable "$unit"
systemctl restart "$unit" systemctl restart "$unit"
done done
@ -212,7 +288,7 @@ verify_installation() {
log "Verifying services" log "Verifying services"
wait_for_systemd_active dronedetector-compose.service 30 || die "dronedetector-compose.service is not active" wait_for_systemd_active dronedetector-compose.service 30 || die "dronedetector-compose.service is not active"
for unit in "${SDR_UNITS[@]}"; do for unit in "${CONFIGURED_SDR_UNITS[@]}"; do
wait_for_systemd_active "$unit" 45 || die "$unit is not active" wait_for_systemd_active "$unit" 45 || die "$unit is not active"
done done
@ -222,7 +298,7 @@ verify_installation() {
running_services="$(docker compose -f "$COMPOSE_FILE" ps --status running --services || true)" running_services="$(docker compose -f "$COMPOSE_FILE" ps --status running --services || true)"
printf '%s\n' "$running_services" | grep -Fxq "dronedetector-server-to-master" || die "server_to_master is not running" printf '%s\n' "$running_services" | grep -Fxq "dronedetector-server-to-master" || die "server_to_master is not running"
printf '%s\n' "$running_services" | grep -Fxq "dronedetector-nn-server" || die "NN_server is not running" printf '%s\n' "$running_services" | grep -Fxq "dronedetector-telemetry-server" || die "telemetry_server is not running"
log "Verification completed" log "Verification completed"
} }
@ -233,7 +309,9 @@ main() {
log "Project root: ${PROJECT_ROOT}" log "Project root: ${PROJECT_ROOT}"
log "Runtime user: ${RUN_USER}:${RUN_GROUP}" log "Runtime user: ${RUN_USER}:${RUN_GROUP}"
extract_local_source_archives
preflight preflight
populate_configured_sdr_units
install_host_non_python_deps install_host_non_python_deps
setup_sdr_python_env setup_sdr_python_env
install_docker_if_needed install_docker_if_needed

@ -28,7 +28,7 @@ run_as_root() {
preflight() { preflight() {
[[ -f "${PROJECT_ROOT}/deploy/requirements/nn_gpu_pinned.txt" ]] || die "Missing deploy/requirements/nn_gpu_pinned.txt" [[ -f "${PROJECT_ROOT}/deploy/requirements/nn_gpu_pinned.txt" ]] || die "Missing deploy/requirements/nn_gpu_pinned.txt"
[[ -f "${PROJECT_ROOT}/train_scripts/requirements-train.txt" ]] || die "Missing train_scripts/requirements-train.txt" [[ -f "${PROJECT_ROOT}/requirements-train.txt" ]] || die "Missing train_scripts/requirements-train.txt"
[[ -f "${PROJECT_ROOT}/torchsig/pyproject.toml" ]] || die "Missing local torchsig package" [[ -f "${PROJECT_ROOT}/torchsig/pyproject.toml" ]] || die "Missing local torchsig package"
command -v "${PYTHON_BIN}" >/dev/null 2>&1 || die "${PYTHON_BIN} not found" command -v "${PYTHON_BIN}" >/dev/null 2>&1 || die "${PYTHON_BIN} not found"
} }

@ -1,115 +1,115 @@
from common.runtime import load_root_env, validate_env, as_float, as_int, as_str from common.runtime import load_root_env, validate_env, as_float, as_int, as_str
import numpy as np import numpy as np
import requests import requests
import os import os
import sys import sys
import json import json
import time import time
load_root_env(__file__) load_root_env(__file__)
validate_env("orange_scripts/compose_send_data_2400.py", { validate_env("orange_scripts/compose_send_data_2400.py", {
"POROG_2400": as_float, "POROG_2400": as_float,
"SERVER_IP_2": as_str, "SERVER_IP_2": as_str,
"SERVER_PORT_2": as_int, "SERVER_PORT_2": as_int,
}) })
porog = float(os.getenv('POROG_2400')) porog = float(os.getenv('POROG_2400'))
server_ip_1 = os.getenv('SERVER_IP_1') server_ip_1 = os.getenv('SERVER_IP_1')
server_port_1 = os.getenv('SERVER_PORT_1') server_port_1 = os.getenv('SERVER_PORT_1')
server_ip_2 = os.getenv('SERVER_IP_2') server_ip_2 = os.getenv('SERVER_IP_2')
server_port_2 = os.getenv('SERVER_PORT_2') server_port_2 = os.getenv('SERVER_PORT_2')
PARAMS = {'split_size': 400_000, 'point_amount': 100_000} PARAMS = {'split_size': 400_000, 'point_amount': 100_000}
PARAMS['show_amount'] = 0.8 * PARAMS['point_amount'] PARAMS['show_amount'] = 0.8 * PARAMS['point_amount']
token = 0 token = 0
channel = 1 channel = 1
flag = 0 flag = 0
############################## ##############################
# HYPERPARAMETERS # HYPERPARAMETERS
############################## ##############################
f_base = 2.4e9 f_base = 2.4e9
f_step = 20e6 f_step = 20e6
f_roof = 2.5e9 f_roof = 2.5e9
############################## ##############################
# Variables # Variables
############################## ##############################
f = f_base f = f_base
EOCF = 0 EOCF = 0
signal_arr = [] signal_arr = []
class NumpyArrayEncoder(json.JSONEncoder): class NumpyArrayEncoder(json.JSONEncoder):
def default(self, obj): def default(self, obj):
if isinstance(obj, np.integer): if isinstance(obj, np.integer):
return int(obj) return int(obj)
elif isinstance(obj, np.ndarray): elif isinstance(obj, np.ndarray):
return obj.tolist() return obj.tolist()
else: else:
return super(NumpyArrayEncoder, self).default(obj) return super(NumpyArrayEncoder, self).default(obj)
def send_data(sig): def send_data(sig):
try: try:
global token global token
print('#' * 10) print('#' * 10)
print('\nОтправка пакета ' + str(token+1)) print('\nОтправка пакета ' + str(token+1))
data_to_send = { data_to_send = {
"freq": 2400, "freq": 2400,
"channel": int(channel), "channel": int(channel),
"token": int(token+1), "token": int(token+1),
"data_real": np.asarray(np.array(sig, dtype=np.complex64).real, dtype=np.float32), "data_real": np.asarray(np.array(sig, dtype=np.complex64).real, dtype=np.float32),
"data_imag": np.asarray(np.array(sig, dtype=np.complex64).imag, dtype=np.float32) "data_imag": np.asarray(np.array(sig, dtype=np.complex64).imag, dtype=np.float32)
} }
mod_data_to_send = json.dumps(data_to_send, cls=NumpyArrayEncoder) mod_data_to_send = json.dumps(data_to_send, cls=NumpyArrayEncoder)
response = requests.post("http://{0}:{1}/receive_data".format(server_ip_2, server_port_2), json=mod_data_to_send) response = requests.post("http://{0}:{1}/receive_data".format(server_ip_2, server_port_2), json=mod_data_to_send)
if response.status_code == 200: if response.status_code == 200:
token += 1 token += 1
print(response.text) print(response.text)
print('#' * 10) print('#' * 10)
else: else:
print("Ошибка при отправке данных: ", response.status_code) print("Ошибка при отправке данных: ", response.status_code)
print('#' * 10) print('#' * 10)
except Exception as exc: except Exception as exc:
print(str(exc)) print(str(exc))
def median(sig): def median(sig):
global flag global flag
median = abs(float(np.median(sorted(np.asarray(np.abs(np.array(sig, dtype=np.complex64)), dtype=np.float32))[int(PARAMS['show_amount']):]))) median = abs(float(np.median(sorted(np.asarray(np.abs(np.array(sig, dtype=np.complex64)), dtype=np.float32))[int(PARAMS['show_amount']):])))
flag = 0 if porog > median else 1 flag = 0 if porog > median else 1
print(channel, median, flag) print(channel, median, flag)
def work(lvl): def work(lvl):
global flag global flag
global channel global channel
global f_base global f_base
global f_step global f_step
global f_roof global f_roof
global f global f
global EOCF global EOCF
global signal_arr global signal_arr
y = np.array(lvl).ravel() y = np.array(lvl).ravel()
signal_arr = np.concatenate((signal_arr, y), axis=None) signal_arr = np.concatenate((signal_arr, y), axis=None)
if f >= f_roof: if f >= f_roof:
f = f_base f = f_base
signal_arr = [] signal_arr = []
channel = 1 channel = 1
return f, EOCF return f, EOCF
else: else:
if flag == 0 and len(signal_arr) >= PARAMS['point_amount']: if flag == 0 and len(signal_arr) >= PARAMS['point_amount']:
median(signal_arr[:PARAMS['point_amount']]) median(signal_arr[:PARAMS['point_amount']])
signal_arr = [] signal_arr = []
if flag == 0: if flag == 0:
f += f_step f += f_step
channel += 1 channel += 1
if len(signal_arr) >= PARAMS['split_size']: if len(signal_arr) >= PARAMS['split_size']:
send_data(signal_arr[:PARAMS['split_size']]) send_data(signal_arr[:PARAMS['split_size']])
flag = 0 flag = 0
signal_arr = [] signal_arr = []
channel += 1 channel += 1
f += f_step f += f_step
return f, EOCF return f, EOCF

@ -0,0 +1,115 @@
from common.runtime import load_root_env, validate_env, as_float, as_int, as_str
import numpy as np
import requests
import os
import sys
import json
import time
load_root_env(__file__)
validate_env("orange_scripts/compose_send_data_5800.py", {
"POROG_5800": as_float,
"SERVER_IP_2": as_str,
"SERVER_PORT_2": as_int,
})
porog = float(os.getenv('POROG_5800'))
server_ip_1 = os.getenv('SERVER_IP_1')
server_port_1 = os.getenv('SERVER_PORT_1')
server_ip_2 = os.getenv('SERVER_IP_2')
server_port_2 = os.getenv('SERVER_PORT_2')
PARAMS = {'split_size': 400_000, 'point_amount': 100_000}
PARAMS['show_amount'] = 0.8 * PARAMS['point_amount']
token = 0
channel = 1
flag = 0
##############################
# HYPERPARAMETERS
##############################
f_base = 5.9e9
f_step = 20e6
f_roof = 5.7e9
##############################
# Variables
##############################
f = f_base
EOCF = 0
signal_arr = []
class NumpyArrayEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, np.integer):
return int(obj)
elif isinstance(obj, np.ndarray):
return obj.tolist()
else:
return super(NumpyArrayEncoder, self).default(obj)
def send_data(sig):
try:
global token
print('#' * 10)
print('\nОтправка пакета ' + str(token+1))
data_to_send = {
"freq": 5800,
"channel": int(channel),
"token": int(token+1),
"data_real": np.asarray(np.array(sig, dtype=np.complex64).real, dtype=np.float32),
"data_imag": np.asarray(np.array(sig, dtype=np.complex64).imag, dtype=np.float32)
}
mod_data_to_send = json.dumps(data_to_send, cls=NumpyArrayEncoder)
response = requests.post("http://{0}:{1}/receive_data".format(server_ip_2, server_port_2), json=mod_data_to_send)
if response.status_code == 200:
token += 1
print(response.text)
print('#' * 10)
else:
print("Ошибка при отправке данных: ", response.status_code)
print('#' * 10)
except Exception as exc:
print(str(exc))
def median(sig):
global flag
median = abs(float(np.median(sorted(np.asarray(np.abs(np.array(sig, dtype=np.complex64)), dtype=np.float32))[int(PARAMS['show_amount']):])))
flag = 0 if porog > median else 1
print(channel, median, flag)
def work(lvl):
global flag
global channel
global f_base
global f_step
global f_roof
global f
global EOCF
global signal_arr
y = np.array(lvl).ravel()
signal_arr = np.concatenate((signal_arr, y), axis=None)
if f >= f_roof:
f = f_base
signal_arr = []
channel = 1
return f, EOCF
else:
if flag == 0 and len(signal_arr) >= PARAMS['point_amount']:
median(signal_arr[:PARAMS['point_amount']])
signal_arr = []
if flag == 0:
f += f_step
channel += 1
if len(signal_arr) >= PARAMS['split_size']:
send_data(signal_arr[:PARAMS['split_size']])
flag = 0
signal_arr = []
channel += 1
f += f_step
return f, EOCF

@ -1,172 +1,172 @@
from gnuradio import blocks, gr from gnuradio import blocks, gr
import sys import sys
import signal import signal
import compose_send_data_2400 as my_freq import compose_send_data_2400 as my_freq
import osmosdr import osmosdr
import time import time
import threading import threading
import subprocess import subprocess
import os import os
from common.runtime import load_root_env, resolve_hackrf_index from common.runtime import load_root_env, resolve_hackrf_index
load_root_env(__file__) load_root_env(__file__)
def get_hack_id(): def get_hack_id():
return resolve_hackrf_index('HACKID_2400', 'orange_scripts/main_2400.py') return resolve_hackrf_index('HACKID_2400', 'orange_scripts/main_2400.py')
serial_number = os.getenv('HACKID_2400') serial_number = os.getenv('HACKID_2400')
pos = None pos = None
output = [] output = []
try: try:
command = 'lsusb -v -d 1d50:6089 | grep iSerial' command = 'lsusb -v -d 1d50:6089 | grep iSerial'
output.append(subprocess.check_output(command, shell=True, text=True)) output.append(subprocess.check_output(command, shell=True, text=True))
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
print(f"Команда завершилась с кодом возврата {e.returncode}") print(f"Команда завершилась с кодом возврата {e.returncode}")
print(e) print(e)
print(output) print(output)
output_lines = output[0].strip().split('\n') output_lines = output[0].strip().split('\n')
print(output_lines) print(output_lines)
serial_numbers = [line.split()[-1] for line in output_lines] serial_numbers = [line.split()[-1] for line in output_lines]
print(serial_numbers) print(serial_numbers)
for i, number in enumerate(serial_numbers): for i, number in enumerate(serial_numbers):
if number == serial_number: if number == serial_number:
id = i id = i
break break
if id is not None: if id is not None:
print('HackId is: {0}'.format(id)) print('HackId is: {0}'.format(id))
return str(id) return str(id)
else: else:
print('Такого хака нет!') print('Такого хака нет!')
class get_center_freq(gr.top_block): class get_center_freq(gr.top_block):
def __init__(self): def __init__(self):
gr.top_block.__init__(self, "get_center_freq") gr.top_block.__init__(self, "get_center_freq")
################################################## ##################################################
# Variables # Variables
################################################## ##################################################
self.prob_freq = prob_freq = 0 self.prob_freq = prob_freq = 0
self.top_peaks_amount = top_peaks_amount = 20 self.top_peaks_amount = top_peaks_amount = 20
self.samp_rate = samp_rate = 20e6 self.samp_rate = samp_rate = 20e6
self.poll_rate = poll_rate = 10000 self.poll_rate = poll_rate = 10000
self.num_points = num_points = 8192 self.num_points = num_points = 8192
self.flag = flag = 1 self.flag = flag = 1
self.decimation = decimation = 1 self.decimation = decimation = 1
self.center_freq = center_freq = my_freq.work(prob_freq)[0] self.center_freq = center_freq = my_freq.work(prob_freq)[0]
################################################## ##################################################
# Blocks # Blocks
################################################## ##################################################
self.probSigVec = blocks.probe_signal_vc(4096) self.probSigVec = blocks.probe_signal_vc(4096)
self.rtlsdr_source_0 = osmosdr.source( self.rtlsdr_source_0 = osmosdr.source(
args="numchan=" + str(1) + " " + 'hackrf=' + get_hack_id() args="numchan=" + str(1) + " " + 'hackrf=' + get_hack_id()
) )
self.rtlsdr_source_0.set_time_unknown_pps(osmosdr.time_spec_t()) self.rtlsdr_source_0.set_time_unknown_pps(osmosdr.time_spec_t())
self.rtlsdr_source_0.set_sample_rate(samp_rate) self.rtlsdr_source_0.set_sample_rate(samp_rate)
self.rtlsdr_source_0.set_center_freq(center_freq, 0) self.rtlsdr_source_0.set_center_freq(center_freq, 0)
self.rtlsdr_source_0.set_freq_corr(0, 0) self.rtlsdr_source_0.set_freq_corr(0, 0)
self.rtlsdr_source_0.set_gain(16, 0) self.rtlsdr_source_0.set_gain(16, 0)
self.rtlsdr_source_0.set_if_gain(16, 0) self.rtlsdr_source_0.set_if_gain(16, 0)
self.rtlsdr_source_0.set_bb_gain(0, 0) self.rtlsdr_source_0.set_bb_gain(0, 0)
self.rtlsdr_source_0.set_antenna('', 0) self.rtlsdr_source_0.set_antenna('', 0)
self.rtlsdr_source_0.set_bandwidth(0, 0) self.rtlsdr_source_0.set_bandwidth(0, 0)
self.rtlsdr_source_0.set_min_output_buffer(4096) self.rtlsdr_source_0.set_min_output_buffer(4096)
def _prob_freq_probe(): def _prob_freq_probe():
while True: while True:
val = self.probSigVec.level() val = self.probSigVec.level()
try: try:
self.set_prob_freq(val) self.set_prob_freq(val)
except AttributeError: except AttributeError:
pass pass
time.sleep(1.0 / (poll_rate)) time.sleep(1.0 / (poll_rate))
_prob_freq_thread = threading.Thread(target=_prob_freq_probe) _prob_freq_thread = threading.Thread(target=_prob_freq_probe)
_prob_freq_thread.daemon = True _prob_freq_thread.daemon = True
_prob_freq_thread.start() _prob_freq_thread.start()
self.blocks_stream_to_vector_1 = blocks.stream_to_vector(gr.sizeof_gr_complex*1, 4096) self.blocks_stream_to_vector_1 = blocks.stream_to_vector(gr.sizeof_gr_complex*1, 4096)
################################################## ##################################################
# Connections # Connections
################################################## ##################################################
self.connect((self.blocks_stream_to_vector_1, 0), (self.probSigVec, 0)) self.connect((self.blocks_stream_to_vector_1, 0), (self.probSigVec, 0))
self.connect((self.rtlsdr_source_0, 0), (self.blocks_stream_to_vector_1, 0)) self.connect((self.rtlsdr_source_0, 0), (self.blocks_stream_to_vector_1, 0))
def get_prob_freq(self): def get_prob_freq(self):
return self.prob_freq return self.prob_freq
def set_prob_freq(self, prob_freq): def set_prob_freq(self, prob_freq):
self.prob_freq = prob_freq self.prob_freq = prob_freq
self.set_center_freq(my_freq.work(self.prob_freq)[0]) self.set_center_freq(my_freq.work(self.prob_freq)[0])
def get_top_peaks_amount(self): def get_top_peaks_amount(self):
return self.top_peaks_amount return self.top_peaks_amount
def set_top_peaks_amount(self, top_peaks_amount): def set_top_peaks_amount(self, top_peaks_amount):
self.top_peaks_amount = top_peaks_amount self.top_peaks_amount = top_peaks_amount
def get_samp_rate(self): def get_samp_rate(self):
return self.samp_rate return self.samp_rate
def set_samp_rate(self, samp_rate): def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate self.samp_rate = samp_rate
self.rtlsdr_source_0.set_sample_rate(self.samp_rate) self.rtlsdr_source_0.set_sample_rate(self.samp_rate)
def get_poll_rate(self): def get_poll_rate(self):
return self.poll_rate return self.poll_rate
def set_poll_rate(self, poll_rate): def set_poll_rate(self, poll_rate):
self.poll_rate = poll_rate self.poll_rate = poll_rate
def get_num_points(self): def get_num_points(self):
return self.num_points return self.num_points
def set_num_points(self, num_points): def set_num_points(self, num_points):
self.num_points = num_points self.num_points = num_points
def get_flag(self): def get_flag(self):
return self.flag return self.flag
def set_flag(self, flag): def set_flag(self, flag):
self.flag = flag self.flag = flag
def get_decimation(self): def get_decimation(self):
return self.decimation return self.decimation
def set_decimation(self, decimation): def set_decimation(self, decimation):
self.decimation = decimation self.decimation = decimation
def get_center_freq(self): def get_center_freq(self):
return self.center_freq return self.center_freq
def set_center_freq(self, center_freq): def set_center_freq(self, center_freq):
self.center_freq = center_freq self.center_freq = center_freq
self.rtlsdr_source_0.set_center_freq(self.center_freq, 0) self.rtlsdr_source_0.set_center_freq(self.center_freq, 0)
def main(top_block_cls=get_center_freq, options=None): def main(top_block_cls=get_center_freq, options=None):
time.sleep(3) time.sleep(3)
tb = top_block_cls() tb = top_block_cls()
def sig_handler(sig=None, frame=None): def sig_handler(sig=None, frame=None):
tb.stop() tb.stop()
tb.wait() tb.wait()
sys.exit(0) sys.exit(0)
signal.signal(signal.SIGINT, sig_handler) signal.signal(signal.SIGINT, sig_handler)
signal.signal(signal.SIGTERM, sig_handler) signal.signal(signal.SIGTERM, sig_handler)
tb.start() tb.start()
try: try:
input('Press Enter to quit: ') input('Press Enter to quit: ')
except EOFError: except EOFError:
pass pass
tb.wait() tb.wait()
if __name__ == '__main__': if __name__ == '__main__':
main() main()

@ -0,0 +1,172 @@
from gnuradio import blocks, gr
import sys
import signal
import compose_send_data_5800 as my_freq
import osmosdr
import time
import threading
import subprocess
import os
from common.runtime import load_root_env, resolve_hackrf_index
load_root_env(__file__)
def get_hack_id():
return resolve_hackrf_index('HACKID_5800', 'orange_scripts/main_5800.py')
serial_number = os.getenv('HACKID_5800')
pos = None
output = []
try:
command = 'lsusb -v -d 1d50:6089 | grep iSerial'
output.append(subprocess.check_output(command, shell=True, text=True))
except subprocess.CalledProcessError as e:
print(f"Команда завершилась с кодом возврата {e.returncode}")
print(e)
print(output)
output_lines = output[0].strip().split('\n')
print(output_lines)
serial_numbers = [line.split()[-1] for line in output_lines]
print(serial_numbers)
for i, number in enumerate(serial_numbers):
if number == serial_number:
id = i
break
if id is not None:
print('HackId is: {0}'.format(id))
return str(id)
else:
print('Такого хака нет!')
class get_center_freq(gr.top_block):
def __init__(self):
gr.top_block.__init__(self, "get_center_freq")
##################################################
# Variables
##################################################
self.prob_freq = prob_freq = 0
self.top_peaks_amount = top_peaks_amount = 20
self.samp_rate = samp_rate = 20e6
self.poll_rate = poll_rate = 10000
self.num_points = num_points = 8192
self.flag = flag = 1
self.decimation = decimation = 1
self.center_freq = center_freq = my_freq.work(prob_freq)[0]
##################################################
# Blocks
##################################################
self.probSigVec = blocks.probe_signal_vc(4096)
self.rtlsdr_source_0 = osmosdr.source(
args="numchan=" + str(1) + " " + 'hackrf=' + get_hack_id()
)
self.rtlsdr_source_0.set_time_unknown_pps(osmosdr.time_spec_t())
self.rtlsdr_source_0.set_sample_rate(samp_rate)
self.rtlsdr_source_0.set_center_freq(center_freq, 0)
self.rtlsdr_source_0.set_freq_corr(0, 0)
self.rtlsdr_source_0.set_gain(16, 0)
self.rtlsdr_source_0.set_if_gain(16, 0)
self.rtlsdr_source_0.set_bb_gain(0, 0)
self.rtlsdr_source_0.set_antenna('', 0)
self.rtlsdr_source_0.set_bandwidth(0, 0)
self.rtlsdr_source_0.set_min_output_buffer(4096)
def _prob_freq_probe():
while True:
val = self.probSigVec.level()
try:
self.set_prob_freq(val)
except AttributeError:
pass
time.sleep(1.0 / (poll_rate))
_prob_freq_thread = threading.Thread(target=_prob_freq_probe)
_prob_freq_thread.daemon = True
_prob_freq_thread.start()
self.blocks_stream_to_vector_1 = blocks.stream_to_vector(gr.sizeof_gr_complex*1, 4096)
##################################################
# Connections
##################################################
self.connect((self.blocks_stream_to_vector_1, 0), (self.probSigVec, 0))
self.connect((self.rtlsdr_source_0, 0), (self.blocks_stream_to_vector_1, 0))
def get_prob_freq(self):
return self.prob_freq
def set_prob_freq(self, prob_freq):
self.prob_freq = prob_freq
self.set_center_freq(my_freq.work(self.prob_freq)[0])
def get_top_peaks_amount(self):
return self.top_peaks_amount
def set_top_peaks_amount(self, top_peaks_amount):
self.top_peaks_amount = top_peaks_amount
def get_samp_rate(self):
return self.samp_rate
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
self.rtlsdr_source_0.set_sample_rate(self.samp_rate)
def get_poll_rate(self):
return self.poll_rate
def set_poll_rate(self, poll_rate):
self.poll_rate = poll_rate
def get_num_points(self):
return self.num_points
def set_num_points(self, num_points):
self.num_points = num_points
def get_flag(self):
return self.flag
def set_flag(self, flag):
self.flag = flag
def get_decimation(self):
return self.decimation
def set_decimation(self, decimation):
self.decimation = decimation
def get_center_freq(self):
return self.center_freq
def set_center_freq(self, center_freq):
self.center_freq = center_freq
self.rtlsdr_source_0.set_center_freq(self.center_freq, 0)
def main(top_block_cls=get_center_freq, options=None):
time.sleep(3)
tb = top_block_cls()
def sig_handler(sig=None, frame=None):
tb.stop()
tb.wait()
sys.exit(0)
signal.signal(signal.SIGINT, sig_handler)
signal.signal(signal.SIGTERM, sig_handler)
tb.start()
try:
input('Press Enter to quit: ')
except EOFError:
pass
tb.wait()
if __name__ == '__main__':
main()

@ -69,7 +69,7 @@ class ProbeTop(gr.top_block):
try: try:
getattr(self.src, fn)(val, 0) getattr(self.src, fn)(val, 0)
except Exception: except Exception:
pass raise Exception("не ставится усиление")
try: try:
self.src.set_bandwidth(0, 0) self.src.set_bandwidth(0, 0)
except Exception: except Exception:
@ -260,7 +260,7 @@ def build_parser() -> argparse.ArgumentParser:
p.add_argument("--interval", type=float, default=0.5, help="Per-device read interval (s)") p.add_argument("--interval", type=float, default=0.5, help="Per-device read interval (s)")
p.add_argument("--refresh", type=float, default=0.5, help="Console refresh interval (s)") p.add_argument("--refresh", type=float, default=0.5, help="Console refresh interval (s)")
p.add_argument("--reopen-delay", type=float, default=1.0, help="Retry delay after BUSY/ERR (s)") p.add_argument("--reopen-delay", type=float, default=1.0, help="Retry delay after BUSY/ERR (s)")
p.add_argument("--gain", type=float, default=16.0, help="General gain") p.add_argument("--gain", type=float, default=0.0, help="General gain")
p.add_argument("--if-gain", type=float, default=16.0, help="IF gain") p.add_argument("--if-gain", type=float, default=16.0, help="IF gain")
p.add_argument("--bb-gain", type=float, default=16.0, help="BB gain") p.add_argument("--bb-gain", type=float, default=16.0, help="BB gain")
return p return p

@ -0,0 +1,807 @@
"""
./.venv-sdr/bin/python read_energy_wide.py \
--serial 0000000000000000a18c63dc2a83b813 \
--sample-rate 20000000 \
--base 6000 \
--roof 5700 \
--step 20
"""
#!/usr/bin/env python3
import argparse
import math
import re
import signal
import subprocess
import sys
import time
from dataclasses import dataclass
from typing import Dict, List, Optional, Tuple
try:
import numpy as np
except Exception as exc:
print(f"numpy import failed: {exc}", file=sys.stderr)
sys.exit(1)
try:
from gnuradio import blocks, gr
import osmosdr
except Exception as exc:
print(f"gnuradio/osmosdr import failed: {exc}", file=sys.stderr)
print("Run with the SDR venv, e.g. .venv-sdr/bin/python read_energy_wide.py", file=sys.stderr)
sys.exit(1)
EPS = 1e-20
@dataclass
class ScanWindow:
seq: int
start_mhz: float
end_mhz: float
low_mhz: float
high_mhz: float
center_mhz: float
status: str = "INIT"
rms: Optional[float] = None
power_lin: Optional[float] = None
dbfs: Optional[float] = None
samples: int = 0
updated_at: float = 0.0
error: str = ""
pass_no: int = 0
class WideProbeTop(gr.top_block):
def __init__(
self,
index: int,
center_freq_hz: float,
sample_rate: float,
vec_len: int,
gain: float,
if_gain: float,
bb_gain: float,
):
super().__init__("hackrf_energy_wide_probe")
self.probe = blocks.probe_signal_vc(vec_len)
self.stream_to_vec = blocks.stream_to_vector(gr.sizeof_gr_complex * 1, vec_len)
self.src = osmosdr.source(args=f"numchan=1 hackrf={index}")
self.src.set_time_unknown_pps(osmosdr.time_spec_t())
self.src.set_sample_rate(sample_rate)
self.src.set_center_freq(center_freq_hz, 0)
try:
self.src.set_freq_corr(0, 0)
except Exception:
pass
try:
self.src.set_gain_mode(False, 0)
except Exception:
pass
for fn, val in (("set_gain", gain), ("set_if_gain", if_gain), ("set_bb_gain", bb_gain)):
try:
getattr(self.src, fn)(val, 0)
except Exception:
pass
try:
self.src.set_bandwidth(0, 0)
except Exception:
pass
try:
self.src.set_antenna("", 0)
except Exception:
pass
self.connect((self.src, 0), (self.stream_to_vec, 0))
self.connect((self.stream_to_vec, 0), (self.probe, 0))
def tune(self, freq_hz: float) -> None:
self.src.set_center_freq(freq_hz, 0)
def read_metrics(self) -> Tuple[float, float, float, int]:
arr = np.asarray(self.probe.level(), dtype=np.complex64)
if arr.size == 0:
raise RuntimeError("no samples")
power_lin = float(np.mean(arr.real * arr.real + arr.imag * arr.imag))
rms = math.sqrt(max(power_lin, 0.0))
dbfs = 10.0 * math.log10(max(power_lin, EPS))
return rms, power_lin, dbfs, int(arr.size)
def read_window(self, settle: float, avg_reads: int, pause_between_reads: float) -> Tuple[float, float, float, int]:
if settle > 0:
time.sleep(settle)
read_count = max(1, avg_reads)
powers: List[float] = []
sample_sizes: List[int] = []
last_error: Optional[Exception] = None
for idx in range(read_count):
deadline = time.time() + 1.0
while True:
try:
_, power_lin, _, samples = self.read_metrics()
powers.append(power_lin)
sample_sizes.append(samples)
break
except Exception as exc:
last_error = exc
if time.time() >= deadline:
raise RuntimeError(str(last_error) if last_error else "no samples")
time.sleep(0.02)
if idx + 1 < read_count and pause_between_reads > 0:
time.sleep(pause_between_reads)
power_lin = float(sum(powers) / len(powers))
rms = math.sqrt(max(power_lin, 0.0))
dbfs = 10.0 * math.log10(max(power_lin, EPS))
samples = int(sum(sample_sizes) / len(sample_sizes))
return rms, power_lin, dbfs, samples
def parse_hackrf_info() -> Dict[str, int]:
try:
proc = subprocess.run(["hackrf_info"], capture_output=True, text=True, timeout=15)
except FileNotFoundError:
raise RuntimeError("hackrf_info not found")
except subprocess.TimeoutExpired:
raise RuntimeError("hackrf_info timeout")
text = (proc.stdout or "") + "\n" + (proc.stderr or "")
out: Dict[str, int] = {}
cur_idx: Optional[int] = None
for line in text.splitlines():
m = re.search(r"^Index:\s*(\d+)", line)
if m:
cur_idx = int(m.group(1))
continue
m = re.search(r"^Serial number:\s*([0-9a-fA-F]+)", line)
if m and cur_idx is not None:
out[m.group(1).lower()] = cur_idx
if not out:
raise RuntimeError("no devices parsed from hackrf_info")
return out
def fmt(value: Optional[float], spec: str) -> str:
return "-" if value is None else format(value, spec)
def build_windows(base_mhz: float, roof_mhz: float, step_mhz: float) -> List[ScanWindow]:
if step_mhz <= 0:
raise ValueError("step must be > 0")
if base_mhz == roof_mhz:
raise ValueError("base and roof must be different")
direction = -1.0 if roof_mhz < base_mhz else 1.0
edge = base_mhz
seq = 1
windows: List[ScanWindow] = []
while True:
next_edge = edge + direction * step_mhz
if direction < 0 and next_edge < roof_mhz:
next_edge = roof_mhz
if direction > 0 and next_edge > roof_mhz:
next_edge = roof_mhz
low_mhz = min(edge, next_edge)
high_mhz = max(edge, next_edge)
center_mhz = (low_mhz + high_mhz) / 2.0
windows.append(
ScanWindow(
seq=seq,
start_mhz=edge,
end_mhz=next_edge,
low_mhz=low_mhz,
high_mhz=high_mhz,
center_mhz=center_mhz,
)
)
if next_edge == roof_mhz:
break
edge = next_edge
seq += 1
return windows
def render(
windows: List[ScanWindow],
serial: str,
index: int,
sample_rate: float,
base_mhz: float,
roof_mhz: float,
step_mhz: float,
started_at: float,
pass_no: int,
current_seq: int,
) -> None:
now = time.time()
capture_bw_mhz = sample_rate / 1e6
current_row = next((row for row in windows if row.seq == current_seq), None)
best_row = max(
(row for row in windows if row.status == "OK" and row.dbfs is not None),
key=lambda row: row.dbfs if row.dbfs is not None else float("-inf"),
default=None,
)
print("\x1b[2J\x1b[H", end="")
print("HackRF Wide Energy Monitor (relative power: RMS / linear / dBFS)")
print(
f"serial: {serial} | idx: {index} | sample-rate: {capture_bw_mhz:.3f} MHz | "
f"scan: {base_mhz:.3f}->{roof_mhz:.3f} MHz step {step_mhz:.3f} MHz | "
f"pass: {pass_no} | uptime: {int(now-started_at)}s | {time.strftime('%Y-%m-%d %H:%M:%S')}"
)
print()
header = (
f"{'cur':>3} {'seq':>3} {'window MHz':>23} {'center':>9} {'status':>8} "
f"{'dBFS':>9} {'rms':>10} {'power':>12} {'N':>5} {'age':>5} error"
)
print(header)
print("-" * len(header))
for row in windows:
age = "-" if row.updated_at <= 0 else f"{(now-row.updated_at):.1f}"
err = row.error
if len(err) > 50:
err = err[:47] + "..."
marker = ">>>" if row.seq == current_seq else ""
print(
f"{marker:>3} {row.seq:>3} "
f"{f'{row.high_mhz:.3f}-{row.low_mhz:.3f}':>23} {row.center_mhz:>9.3f} {row.status:>8} "
f"{fmt(row.dbfs, '.2f'):>9} {fmt(row.rms, '.6f'):>10} {fmt(row.power_lin, '.8f'):>12} "
f"{row.samples:>5} {age:>5} {err}"
)
print()
if best_row is not None:
best_age = "-" if best_row.updated_at <= 0 else f"{(now-best_row.updated_at):.1f}"
print(
f"{'':>3} {'MAX':>3} "
f"{f'{best_row.high_mhz:.3f}-{best_row.low_mhz:.3f}':>23} {best_row.center_mhz:>9.3f} {best_row.status:>8} "
f"{fmt(best_row.dbfs, '.2f'):>9} {fmt(best_row.rms, '.6f'):>10} {fmt(best_row.power_lin, '.8f'):>12} "
f"{best_row.samples:>5} {best_age:>5} pass={best_row.pass_no}"
)
elif current_row is not None:
current_age = "-" if current_row.updated_at <= 0 else f"{(now-current_row.updated_at):.1f}"
print(
f"{'':>3} {'MAX':>3} "
f"{f'{current_row.high_mhz:.3f}-{current_row.low_mhz:.3f}':>23} {current_row.center_mhz:>9.3f} {'INIT':>8} "
f"{fmt(None, '.2f'):>9} {fmt(None, '.6f'):>10} {fmt(None, '.8f'):>12} "
f"{0:>5} {current_age:>5} no successful windows yet"
)
print("Ctrl+C to stop. Window width equals step; sample-rate must be >= step to cover each window.")
sys.stdout.flush()
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(description="Retune one HackRF across a wide frequency range and measure energy")
parser.add_argument("--serial", required=True, help="HackRF serial number from hackrf_info")
parser.add_argument("--sample-rate", type=float, required=True, help="Sample rate in Hz")
parser.add_argument("--base", type=float, required=True, help="Scan start edge in MHz")
parser.add_argument("--roof", type=float, required=True, help="Scan end edge in MHz")
parser.add_argument("--step", type=float, required=True, help="Window width / retune step in MHz")
parser.add_argument("--vec-len", type=int, default=4096, help="Probe vector length")
parser.add_argument("--settle", type=float, default=0.12, help="Wait time after retune before reading (s)")
parser.add_argument("--avg-reads", type=int, default=3, help="How many probe reads to average per window")
parser.add_argument("--pause-between-reads", type=float, default=0.02, help="Pause between averaged reads (s)")
parser.add_argument("--passes", type=int, default=0, help="Number of sweep passes, 0 means infinite")
parser.add_argument("--gain", type=float, default=16.0, help="General gain")
parser.add_argument("--if-gain", type=float, default=16.0, help="IF gain")
parser.add_argument("--bb-gain", type=float, default=16.0, help="BB gain")
return parser
def main() -> int:
args = build_parser().parse_args()
serial = args.serial.lower()
try:
windows = build_windows(args.base, args.roof, args.step)
except ValueError as exc:
print(f"invalid scan range: {exc}", file=sys.stderr)
return 2
step_hz = args.step * 1e6
if args.sample_rate < step_hz:
print(
f"sample-rate {args.sample_rate:.0f} Hz is smaller than step window {step_hz:.0f} Hz; "
"this would leave gaps in the scan",
file=sys.stderr,
)
return 2
try:
serial_to_index = parse_hackrf_info()
except Exception as exc:
print(f"hackrf discovery failed: {exc}", file=sys.stderr)
return 3
index = serial_to_index.get(serial)
if index is None:
print(f"serial {serial} not found in hackrf_info", file=sys.stderr)
print("available serials:", file=sys.stderr)
for item_serial, item_index in sorted(serial_to_index.items(), key=lambda item: item[1]):
print(f" idx={item_index} serial={item_serial}", file=sys.stderr)
return 4
stop_requested = False
def on_signal(signum, frame):
nonlocal stop_requested
stop_requested = True
signal.signal(signal.SIGINT, on_signal)
signal.signal(signal.SIGTERM, on_signal)
probe: Optional[WideProbeTop] = None
started_at = time.time()
pass_no = 0
current_seq = windows[0].seq
try:
probe = WideProbeTop(
index=index,
center_freq_hz=windows[0].center_mhz * 1e6,
sample_rate=args.sample_rate,
vec_len=args.vec_len,
gain=args.gain,
if_gain=args.if_gain,
bb_gain=args.bb_gain,
)
probe.start()
time.sleep(max(args.settle, 0.12))
while not stop_requested:
pass_no += 1
for row in windows:
if stop_requested:
break
current_seq = row.seq
try:
probe.tune(row.center_mhz * 1e6)
rms, power_lin, dbfs, samples = probe.read_window(
settle=args.settle,
avg_reads=args.avg_reads,
pause_between_reads=args.pause_between_reads,
)
row.status = "OK"
row.rms = rms
row.power_lin = power_lin
row.dbfs = dbfs
row.samples = samples
row.error = ""
row.updated_at = time.time()
row.pass_no = pass_no
except Exception as exc:
row.status = "ERR"
row.error = str(exc)
row.updated_at = time.time()
render(
windows=windows,
serial=serial,
index=index,
sample_rate=args.sample_rate,
base_mhz=args.base,
roof_mhz=args.roof,
step_mhz=args.step,
started_at=started_at,
pass_no=pass_no,
current_seq=current_seq,
)
if args.passes > 0 and pass_no >= args.passes:
break
except Exception as exc:
print(f"scanner failed: {exc}", file=sys.stderr)
return 5
finally:
if probe is not None:
try:
probe.stop()
probe.wait()
except Exception:
pass
return 0
if __name__ == "__main__":
raise SystemExit(main())
#!/usr/bin/env python3
import argparse
import math
import re
import signal
import subprocess
import sys
import time
from dataclasses import dataclass
from typing import Dict, List, Optional, Tuple
try:
import numpy as np
except Exception as exc:
print(f"numpy import failed: {exc}", file=sys.stderr)
sys.exit(1)
try:
from gnuradio import blocks, gr
import osmosdr
except Exception as exc:
print(f"gnuradio/osmosdr import failed: {exc}", file=sys.stderr)
print("Run with the SDR venv, e.g. .venv-sdr/bin/python read_energy_wide.py", file=sys.stderr)
sys.exit(1)
EPS = 1e-20
@dataclass
class ScanWindow:
seq: int
start_mhz: float
end_mhz: float
low_mhz: float
high_mhz: float
center_mhz: float
status: str = "INIT"
rms: Optional[float] = None
power_lin: Optional[float] = None
dbfs: Optional[float] = None
samples: int = 0
updated_at: float = 0.0
error: str = ""
pass_no: int = 0
class WideProbeTop(gr.top_block):
def __init__(
self,
index: int,
center_freq_hz: float,
sample_rate: float,
vec_len: int,
gain: float,
if_gain: float,
bb_gain: float,
):
super().__init__("hackrf_energy_wide_probe")
self.probe = blocks.probe_signal_vc(vec_len)
self.stream_to_vec = blocks.stream_to_vector(gr.sizeof_gr_complex * 1, vec_len)
self.src = osmosdr.source(args=f"numchan=1 hackrf={index}")
self.src.set_time_unknown_pps(osmosdr.time_spec_t())
self.src.set_sample_rate(sample_rate)
self.src.set_center_freq(center_freq_hz, 0)
try:
self.src.set_freq_corr(0, 0)
except Exception:
pass
try:
self.src.set_gain_mode(False, 0)
except Exception:
pass
for fn, val in (("set_gain", gain), ("set_if_gain", if_gain), ("set_bb_gain", bb_gain)):
try:
getattr(self.src, fn)(val, 0)
except Exception:
pass
try:
self.src.set_bandwidth(0, 0)
except Exception:
pass
try:
self.src.set_antenna("", 0)
except Exception:
pass
self.connect((self.src, 0), (self.stream_to_vec, 0))
self.connect((self.stream_to_vec, 0), (self.probe, 0))
def tune(self, freq_hz: float) -> None:
self.src.set_center_freq(freq_hz, 0)
def read_metrics(self) -> Tuple[float, float, float, int]:
arr = np.asarray(self.probe.level(), dtype=np.complex64)
if arr.size == 0:
raise RuntimeError("no samples")
power_lin = float(np.mean(arr.real * arr.real + arr.imag * arr.imag))
rms = math.sqrt(max(power_lin, 0.0))
dbfs = 10.0 * math.log10(max(power_lin, EPS))
return rms, power_lin, dbfs, int(arr.size)
def read_window(self, settle: float, avg_reads: int, pause_between_reads: float) -> Tuple[float, float, float, int]:
if settle > 0:
time.sleep(settle)
read_count = max(1, avg_reads)
powers: List[float] = []
sample_sizes: List[int] = []
last_error: Optional[Exception] = None
for idx in range(read_count):
deadline = time.time() + 1.0
while True:
try:
_, power_lin, _, samples = self.read_metrics()
powers.append(power_lin)
sample_sizes.append(samples)
break
except Exception as exc:
last_error = exc
if time.time() >= deadline:
raise RuntimeError(str(last_error) if last_error else "no samples")
time.sleep(0.02)
if idx + 1 < read_count and pause_between_reads > 0:
time.sleep(pause_between_reads)
power_lin = float(sum(powers) / len(powers))
rms = math.sqrt(max(power_lin, 0.0))
dbfs = 10.0 * math.log10(max(power_lin, EPS))
samples = int(sum(sample_sizes) / len(sample_sizes))
return rms, power_lin, dbfs, samples
def parse_hackrf_info() -> Dict[str, int]:
try:
proc = subprocess.run(["hackrf_info"], capture_output=True, text=True, timeout=15)
except FileNotFoundError:
raise RuntimeError("hackrf_info not found")
except subprocess.TimeoutExpired:
raise RuntimeError("hackrf_info timeout")
text = (proc.stdout or "") + "\n" + (proc.stderr or "")
out: Dict[str, int] = {}
cur_idx: Optional[int] = None
for line in text.splitlines():
m = re.search(r"^Index:\s*(\d+)", line)
if m:
cur_idx = int(m.group(1))
continue
m = re.search(r"^Serial number:\s*([0-9a-fA-F]+)", line)
if m and cur_idx is not None:
out[m.group(1).lower()] = cur_idx
if not out:
raise RuntimeError("no devices parsed from hackrf_info")
return out
def fmt(value: Optional[float], spec: str) -> str:
return "-" if value is None else format(value, spec)
def build_windows(base_mhz: float, roof_mhz: float, step_mhz: float) -> List[ScanWindow]:
if step_mhz <= 0:
raise ValueError("step must be > 0")
if base_mhz == roof_mhz:
raise ValueError("base and roof must be different")
direction = -1.0 if roof_mhz < base_mhz else 1.0
edge = base_mhz
seq = 1
windows: List[ScanWindow] = []
while True:
next_edge = edge + direction * step_mhz
if direction < 0 and next_edge < roof_mhz:
next_edge = roof_mhz
if direction > 0 and next_edge > roof_mhz:
next_edge = roof_mhz
low_mhz = min(edge, next_edge)
high_mhz = max(edge, next_edge)
center_mhz = (low_mhz + high_mhz) / 2.0
windows.append(
ScanWindow(
seq=seq,
start_mhz=edge,
end_mhz=next_edge,
low_mhz=low_mhz,
high_mhz=high_mhz,
center_mhz=center_mhz,
)
)
if next_edge == roof_mhz:
break
edge = next_edge
seq += 1
return windows
def render(
windows: List[ScanWindow],
serial: str,
index: int,
sample_rate: float,
base_mhz: float,
roof_mhz: float,
step_mhz: float,
started_at: float,
pass_no: int,
current_seq: int,
) -> None:
now = time.time()
capture_bw_mhz = sample_rate / 1e6
current_row = next((row for row in windows if row.seq == current_seq), None)
best_row = max(
(row for row in windows if row.status == "OK" and row.dbfs is not None),
key=lambda row: row.dbfs if row.dbfs is not None else float("-inf"),
default=None,
)
print("\x1b[2J\x1b[H", end="")
print("HackRF Wide Energy Monitor (relative power: RMS / linear / dBFS)")
print(
f"serial: {serial} | idx: {index} | sample-rate: {capture_bw_mhz:.3f} MHz | "
f"scan: {base_mhz:.3f}->{roof_mhz:.3f} MHz step {step_mhz:.3f} MHz | "
f"pass: {pass_no} | uptime: {int(now-started_at)}s | {time.strftime('%Y-%m-%d %H:%M:%S')}"
)
print()
header = (
f"{'cur':>3} {'seq':>3} {'window MHz':>23} {'center':>9} {'status':>8} "
f"{'dBFS':>9} {'rms':>10} {'power':>12} {'N':>5} {'age':>5} error"
)
print(header)
print("-" * len(header))
for row in windows:
age = "-" if row.updated_at <= 0 else f"{(now-row.updated_at):.1f}"
err = row.error
if len(err) > 50:
err = err[:47] + "..."
marker = ">>>" if row.seq == current_seq else ""
print(
f"{marker:>3} {row.seq:>3} "
f"{f'{row.high_mhz:.3f}-{row.low_mhz:.3f}':>23} {row.center_mhz:>9.3f} {row.status:>8} "
f"{fmt(row.dbfs, '.2f'):>9} {fmt(row.rms, '.6f'):>10} {fmt(row.power_lin, '.8f'):>12} "
f"{row.samples:>5} {age:>5} {err}"
)
print()
if best_row is not None:
best_age = "-" if best_row.updated_at <= 0 else f"{(now-best_row.updated_at):.1f}"
print(
f"{'':>3} {'MAX':>3} "
f"{f'{best_row.high_mhz:.3f}-{best_row.low_mhz:.3f}':>23} {best_row.center_mhz:>9.3f} {best_row.status:>8} "
f"{fmt(best_row.dbfs, '.2f'):>9} {fmt(best_row.rms, '.6f'):>10} {fmt(best_row.power_lin, '.8f'):>12} "
f"{best_row.samples:>5} {best_age:>5} pass={best_row.pass_no}"
)
elif current_row is not None:
current_age = "-" if current_row.updated_at <= 0 else f"{(now-current_row.updated_at):.1f}"
print(
f"{'':>3} {'MAX':>3} "
f"{f'{current_row.high_mhz:.3f}-{current_row.low_mhz:.3f}':>23} {current_row.center_mhz:>9.3f} {'INIT':>8} "
f"{fmt(None, '.2f'):>9} {fmt(None, '.6f'):>10} {fmt(None, '.8f'):>12} "
f"{0:>5} {current_age:>5} no successful windows yet"
)
print("Ctrl+C to stop. Window width equals step; sample-rate must be >= step to cover each window.")
sys.stdout.flush()
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(description="Retune one HackRF across a wide frequency range and measure energy")
parser.add_argument("--serial", required=True, help="HackRF serial number from hackrf_info")
parser.add_argument("--sample-rate", type=float, required=True, help="Sample rate in Hz")
parser.add_argument("--base", type=float, required=True, help="Scan start edge in MHz")
parser.add_argument("--roof", type=float, required=True, help="Scan end edge in MHz")
parser.add_argument("--step", type=float, required=True, help="Window width / retune step in MHz")
parser.add_argument("--vec-len", type=int, default=4096, help="Probe vector length")
parser.add_argument("--settle", type=float, default=0.12, help="Wait time after retune before reading (s)")
parser.add_argument("--avg-reads", type=int, default=3, help="How many probe reads to average per window")
parser.add_argument("--pause-between-reads", type=float, default=0.02, help="Pause between averaged reads (s)")
parser.add_argument("--passes", type=int, default=0, help="Number of sweep passes, 0 means infinite")
parser.add_argument("--gain", type=float, default=16.0, help="General gain")
parser.add_argument("--if-gain", type=float, default=16.0, help="IF gain")
parser.add_argument("--bb-gain", type=float, default=16.0, help="BB gain")
return parser
def main() -> int:
args = build_parser().parse_args()
serial = args.serial.lower()
try:
windows = build_windows(args.base, args.roof, args.step)
except ValueError as exc:
print(f"invalid scan range: {exc}", file=sys.stderr)
return 2
step_hz = args.step * 1e6
if args.sample_rate < step_hz:
print(
f"sample-rate {args.sample_rate:.0f} Hz is smaller than step window {step_hz:.0f} Hz; "
"this would leave gaps in the scan",
file=sys.stderr,
)
return 2
try:
serial_to_index = parse_hackrf_info()
except Exception as exc:
print(f"hackrf discovery failed: {exc}", file=sys.stderr)
return 3
index = serial_to_index.get(serial)
if index is None:
print(f"serial {serial} not found in hackrf_info", file=sys.stderr)
print("available serials:", file=sys.stderr)
for item_serial, item_index in sorted(serial_to_index.items(), key=lambda item: item[1]):
print(f" idx={item_index} serial={item_serial}", file=sys.stderr)
return 4
stop_requested = False
def on_signal(signum, frame):
nonlocal stop_requested
stop_requested = True
signal.signal(signal.SIGINT, on_signal)
signal.signal(signal.SIGTERM, on_signal)
probe: Optional[WideProbeTop] = None
started_at = time.time()
pass_no = 0
current_seq = windows[0].seq
try:
probe = WideProbeTop(
index=index,
center_freq_hz=windows[0].center_mhz * 1e6,
sample_rate=args.sample_rate,
vec_len=args.vec_len,
gain=args.gain,
if_gain=args.if_gain,
bb_gain=args.bb_gain,
)
probe.start()
time.sleep(max(args.settle, 0.12))
while not stop_requested:
pass_no += 1
for row in windows:
if stop_requested:
break
current_seq = row.seq
try:
probe.tune(row.center_mhz * 1e6)
rms, power_lin, dbfs, samples = probe.read_window(
settle=args.settle,
avg_reads=args.avg_reads,
pause_between_reads=args.pause_between_reads,
)
row.status = "OK"
row.rms = rms
row.power_lin = power_lin
row.dbfs = dbfs
row.samples = samples
row.error = ""
row.updated_at = time.time()
row.pass_no = pass_no
except Exception as exc:
row.status = "ERR"
row.error = str(exc)
row.updated_at = time.time()
render(
windows=windows,
serial=serial,
index=index,
sample_rate=args.sample_rate,
base_mhz=args.base,
roof_mhz=args.roof,
step_mhz=args.step,
started_at=started_at,
pass_no=pass_no,
current_seq=current_seq,
)
if args.passes > 0 and pass_no >= args.passes:
break
except Exception as exc:
print(f"scanner failed: {exc}", file=sys.stderr)
return 5
finally:
if probe is not None:
try:
probe.stop()
probe.wait()
except Exception:
pass
return 0
if __name__ == "__main__":
raise SystemExit(main())

@ -7,8 +7,6 @@ COMPOSE_FILE="${PROJECT_ROOT}/deploy/docker/docker-compose.yml"
SDR_UNITS=( SDR_UNITS=(
dronedetector-sdr-433.service dronedetector-sdr-433.service
dronedetector-sdr-750.service dronedetector-sdr-750.service
#dronedetector-sdr-868-915.service
#dronedetector-sdr-868.service
dronedetector-sdr-1500.service dronedetector-sdr-1500.service
dronedetector-sdr-3300.service dronedetector-sdr-3300.service
dronedetector-sdr-4500.service dronedetector-sdr-4500.service
@ -19,10 +17,51 @@ SDR_UNITS=(
dronedetector-sdr-2400.service dronedetector-sdr-2400.service
) )
CONFIGURED_SDR_UNITS=()
log() { log() {
printf '[restart_all] %s\n' "$*" printf '[restart_all] %s\n' "$*"
} }
sdr_unit_env_key() {
local unit="$1"
local band="${unit#dronedetector-sdr-}"
band="${band%.service}"
printf 'hack_%s\n' "$band"
}
get_env_value() {
local key="$1"
awk -F= -v key="$key" '
$1 == key {
value = substr($0, index($0, "=") + 1)
sub(/^[[:space:]]+/, "", value)
sub(/[[:space:]]+$/, "", value)
gsub(/^"/, "", value)
gsub(/"$/, "", value)
gsub(/^'\''/, "", value)
gsub(/'\''$/, "", value)
print value
exit
}
' "${PROJECT_ROOT}/.env"
}
populate_configured_sdr_units() {
CONFIGURED_SDR_UNITS=()
local unit env_key env_value
for unit in "${SDR_UNITS[@]}"; do
env_key="$(sdr_unit_env_key "$unit")"
env_value="$(get_env_value "$env_key")"
if [[ -n "$env_value" ]]; then
CONFIGURED_SDR_UNITS+=("$unit")
else
log "Skipping ${unit}: ${env_key} is empty in .env"
fi
done
}
if [[ -x /usr/bin/sudo ]]; then if [[ -x /usr/bin/sudo ]]; then
SUDO=(sudo) SUDO=(sudo)
else else
@ -41,7 +80,7 @@ restart_docker_services() {
restart_sdr_services() { restart_sdr_services() {
log "Restarting SDR systemd units" log "Restarting SDR systemd units"
for unit in "${SDR_UNITS[@]}"; do for unit in "${CONFIGURED_SDR_UNITS[@]}"; do
${SUDO[@]} systemctl restart "$unit" ${SUDO[@]} systemctl restart "$unit"
done done
} }
@ -51,7 +90,7 @@ print_status() {
docker compose -f "$COMPOSE_FILE" ps || true docker compose -f "$COMPOSE_FILE" ps || true
log "SDR status" log "SDR status"
for unit in "${SDR_UNITS[@]}"; do for unit in "${CONFIGURED_SDR_UNITS[@]}"; do
if ${SUDO[@]} systemctl is-active --quiet "$unit"; then if ${SUDO[@]} systemctl is-active --quiet "$unit"; then
printf '%s: active\n' "$unit" printf '%s: active\n' "$unit"
else else
@ -61,6 +100,7 @@ print_status() {
} }
main() { main() {
populate_configured_sdr_units
restart_docker_services restart_docker_services
restart_sdr_services restart_sdr_services
print_status print_status

@ -40,8 +40,8 @@ class get_center_freq(gr.top_block):
self.rtlsdr_source_0.set_sample_rate(self.samp_rate) self.rtlsdr_source_0.set_sample_rate(self.samp_rate)
self.rtlsdr_source_0.set_center_freq(self.center_freq, 0) self.rtlsdr_source_0.set_center_freq(self.center_freq, 0)
self.rtlsdr_source_0.set_freq_corr(0, 0) self.rtlsdr_source_0.set_freq_corr(0, 0)
self.rtlsdr_source_0.set_gain(24, 0) self.rtlsdr_source_0.set_gain(16, 0)
self.rtlsdr_source_0.set_if_gain(24, 0) self.rtlsdr_source_0.set_if_gain(16, 0)
self.rtlsdr_source_0.set_bb_gain(100, 0) self.rtlsdr_source_0.set_bb_gain(100, 0)
self.rtlsdr_source_0.set_antenna('', 0) self.rtlsdr_source_0.set_antenna('', 0)
self.rtlsdr_source_0.set_bandwidth(0, 0) self.rtlsdr_source_0.set_bandwidth(0, 0)

@ -40,8 +40,8 @@ class get_center_freq(gr.top_block):
self.rtlsdr_source_0.set_sample_rate(self.samp_rate) self.rtlsdr_source_0.set_sample_rate(self.samp_rate)
self.rtlsdr_source_0.set_center_freq(self.center_freq, 0) self.rtlsdr_source_0.set_center_freq(self.center_freq, 0)
self.rtlsdr_source_0.set_freq_corr(0, 0) self.rtlsdr_source_0.set_freq_corr(0, 0)
self.rtlsdr_source_0.set_gain(24, 0) self.rtlsdr_source_0.set_gain(16, 0)
self.rtlsdr_source_0.set_if_gain(24, 0) self.rtlsdr_source_0.set_if_gain(16, 0)
self.rtlsdr_source_0.set_bb_gain(100, 0) self.rtlsdr_source_0.set_bb_gain(100, 0)
self.rtlsdr_source_0.set_antenna('', 0) self.rtlsdr_source_0.set_antenna('', 0)
self.rtlsdr_source_0.set_bandwidth(0, 0) self.rtlsdr_source_0.set_bandwidth(0, 0)

@ -40,8 +40,8 @@ class get_center_freq(gr.top_block):
self.rtlsdr_source_0.set_sample_rate(self.samp_rate) self.rtlsdr_source_0.set_sample_rate(self.samp_rate)
self.rtlsdr_source_0.set_center_freq(self.center_freq, 0) self.rtlsdr_source_0.set_center_freq(self.center_freq, 0)
self.rtlsdr_source_0.set_freq_corr(0, 0) self.rtlsdr_source_0.set_freq_corr(0, 0)
self.rtlsdr_source_0.set_gain(24, 0) self.rtlsdr_source_0.set_gain(16, 0)
self.rtlsdr_source_0.set_if_gain(24, 0) self.rtlsdr_source_0.set_if_gain(16, 0)
self.rtlsdr_source_0.set_bb_gain(100, 0) self.rtlsdr_source_0.set_bb_gain(100, 0)
self.rtlsdr_source_0.set_antenna('', 0) self.rtlsdr_source_0.set_antenna('', 0)
self.rtlsdr_source_0.set_bandwidth(0, 0) self.rtlsdr_source_0.set_bandwidth(0, 0)

@ -94,8 +94,8 @@ class get_center_freq(gr.top_block):
self.rtlsdr_source_0.set_sample_rate(samp_rate) self.rtlsdr_source_0.set_sample_rate(samp_rate)
self.rtlsdr_source_0.set_center_freq(center_freq, 0) self.rtlsdr_source_0.set_center_freq(center_freq, 0)
self.rtlsdr_source_0.set_freq_corr(0, 0) self.rtlsdr_source_0.set_freq_corr(0, 0)
self.rtlsdr_source_0.set_gain(100, 0) self.rtlsdr_source_0.set_gain(16, 0)
self.rtlsdr_source_0.set_if_gain(100, 0) self.rtlsdr_source_0.set_if_gain(16, 0)
self.rtlsdr_source_0.set_bb_gain(100, 0) self.rtlsdr_source_0.set_bb_gain(100, 0)
self.rtlsdr_source_0.set_antenna('', 0) self.rtlsdr_source_0.set_antenna('', 0)
self.rtlsdr_source_0.set_bandwidth(0, 0) self.rtlsdr_source_0.set_bandwidth(0, 0)

@ -94,8 +94,8 @@ class get_center_freq(gr.top_block):
self.rtlsdr_source_0.set_sample_rate(samp_rate) self.rtlsdr_source_0.set_sample_rate(samp_rate)
self.rtlsdr_source_0.set_center_freq(center_freq, 0) self.rtlsdr_source_0.set_center_freq(center_freq, 0)
self.rtlsdr_source_0.set_freq_corr(0, 0) self.rtlsdr_source_0.set_freq_corr(0, 0)
self.rtlsdr_source_0.set_gain(24, 0) self.rtlsdr_source_0.set_gain(16, 0)
self.rtlsdr_source_0.set_if_gain(24, 0) self.rtlsdr_source_0.set_if_gain(16, 0)
self.rtlsdr_source_0.set_bb_gain(100, 0) self.rtlsdr_source_0.set_bb_gain(100, 0)
self.rtlsdr_source_0.set_antenna('', 0) self.rtlsdr_source_0.set_antenna('', 0)
self.rtlsdr_source_0.set_bandwidth(0, 0) self.rtlsdr_source_0.set_bandwidth(0, 0)

@ -94,8 +94,8 @@ class get_center_freq(gr.top_block):
self.rtlsdr_source_0.set_sample_rate(samp_rate) self.rtlsdr_source_0.set_sample_rate(samp_rate)
self.rtlsdr_source_0.set_center_freq(center_freq, 0) self.rtlsdr_source_0.set_center_freq(center_freq, 0)
self.rtlsdr_source_0.set_freq_corr(0, 0) self.rtlsdr_source_0.set_freq_corr(0, 0)
self.rtlsdr_source_0.set_gain(100, 0) self.rtlsdr_source_0.set_gain(16, 0)
self.rtlsdr_source_0.set_if_gain(100, 0) self.rtlsdr_source_0.set_if_gain(16, 0)
self.rtlsdr_source_0.set_bb_gain(100, 0) self.rtlsdr_source_0.set_bb_gain(100, 0)
self.rtlsdr_source_0.set_antenna('', 0) self.rtlsdr_source_0.set_antenna('', 0)
self.rtlsdr_source_0.set_bandwidth(0, 0) self.rtlsdr_source_0.set_bandwidth(0, 0)

@ -93,8 +93,8 @@ class get_center_freq(gr.top_block):
self.rtlsdr_source_0.set_sample_rate(samp_rate) self.rtlsdr_source_0.set_sample_rate(samp_rate)
self.rtlsdr_source_0.set_center_freq(center_freq, 0) self.rtlsdr_source_0.set_center_freq(center_freq, 0)
self.rtlsdr_source_0.set_freq_corr(0, 0) self.rtlsdr_source_0.set_freq_corr(0, 0)
self.rtlsdr_source_0.set_gain(100, 0) self.rtlsdr_source_0.set_gain(16, 0)
self.rtlsdr_source_0.set_if_gain(100, 0) self.rtlsdr_source_0.set_if_gain(16, 0)
self.rtlsdr_source_0.set_bb_gain(100, 0) self.rtlsdr_source_0.set_bb_gain(100, 0)
self.rtlsdr_source_0.set_antenna('', 0) self.rtlsdr_source_0.set_antenna('', 0)
self.rtlsdr_source_0.set_bandwidth(0, 0) self.rtlsdr_source_0.set_bandwidth(0, 0)

@ -94,8 +94,8 @@ class get_center_freq(gr.top_block):
self.rtlsdr_source_0.set_sample_rate(samp_rate) self.rtlsdr_source_0.set_sample_rate(samp_rate)
self.rtlsdr_source_0.set_center_freq(center_freq, 0) self.rtlsdr_source_0.set_center_freq(center_freq, 0)
self.rtlsdr_source_0.set_freq_corr(0, 0) self.rtlsdr_source_0.set_freq_corr(0, 0)
self.rtlsdr_source_0.set_gain(100, 0) self.rtlsdr_source_0.set_gain(16, 0)
self.rtlsdr_source_0.set_if_gain(100, 0) self.rtlsdr_source_0.set_if_gain(16, 0)
self.rtlsdr_source_0.set_bb_gain(100, 0) self.rtlsdr_source_0.set_bb_gain(100, 0)
self.rtlsdr_source_0.set_antenna('', 0) self.rtlsdr_source_0.set_antenna('', 0)
self.rtlsdr_source_0.set_bandwidth(0, 0) self.rtlsdr_source_0.set_bandwidth(0, 0)

@ -94,8 +94,8 @@ class get_center_freq(gr.top_block):
self.rtlsdr_source_0.set_sample_rate(samp_rate) self.rtlsdr_source_0.set_sample_rate(samp_rate)
self.rtlsdr_source_0.set_center_freq(center_freq, 0) self.rtlsdr_source_0.set_center_freq(center_freq, 0)
self.rtlsdr_source_0.set_freq_corr(0, 0) self.rtlsdr_source_0.set_freq_corr(0, 0)
self.rtlsdr_source_0.set_gain(24, 0) self.rtlsdr_source_0.set_gain(16, 0)
self.rtlsdr_source_0.set_if_gain(24, 0) self.rtlsdr_source_0.set_if_gain(16, 0)
self.rtlsdr_source_0.set_bb_gain(100, 0) self.rtlsdr_source_0.set_bb_gain(100, 0)
self.rtlsdr_source_0.set_antenna('', 0) self.rtlsdr_source_0.set_antenna('', 0)
self.rtlsdr_source_0.set_bandwidth(0, 0) self.rtlsdr_source_0.set_bandwidth(0, 0)

@ -1,99 +0,0 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from gnuradio import blocks
from gnuradio import gr
from gnuradio import zeromq
import signal
import sys
import threading
import time
import embedded_868 as my_freq
from common.runtime import load_root_env
from common.shared_stream_addrs import SHARED_868_ADDR, SHARED_VECTOR_LEN
load_root_env(__file__)
class get_center_freq(gr.top_block):
def __init__(self):
gr.top_block.__init__(self, 'get_center_freq')
self.prob_freq = 0
self.poll_rate = 10000
self.vector_len = SHARED_VECTOR_LEN
self.center_freq = 0
self.shared_addr = SHARED_868_ADDR
self._stop_polling = threading.Event()
self._prob_freq_thread = None
self.probSigVec = blocks.probe_signal_vc(self.vector_len)
self.shared_source_0 = zeromq.pull_source(
gr.sizeof_gr_complex,
self.vector_len,
self.shared_addr,
100,
False,
-1,
False,
)
self.connect((self.shared_source_0, 0), (self.probSigVec, 0))
def start_polling(self):
if self._prob_freq_thread is not None:
return
def _prob_freq_probe():
while not self._stop_polling.is_set():
self.set_prob_freq(self.probSigVec.level())
time.sleep(1.0 / self.poll_rate)
self._prob_freq_thread = threading.Thread(target=_prob_freq_probe, daemon=True)
self._prob_freq_thread.start()
def get_prob_freq(self):
return self.prob_freq
def set_prob_freq(self, prob_freq):
self.prob_freq = prob_freq
self.center_freq = my_freq.work(self.prob_freq)
def get_center_freq(self):
return self.center_freq
def set_center_freq(self, center_freq):
self.center_freq = center_freq
def close(self):
self._stop_polling.set()
self.stop()
self.wait()
def main(top_block_cls=get_center_freq, options=None):
tb = top_block_cls()
def sig_handler(sig=None, frame=None):
tb.close()
sys.exit(0)
signal.signal(signal.SIGINT, sig_handler)
signal.signal(signal.SIGTERM, sig_handler)
tb.start()
tb.start_polling()
try:
print('shared_pull_addr:', SHARED_868_ADDR)
print('debug_flag:', my_freq.debug_flag)
print('save_data_flag:', my_freq.save_data_flag)
print('send_to_module_flag:', my_freq.send_to_module_flag)
except EOFError:
pass
tb.wait()
if __name__ == '__main__':
main()

@ -1,122 +0,0 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from gnuradio import blocks
from gnuradio import gr
import signal
import sys
import threading
import time
import osmosdr
from common.runtime import load_root_env, resolve_hackrf_index
from common.shared_stream_addrs import SHARED_VECTOR_LEN
from shared_router_868_915 import SharedRouter868915
load_root_env(__file__)
def get_hack_id():
return resolve_hackrf_index('hack_868', 'src/main_868_915_router.py')
class get_center_freq(gr.top_block):
def __init__(self):
gr.top_block.__init__(self, 'get_center_freq')
self.prob_freq = 0
self.poll_rate = 10000
self.vector_len = SHARED_VECTOR_LEN
self.router = SharedRouter868915()
self.active_lane = self.router.get_active_name()
self.center_freq = self.router.get_start_freq()
self._stop_polling = threading.Event()
self._prob_freq_thread = None
self.probSigVec = blocks.probe_signal_vc(self.vector_len)
self.rtlsdr_source_0 = osmosdr.source(
args='numchan=' + str(1) + ' ' + 'hackrf=' + get_hack_id()
)
self.rtlsdr_source_0.set_time_unknown_pps(osmosdr.time_spec_t())
self.rtlsdr_source_0.set_freq_corr(0, 0)
self.rtlsdr_source_0.set_antenna('', 0)
self.rtlsdr_source_0.set_min_output_buffer(self.vector_len)
self.apply_active_frontend()
self.rtlsdr_source_0.set_center_freq(self.center_freq, 0)
self.blocks_stream_to_vector_1 = blocks.stream_to_vector(gr.sizeof_gr_complex * 1, self.vector_len)
self.connect((self.rtlsdr_source_0, 0), (self.blocks_stream_to_vector_1, 0))
self.connect((self.blocks_stream_to_vector_1, 0), (self.probSigVec, 0))
def start_polling(self):
if self._prob_freq_thread is not None:
return
def _prob_freq_probe():
while not self._stop_polling.is_set():
self.set_prob_freq(self.probSigVec.level())
time.sleep(1.0 / self.poll_rate)
self._prob_freq_thread = threading.Thread(target=_prob_freq_probe, daemon=True)
self._prob_freq_thread.start()
def apply_active_frontend(self):
frontend = self.router.get_active_frontend()
self.rtlsdr_source_0.set_sample_rate(frontend['sample_rate'])
self.rtlsdr_source_0.set_gain(frontend['gain'], 0)
self.rtlsdr_source_0.set_if_gain(frontend['if_gain'], 0)
self.rtlsdr_source_0.set_bb_gain(frontend['bb_gain'], 0)
self.rtlsdr_source_0.set_bandwidth(frontend['bandwidth'], 0)
def get_prob_freq(self):
return self.prob_freq
def set_prob_freq(self, prob_freq):
self.prob_freq = prob_freq
next_center, lane_switched = self.router.route_vector(self.prob_freq)
if lane_switched:
self.active_lane = self.router.get_active_name()
self.apply_active_frontend()
if next_center != self.center_freq:
self.set_center_freq(next_center)
def get_center_freq(self):
return self.center_freq
def set_center_freq(self, center_freq):
self.center_freq = center_freq
self.rtlsdr_source_0.set_center_freq(self.center_freq, 0)
def close(self):
self._stop_polling.set()
try:
self.router.close()
finally:
self.stop()
self.wait()
def main(top_block_cls=get_center_freq, options=None):
tb = top_block_cls()
def sig_handler(sig=None, frame=None):
tb.close()
sys.exit(0)
signal.signal(signal.SIGINT, sig_handler)
signal.signal(signal.SIGTERM, sig_handler)
tb.start()
tb.start_polling()
try:
print('shared_router_active_lane:', tb.router.get_active_name())
print('shared_router_start_freq:', tb.get_center_freq())
except EOFError:
pass
tb.wait()
if __name__ == '__main__':
main()

@ -40,8 +40,8 @@ class get_center_freq(gr.top_block):
self.rtlsdr_source_0.set_sample_rate(self.samp_rate) self.rtlsdr_source_0.set_sample_rate(self.samp_rate)
self.rtlsdr_source_0.set_center_freq(self.center_freq, 0) self.rtlsdr_source_0.set_center_freq(self.center_freq, 0)
self.rtlsdr_source_0.set_freq_corr(0, 0) self.rtlsdr_source_0.set_freq_corr(0, 0)
self.rtlsdr_source_0.set_gain(24, 0) self.rtlsdr_source_0.set_gain(16, 0)
self.rtlsdr_source_0.set_if_gain(24, 0) self.rtlsdr_source_0.set_if_gain(16, 0)
self.rtlsdr_source_0.set_bb_gain(100, 0) self.rtlsdr_source_0.set_bb_gain(100, 0)
self.rtlsdr_source_0.set_antenna('', 0) self.rtlsdr_source_0.set_antenna('', 0)
self.rtlsdr_source_0.set_bandwidth(0, 0) self.rtlsdr_source_0.set_bandwidth(0, 0)

@ -1,173 +0,0 @@
import os
import numpy as np
import zmq
from common.runtime import load_root_env
from common.shared_stream_addrs import SHARED_868_ADDR, SHARED_915_ADDR
from core.multichannelswitcher import MultiChannel
from core.sig_n_medi_collect import Signal
load_root_env(__file__)
class Scheduler868:
def __init__(self):
self.signal_length = int(os.getenv('signal_length_868'))
self.multi_channel = MultiChannel(
[*map(float, os.getenv('f_step_868').split())],
[*map(float, os.getenv('f_bases_868').split())],
[*map(float, os.getenv('f_roofs_868').split())],
)
self.base_freq = float(self.multi_channel.init_f())
self.signal = Signal()
def get_current_freq(self):
return float(self.multi_channel.get_cur_channel())
def process(self, lvl):
current_before = self.get_current_freq()
metric = self.signal.fill_signal(lvl, self.signal_length)
if metric == 0:
return current_before, False
next_freq = float(self.multi_channel.change_channel())
self.signal.clear()
lane_complete = next_freq == self.base_freq and current_before != self.base_freq
return next_freq, lane_complete
class Scheduler915:
def __init__(self):
self.porog = float(os.getenv('POROG_915'))
self.point_amount = 100_000
self.split_size = 400_000
self.show_amount = int(0.8 * self.point_amount)
self.f_base = 0.91e9
self.f_step = 20e6
self.f_roof = 0.98e9
self.f = self.f_base
self.channel = 1
self.flag = 0
self.signal_arr = np.array([], dtype=np.complex64)
def get_current_freq(self):
return float(self.f)
def _median(self, sig):
samples = np.asarray(np.abs(np.array(sig, dtype=np.complex64)), dtype=np.float32)
sorted_samples = sorted(samples)
median = abs(float(np.median(sorted_samples[self.show_amount:])))
self.flag = 0 if self.porog > median else 1
def _advance(self):
next_freq = self.f + self.f_step
if next_freq >= self.f_roof:
self.f = self.f_base
self.channel = 1
return float(self.f), True
self.f = next_freq
self.channel += 1
return float(self.f), False
def process(self, lvl):
y = np.asarray(lvl, dtype=np.complex64).ravel()
self.signal_arr = np.concatenate((self.signal_arr, y), axis=None)
if self.flag == 0 and len(self.signal_arr) >= self.point_amount:
self._median(self.signal_arr[:self.point_amount])
self.signal_arr = np.array([], dtype=np.complex64)
if self.flag == 0:
return self._advance()
if len(self.signal_arr) >= self.split_size:
self.flag = 0
self.signal_arr = np.array([], dtype=np.complex64)
return self._advance()
return float(self.f), False
class SharedRouter868915:
def __init__(self):
self.frontends = {
'868': {
'sample_rate': 20e6,
'gain': 24,
'if_gain': 24,
'bb_gain': 100,
'bandwidth': 0,
},
'915': {
'sample_rate': 20e6,
'gain': 16,
'if_gain': 16,
'bb_gain': 0,
'bandwidth': 0,
},
}
self.schedulers = {
'868': Scheduler868(),
'915': Scheduler915(),
}
self.context = zmq.Context.instance()
self.sockets = {
'868': self._make_socket(SHARED_868_ADDR),
'915': self._make_socket(SHARED_915_ADDR),
}
self.active_name = '868'
self.switch_counter = 0
def _make_socket(self, addr):
sock = self.context.socket(zmq.PUSH)
sock.setsockopt(zmq.SNDHWM, 64)
sock.setsockopt(zmq.LINGER, 0)
sock.setsockopt(zmq.IMMEDIATE, 1)
sock.bind(addr)
return sock
def close(self):
for sock in self.sockets.values():
try:
sock.close(0)
except Exception:
pass
def get_active_name(self):
return self.active_name
def get_active_freq(self):
return self.schedulers[self.active_name].get_current_freq()
def get_active_frontend(self):
return dict(self.frontends[self.active_name])
def get_start_freq(self):
return self.get_active_freq()
def route_vector(self, lvl):
vector = np.asarray(lvl, dtype=np.complex64).ravel()
active_name = self.active_name
try:
self.sockets[active_name].send(vector.tobytes(), zmq.NOBLOCK)
except zmq.Again:
pass
next_freq, lane_complete = self.schedulers[active_name].process(vector)
lane_switched = False
if lane_complete:
previous = self.active_name
self.active_name = '915' if self.active_name == '868' else '868'
next_freq = self.get_active_freq()
self.switch_counter += 1
lane_switched = True
print(
f'[shared-router-868-915] switch#{self.switch_counter}: '
f'{previous} -> {self.active_name}, tune={next_freq}'
)
return float(next_freq), lane_switched

Binary file not shown.

@ -1,284 +0,0 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4fdb98fc-65bb-467e-be0c-168fee9b0fca",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cuda:0\n"
]
},
{
"data": {
"text/plain": [
"<contextlib.ExitStack at 0x272800ef510>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import time\n",
"import io\n",
"import cv2\n",
"import copy\n",
"import os\n",
"from tqdm import tqdm\n",
"import torch.nn as nn\n",
"import torch\n",
"import torchvision\n",
"from torch.utils.data import Dataset\n",
"from torch import default_generator, randperm\n",
"from PIL import Image\n",
"#from torch._utils import _accumulate\n",
"import csv\n",
"from torch.utils.data.dataset import Subset\n",
"from scipy import ndimage\n",
"device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
"print(device)\n",
"batch_size = 16\n",
"momentum=0.9\n",
"lr = 1e-3\n",
"import random\n",
"sub_sample = 0.5\n",
"import matplotlib\n",
"import gc\n",
"import torchsig.utils as u\n",
"import torchsig.transforms.transforms as T\n",
"matplotlib.use('Agg')\n",
"import matplotlib as mpl\n",
"mpl.rcParams['agg.path.chunksize'] = 256*256\n",
"plt.ioff()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "4848b066-2e09-4c1c-b8fa-8e3fa84d907a",
"metadata": {},
"outputs": [],
"source": [
"s = T.Spectrogram(nperseg=1024)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "9267fbe1",
"metadata": {},
"outputs": [],
"source": [
"def sig2pic_with_spec(path_to_data, filename, specT=None,figsize=(16,16), dpi=16, resize = None):\n",
" try:\n",
" if specT is None:\n",
" specT = T.Spectrogram(nperseg=1024)\n",
" with open(path_to_data + filename, 'rb') as file:\n",
" tmp = np.frombuffer(file.read(), dtype=np.complex64)\n",
" signal = tmp\n",
" spectr = np.array(specT(signal)['data']['samples'][:,:figsize[0] * dpi])\n",
" mag = np.abs(signal)\n",
" real = signal.real\n",
"\n",
" fig2 = plt.figure(figsize = figsize)\n",
" plt.axes(ylim=(-1, 1))\n",
"\n",
" plt.plot(real, color='black')\n",
" plt.gca().set_axis_off()\n",
" plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0)\n",
" plt.margins(0,0)\n",
" buf2 = io.BytesIO()\n",
" fig2.savefig(buf2, format=\"png\", dpi=dpi)\n",
" buf2.seek(0)\n",
" img_arr2 = np.frombuffer(buf2.getvalue(), dtype=np.uint8)\n",
" buf2.close()\n",
" img2 = cv2.imdecode(img_arr2, 1)\n",
" img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" plt.close(fig2)\n",
"\n",
" fig3 = plt.figure(figsize = figsize)\n",
" plt.axes(ylim=(-1, 1))\n",
"\n",
" plt.plot(mag, color='black')\n",
" plt.gca().set_axis_off()\n",
" plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0)\n",
" plt.margins(0,0)\n",
" buf3 = io.BytesIO()\n",
" fig3.savefig(buf3, format=\"png\", dpi=dpi)\n",
" buf3.seek(0)\n",
" img_arr3 = np.frombuffer(buf3.getvalue(), dtype=np.uint8)\n",
" buf3.close()\n",
" img3 = cv2.imdecode(img_arr3, 1)\n",
" img3 = cv2.cvtColor(img3, cv2.COLOR_BGR2GRAY)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" plt.close(fig3)\n",
"\n",
" if resize != None:\n",
" resized_real = cv2.resize(img2, resize)\n",
" resized_mag = cv2.resize(img3, resize)\n",
" resized_spectr = cv2.resize(spectr, resize)\n",
" img = np.asarray([resized_real, resized_mag, resized_spectr], dtype=np.float32)\n",
" return img\n",
" img = np.asarray([img2, img3, spectr], dtype=np.float32)\n",
" return img\n",
" except Exception as e:\n",
" print(str(e))\n",
" return None"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "448da74a-e0ae-44d8-9877-8dd1f257a24f",
"metadata": {},
"outputs": [],
"source": [
"path_to_binaries = '//192.168.11.63/data/DATASETS/Energomash/1200'\n",
"path_to_pictures = '//192.168.11.63/data/DATASETS/Energomash/1200_jpg'"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "ac4945a8-29c4-4da4-945f-08658953e3e5",
"metadata": {},
"outputs": [],
"source": [
"from tqdm import tqdm"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "6f226f86-5d72-4573-8af6-750128b70263",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
" 0%| | 0/963 [00:00<?, ?it/s]C:\\Users\\snytk\\miniconda3\\envs\\python311\\Lib\\site-packages\\scipy\\signal\\_spectral_py.py:1936: RuntimeWarning: overflow encountered in multiply\n",
" result = np.conjugate(result) * result\n",
"C:\\Users\\snytk\\miniconda3\\envs\\python311\\Lib\\site-packages\\scipy\\signal\\_spectral_py.py:1938: RuntimeWarning: invalid value encountered in multiply\n",
" result *= scale\n",
"100%|████████████████████████████████████████████████████████████████████████████████| 963/963 [17:40<00:00, 1.10s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: drone finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|████████████████████████████████████████████████████████████████████████████████| 963/963 [51:41<00:00, 3.22s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: noise finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"size = (256,256)\n",
"if not os.path.exists(path_to_pictures):\n",
" os.mkdir(path_to_pictures)\n",
"for subdir in os.listdir(path_to_binaries):\n",
" filepath = path_to_binaries + '/' + subdir + '/'\n",
" if not os.path.exists(path_to_pictures +'/' + subdir):\n",
" os.mkdir(path_to_pictures + '/' + subdir)\n",
" files = os.listdir(filepath)\n",
" for file in tqdm(files):\n",
" savepath = path_to_pictures +'/' + subdir + '/' + file + '.npy'\n",
" savepath_real_png = path_to_pictures +'/' + subdir + '/' + file + '_real' + '.png' \n",
" savepath_imag_png = path_to_pictures +'/' + subdir + '/' + file + '_imag' + '.png' \n",
" savepath_spec_png = path_to_pictures +'/' + subdir + '/' + file + '_spec' + '.png'\n",
" if not os.path.exists(savepath):\n",
" img = sig2pic_with_spec(path_to_data=filepath, filename=file, specT=s, resize = size)\n",
" gc.collect()\n",
" try:\n",
" \n",
" plt.imshow(img[0])\n",
" plt.savefig(savepath_real_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" plt.imshow(img[1])\n",
" plt.savefig(savepath_imag_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
"\n",
" plt.imshow(img[2])\n",
" plt.savefig(savepath_spec_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" np.save(savepath, img)\n",
" \n",
" except Exception:\n",
" continue\n",
" print('Dir: ', subdir , ' finished!')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6f4bf849",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

@ -1,270 +0,0 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4fdb98fc-65bb-467e-be0c-168fee9b0fca",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cuda:0\n"
]
},
{
"data": {
"text/plain": [
"<contextlib.ExitStack at 0x25775eabcd0>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import time\n",
"import io\n",
"import cv2\n",
"import copy\n",
"import os\n",
"from tqdm import tqdm\n",
"import torch.nn as nn\n",
"import torch\n",
"import torchvision\n",
"from torch.utils.data import Dataset\n",
"from torch import default_generator, randperm\n",
"from PIL import Image\n",
"#from torch._utils import _accumulate\n",
"import csv\n",
"from torch.utils.data.dataset import Subset\n",
"from scipy import ndimage\n",
"device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
"print(device)\n",
"batch_size = 16\n",
"momentum=0.9\n",
"lr = 1e-3\n",
"import random\n",
"sub_sample = 0.5\n",
"import matplotlib\n",
"import gc\n",
"import torchsig.utils as u\n",
"import torchsig.transforms.transforms as T\n",
"matplotlib.use('Agg')\n",
"import matplotlib as mpl\n",
"mpl.rcParams['agg.path.chunksize'] = 256*256\n",
"plt.ioff()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "4848b066-2e09-4c1c-b8fa-8e3fa84d907a",
"metadata": {},
"outputs": [],
"source": [
"s = T.Spectrogram(nperseg=256)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "9267fbe1",
"metadata": {},
"outputs": [],
"source": [
"def sig2pic_with_spec(path_to_data, filename, specT=None,figsize=(16,16), dpi=16, resize = None):\n",
" try:\n",
" if specT is None:\n",
" specT = T.Spectrogram(nperseg=256)\n",
" with open(path_to_data + filename, 'rb') as file:\n",
" tmp = np.frombuffer(file.read(), dtype=np.complex64)\n",
" signal = tmp\n",
" spectr = np.array(specT(signal)['data']['samples'][:,:figsize[0] * dpi])\n",
" mag = np.abs(signal)\n",
" real = signal.real\n",
"\n",
" fig2 = plt.figure(figsize = figsize)\n",
" plt.axes(ylim=(-1, 1))\n",
"\n",
" plt.plot(real, color='black')\n",
" plt.gca().set_axis_off()\n",
" plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0)\n",
" plt.margins(0,0)\n",
" buf2 = io.BytesIO()\n",
" fig2.savefig(buf2, format=\"png\", dpi=dpi)\n",
" buf2.seek(0)\n",
" img_arr2 = np.frombuffer(buf2.getvalue(), dtype=np.uint8)\n",
" buf2.close()\n",
" img2 = cv2.imdecode(img_arr2, 1)\n",
" img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" plt.close(fig2)\n",
"\n",
" fig3 = plt.figure(figsize = figsize)\n",
" plt.axes(ylim=(-1, 1))\n",
"\n",
" plt.plot(mag, color='black')\n",
" plt.gca().set_axis_off()\n",
" plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0)\n",
" plt.margins(0,0)\n",
" buf3 = io.BytesIO()\n",
" fig3.savefig(buf3, format=\"png\", dpi=dpi)\n",
" buf3.seek(0)\n",
" img_arr3 = np.frombuffer(buf3.getvalue(), dtype=np.uint8)\n",
" buf3.close()\n",
" img3 = cv2.imdecode(img_arr3, 1)\n",
" img3 = cv2.cvtColor(img3, cv2.COLOR_BGR2GRAY)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" plt.close(fig3)\n",
"\n",
" if resize != None:\n",
" resized_real = cv2.resize(img2, resize)\n",
" resized_mag = cv2.resize(img3, resize)\n",
" resized_spectr = cv2.resize(spectr, resize)\n",
" img = np.asarray([resized_real, resized_mag, resized_spectr], dtype=np.float32)\n",
" return img\n",
" img = np.asarray([img2, img3, spectr], dtype=np.float32)\n",
" return img\n",
" except Exception as e:\n",
" print(str(e))\n",
" return None"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "448da74a-e0ae-44d8-9877-8dd1f257a24f",
"metadata": {},
"outputs": [],
"source": [
"path_to_binaries = '//192.168.11.63/data/DATASETS/Energomash/2400'\n",
"path_to_pictures = '//192.168.11.63/data/DATASETS/Energomash/2400_jpg'"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "ac4945a8-29c4-4da4-945f-08658953e3e5",
"metadata": {},
"outputs": [],
"source": [
"from tqdm import tqdm"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "6f226f86-5d72-4573-8af6-750128b70263",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
" 0%| | 0/965 [00:00<?, ?it/s]C:\\Users\\snytk\\miniconda3\\envs\\python311\\Lib\\site-packages\\scipy\\signal\\_spectral_py.py:1936: RuntimeWarning: overflow encountered in multiply\n",
" result = np.conjugate(result) * result\n",
"C:\\Users\\snytk\\miniconda3\\envs\\python311\\Lib\\site-packages\\scipy\\signal\\_spectral_py.py:1938: RuntimeWarning: invalid value encountered in multiply\n",
" result *= scale\n",
"100%|████████████████████████████████████████████████████████████████████████████████| 965/965 [28:11<00:00, 1.75s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: noise finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"size = (256,256)\n",
"if not os.path.exists(path_to_pictures):\n",
" os.mkdir(path_to_pictures)\n",
"for subdir in os.listdir(path_to_binaries):\n",
" filepath = path_to_binaries + '/' + subdir + '/'\n",
" if not os.path.exists(path_to_pictures +'/' + subdir):\n",
" os.mkdir(path_to_pictures + '/' + subdir)\n",
" files = os.listdir(filepath)\n",
" for file in tqdm(files):\n",
" savepath = path_to_pictures +'/' + subdir + '/' + file + '.npy'\n",
" savepath_real_png = path_to_pictures +'/' + subdir + '/' + file + '_real' + '.png' \n",
" savepath_imag_png = path_to_pictures +'/' + subdir + '/' + file + '_imag' + '.png' \n",
" savepath_spec_png = path_to_pictures +'/' + subdir + '/' + file + '_spec' + '.png'\n",
" if not os.path.exists(savepath):\n",
" img = sig2pic_with_spec(path_to_data=filepath, filename=file, specT=s, resize = size)\n",
" gc.collect()\n",
" try:\n",
" \n",
" plt.imshow(img[0])\n",
" plt.savefig(savepath_real_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" plt.imshow(img[1])\n",
" plt.savefig(savepath_imag_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
"\n",
" plt.imshow(img[2])\n",
" plt.savefig(savepath_spec_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" np.save(savepath, img)\n",
" \n",
" except Exception:\n",
" continue\n",
" print('Dir: ', subdir , ' finished!')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "106b1add",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

@ -1,270 +0,0 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4fdb98fc-65bb-467e-be0c-168fee9b0fca",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cuda:0\n"
]
},
{
"data": {
"text/plain": [
"<contextlib.ExitStack at 0x25775eabcd0>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import time\n",
"import io\n",
"import cv2\n",
"import copy\n",
"import os\n",
"from tqdm import tqdm\n",
"import torch.nn as nn\n",
"import torch\n",
"import torchvision\n",
"from torch.utils.data import Dataset\n",
"from torch import default_generator, randperm\n",
"from PIL import Image\n",
"#from torch._utils import _accumulate\n",
"import csv\n",
"from torch.utils.data.dataset import Subset\n",
"from scipy import ndimage\n",
"device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
"print(device)\n",
"batch_size = 16\n",
"momentum=0.9\n",
"lr = 1e-3\n",
"import random\n",
"sub_sample = 0.5\n",
"import matplotlib\n",
"import gc\n",
"import torchsig.utils as u\n",
"import torchsig.transforms.transforms as T\n",
"matplotlib.use('Agg')\n",
"import matplotlib as mpl\n",
"mpl.rcParams['agg.path.chunksize'] = 256*256\n",
"plt.ioff()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "4848b066-2e09-4c1c-b8fa-8e3fa84d907a",
"metadata": {},
"outputs": [],
"source": [
"s = T.Spectrogram(nperseg=256)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "9267fbe1",
"metadata": {},
"outputs": [],
"source": [
"def sig2pic_with_spec(path_to_data, filename, specT=None,figsize=(16,16), dpi=16, resize = None):\n",
" try:\n",
" if specT is None:\n",
" specT = T.Spectrogram(nperseg=256)\n",
" with open(path_to_data + filename, 'rb') as file:\n",
" tmp = np.frombuffer(file.read(), dtype=np.complex64)\n",
" signal = tmp\n",
" spectr = np.array(specT(signal)['data']['samples'][:,:figsize[0] * dpi])\n",
" mag = np.abs(signal)\n",
" real = signal.real\n",
"\n",
" fig2 = plt.figure(figsize = figsize)\n",
" plt.axes(ylim=(-1, 1))\n",
"\n",
" plt.plot(real, color='black')\n",
" plt.gca().set_axis_off()\n",
" plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0)\n",
" plt.margins(0,0)\n",
" buf2 = io.BytesIO()\n",
" fig2.savefig(buf2, format=\"png\", dpi=dpi)\n",
" buf2.seek(0)\n",
" img_arr2 = np.frombuffer(buf2.getvalue(), dtype=np.uint8)\n",
" buf2.close()\n",
" img2 = cv2.imdecode(img_arr2, 1)\n",
" img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" plt.close(fig2)\n",
"\n",
" fig3 = plt.figure(figsize = figsize)\n",
" plt.axes(ylim=(-1, 1))\n",
"\n",
" plt.plot(mag, color='black')\n",
" plt.gca().set_axis_off()\n",
" plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0)\n",
" plt.margins(0,0)\n",
" buf3 = io.BytesIO()\n",
" fig3.savefig(buf3, format=\"png\", dpi=dpi)\n",
" buf3.seek(0)\n",
" img_arr3 = np.frombuffer(buf3.getvalue(), dtype=np.uint8)\n",
" buf3.close()\n",
" img3 = cv2.imdecode(img_arr3, 1)\n",
" img3 = cv2.cvtColor(img3, cv2.COLOR_BGR2GRAY)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" plt.close(fig3)\n",
"\n",
" if resize != None:\n",
" resized_real = cv2.resize(img2, resize)\n",
" resized_mag = cv2.resize(img3, resize)\n",
" resized_spectr = cv2.resize(spectr, resize)\n",
" img = np.asarray([resized_real, resized_mag, resized_spectr], dtype=np.float32)\n",
" return img\n",
" img = np.asarray([img2, img3, spectr], dtype=np.float32)\n",
" return img\n",
" except Exception as e:\n",
" print(str(e))\n",
" return None"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "448da74a-e0ae-44d8-9877-8dd1f257a24f",
"metadata": {},
"outputs": [],
"source": [
"path_to_binaries = '//192.168.11.63/data/DATASETS/Energomash/2400'\n",
"path_to_pictures = '//192.168.11.63/data/DATASETS/Energomash/2400_jpg'"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "ac4945a8-29c4-4da4-945f-08658953e3e5",
"metadata": {},
"outputs": [],
"source": [
"from tqdm import tqdm"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "6f226f86-5d72-4573-8af6-750128b70263",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
" 0%| | 0/965 [00:00<?, ?it/s]C:\\Users\\snytk\\miniconda3\\envs\\python311\\Lib\\site-packages\\scipy\\signal\\_spectral_py.py:1936: RuntimeWarning: overflow encountered in multiply\n",
" result = np.conjugate(result) * result\n",
"C:\\Users\\snytk\\miniconda3\\envs\\python311\\Lib\\site-packages\\scipy\\signal\\_spectral_py.py:1938: RuntimeWarning: invalid value encountered in multiply\n",
" result *= scale\n",
"100%|████████████████████████████████████████████████████████████████████████████████| 965/965 [28:11<00:00, 1.75s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: noise finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"size = (256,256)\n",
"if not os.path.exists(path_to_pictures):\n",
" os.mkdir(path_to_pictures)\n",
"for subdir in os.listdir(path_to_binaries):\n",
" filepath = path_to_binaries + '/' + subdir + '/'\n",
" if not os.path.exists(path_to_pictures +'/' + subdir):\n",
" os.mkdir(path_to_pictures + '/' + subdir)\n",
" files = os.listdir(filepath)\n",
" for file in tqdm(files):\n",
" savepath = path_to_pictures +'/' + subdir + '/' + file + '.npy'\n",
" savepath_real_png = path_to_pictures +'/' + subdir + '/' + file + '_real' + '.png' \n",
" savepath_imag_png = path_to_pictures +'/' + subdir + '/' + file + '_imag' + '.png' \n",
" savepath_spec_png = path_to_pictures +'/' + subdir + '/' + file + '_spec' + '.png'\n",
" if not os.path.exists(savepath):\n",
" img = sig2pic_with_spec(path_to_data=filepath, filename=file, specT=s, resize = size)\n",
" gc.collect()\n",
" try:\n",
" \n",
" plt.imshow(img[0])\n",
" plt.savefig(savepath_real_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" plt.imshow(img[1])\n",
" plt.savefig(savepath_imag_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
"\n",
" plt.imshow(img[2])\n",
" plt.savefig(savepath_spec_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" np.save(savepath, img)\n",
" \n",
" except Exception:\n",
" continue\n",
" print('Dir: ', subdir , ' finished!')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "106b1add",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

@ -1,428 +0,0 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4fdb98fc-65bb-467e-be0c-168fee9b0fca",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cuda:0\n"
]
},
{
"data": {
"text/plain": [
"<contextlib.ExitStack at 0x73285e4f6300>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import time\n",
"import io\n",
"import cv2\n",
"import copy\n",
"import os\n",
"from tqdm import tqdm\n",
"import torch.nn as nn\n",
"import torch\n",
"import torchvision\n",
"from torch.utils.data import Dataset\n",
"from torch import default_generator, randperm\n",
"from PIL import Image\n",
"#from torch._utils import _accumulate\n",
"import csv\n",
"from torch.utils.data.dataset import Subset\n",
"from scipy import ndimage\n",
"device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
"print(device)\n",
"batch_size = 16\n",
"momentum=0.9\n",
"lr = 1e-3\n",
"import random\n",
"sub_sample = 0.5\n",
"import matplotlib\n",
"import gc\n",
"import torchsig.utils as u\n",
"import torchsig.transforms.transforms as T\n",
"matplotlib.use('Agg')\n",
"import matplotlib as mpl\n",
"mpl.rcParams['agg.path.chunksize'] = 256*256\n",
"plt.ioff()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "4848b066-2e09-4c1c-b8fa-8e3fa84d907a",
"metadata": {},
"outputs": [],
"source": [
"s = T.Spectrogram(nperseg=256)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "9267fbe1",
"metadata": {},
"outputs": [],
"source": [
"def sig2pic_with_spec(path_to_data, filename, specT=None, figsize=(16,16), dpi=16, resize = None):\n",
" def standartize_signal(signal):\n",
" mean = np.mean(signal)\n",
" std = np.std(signal)\n",
" standardized_signal = (signal - mean) / std\n",
" return standardized_signal\n",
" \n",
" try:\n",
" if specT is None:\n",
" specT = T.Spectrogram(nperseg=256)\n",
" with open(path_to_data + filename, 'rb') as file:\n",
" tmp = np.frombuffer(file.read(), dtype=np.complex64)\n",
" signal = tmp\n",
" print(len(signal))\n",
" spectr = np.array(specT(signal)['data']['samples'][:,:figsize[0] * dpi])\n",
" mag = np.abs(signal)\n",
" mag = standartize_signal(mag)\n",
" real = signal.real\n",
" real = standartize_signal(real)\n",
"\n",
" fig2 = plt.figure(figsize = figsize)\n",
" plt.axes(ylim=(-1, 1))\n",
"\n",
" plt.plot(real, color='black')\n",
" plt.gca().set_axis_off()\n",
" plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0)\n",
" plt.margins(0,0)\n",
" buf2 = io.BytesIO()\n",
" fig2.savefig(buf2, format=\"png\", dpi=dpi)\n",
" buf2.seek(0)\n",
" img_arr2 = np.frombuffer(buf2.getvalue(), dtype=np.uint8)\n",
" buf2.close()\n",
" img2 = cv2.imdecode(img_arr2, 1)\n",
" img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" plt.close(fig2)\n",
"\n",
" fig3 = plt.figure(figsize = figsize)\n",
" plt.axes(ylim=(-1, 1))\n",
"\n",
" plt.plot(mag, color='black')\n",
" plt.gca().set_axis_off()\n",
" plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0)\n",
" plt.margins(0,0)\n",
" buf3 = io.BytesIO()\n",
" fig3.savefig(buf3, format=\"png\", dpi=dpi)\n",
" buf3.seek(0)\n",
" img_arr3 = np.frombuffer(buf3.getvalue(), dtype=np.uint8)\n",
" buf3.close()\n",
" img3 = cv2.imdecode(img_arr3, 1)\n",
" img3 = cv2.cvtColor(img3, cv2.COLOR_BGR2GRAY)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" plt.close(fig3)\n",
"\n",
" if resize != None:\n",
" resized_real = cv2.resize(img2, resize)\n",
" resized_mag = cv2.resize(img3, resize)\n",
" resized_spectr = cv2.resize(spectr, resize)\n",
" img = np.asarray([resized_real, resized_mag, resized_spectr], dtype=np.float32)\n",
" return img\n",
" img = np.asarray([img2, img3, spectr], dtype=np.float32)\n",
" return img\n",
" except Exception as e:\n",
" print(str(e))\n",
" return None\n",
"\n",
"def plot_signal_and_magnitude(path_to_data, filename, filename_signal):\n",
" def remove_outliers(signal, threshold):\n",
" filtered_signal = np.where(np.abs(signal) <= threshold, signal, np.nan)\n",
" return np.nan_to_num(filtered_signal)\n",
" \n",
" def standartize_signal(signal):\n",
" mean = np.mean(signal)\n",
" std = np.std(signal)\n",
" standardized_signal = (signal - mean) / std\n",
" return standardized_signal\n",
" \n",
" with open(path_to_data + filename, 'rb') as file:\n",
" signal = np.frombuffer(file.read(), dtype=np.complex64)\n",
" print(max(np.real(signal)))\n",
" print(signal[:100])\n",
" plt.figure(figsize=(12, 6))\n",
" plt.subplot(2, 1, 1)\n",
" plt.plot(remove_outliers(standartize_signal(np.real(signal)),1)[10000:], label='Real Part')\n",
" plt.plot(remove_outliers(standartize_signal(np.imag(signal)),1)[10000:], label='Imaginary Part')\n",
" plt.title('QAM Signal')\n",
" plt.legend()\n",
" plt.subplot(2, 1, 2)\n",
" plt.plot(np.abs(signal), label='Magnitude')\n",
" plt.title('Magnitude of QAM Signal')\n",
" plt.legend()\n",
" plt.tight_layout()\n",
" plt.savefig(filename_signal)\n",
" plt.close()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "448da74a-e0ae-44d8-9877-8dd1f257a24f",
"metadata": {},
"outputs": [],
"source": [
"path_to_binaries = '/home/sibscience/Datasets/915_9K'\n",
"path_to_pictures = '/home/sibscience/Datasets/915_9K_jpg'"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "ac4945a8-29c4-4da4-945f-08658953e3e5",
"metadata": {},
"outputs": [],
"source": [
"from tqdm import tqdm"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "6a5f4c51",
"metadata": {},
"outputs": [
{
"ename": "FileNotFoundError",
"evalue": "[Errno 2] No such file or directory: '/home/sibscience/Datasets/915_9K_jpg'",
"output_type": "error",
"traceback": [
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
"\u001b[31mFileNotFoundError\u001b[39m Traceback (most recent call last)",
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[7]\u001b[39m\u001b[32m, line 3\u001b[39m\n\u001b[32m 1\u001b[39m size = (\u001b[32m256\u001b[39m,\u001b[32m256\u001b[39m)\n\u001b[32m 2\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m os.path.exists(path_to_pictures):\n\u001b[32m----> \u001b[39m\u001b[32m3\u001b[39m \u001b[43mos\u001b[49m\u001b[43m.\u001b[49m\u001b[43mmkdir\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpath_to_pictures\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 4\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m subdir \u001b[38;5;129;01min\u001b[39;00m os.listdir(path_to_binaries):\n\u001b[32m 5\u001b[39m filepath = path_to_binaries + \u001b[33m'\u001b[39m\u001b[33m/\u001b[39m\u001b[33m'\u001b[39m + subdir + \u001b[33m'\u001b[39m\u001b[33m/\u001b[39m\u001b[33m'\u001b[39m\n",
"\u001b[31mFileNotFoundError\u001b[39m: [Errno 2] No such file or directory: '/home/sibscience/Datasets/915_9K_jpg'"
]
}
],
"source": [
"size = (256,256)\n",
"if not os.path.exists(path_to_pictures):\n",
" os.mkdir(path_to_pictures)\n",
"for subdir in os.listdir(path_to_binaries):\n",
" filepath = path_to_binaries + '/' + subdir + '/'\n",
" if not os.path.exists(path_to_pictures +'/' + subdir):\n",
" os.mkdir(path_to_pictures + '/' + subdir)\n",
" files = os.listdir(filepath)\n",
" for file in tqdm(files):\n",
" savepath = path_to_pictures +'/' + subdir + '/' + file + '.npy'\n",
" savepath_real_png = path_to_pictures +'/' + subdir + '/' + file + '.png' \n",
" if not os.path.exists(savepath):\n",
" img = plot_signal_and_magnitude(path_to_data=filepath, filename=file, filename_signal= savepath_real_png)\n",
" gc.collect()\n",
" print('Dir: ', subdir , ' finished!')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6f226f86-5d72-4573-8af6-750128b70263",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r\n",
" 0%| | 0/565 [00:00<?, ?it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"800016\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r\n",
" 28%|█████████████████████▉ | 157/565 [00:01<00:02, 145.94it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"800016\n",
"800016\n",
"800016\n",
"800016\n",
"800016\n",
"800016\n",
"800016\n",
"800016\n",
"800016\n",
"800016\n",
"800016\n",
"800016\n",
"800016\n",
"800016\n",
"800016\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r\n",
" 30%|████████████████████████▎ | 172/565 [00:15<00:46, 8.38it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"800016\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 31%|████████████████████████▍ | 173/565 [00:16<00:37, 10.59it/s]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"800016\n"
]
},
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[10], line 15\u001b[0m\n\u001b[0;32m 13\u001b[0m savepath_spec_png \u001b[38;5;241m=\u001b[39m path_to_pictures \u001b[38;5;241m+\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;241m+\u001b[39m subdir \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;241m+\u001b[39m file \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_spec\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m.png\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m 14\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mexists(savepath):\n\u001b[1;32m---> 15\u001b[0m img \u001b[38;5;241m=\u001b[39m \u001b[43msig2pic_with_spec\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpath_to_data\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfilepath\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfilename\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfile\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mspecT\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43ms\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mresize\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43msize\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 16\u001b[0m gc\u001b[38;5;241m.\u001b[39mcollect()\n\u001b[0;32m 17\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n",
"Cell \u001b[1;32mIn[7], line 29\u001b[0m, in \u001b[0;36msig2pic_with_spec\u001b[1;34m(path_to_data, filename, specT, figsize, dpi, resize)\u001b[0m\n\u001b[0;32m 27\u001b[0m plt\u001b[38;5;241m.\u001b[39mmargins(\u001b[38;5;241m0\u001b[39m,\u001b[38;5;241m0\u001b[39m)\n\u001b[0;32m 28\u001b[0m buf2 \u001b[38;5;241m=\u001b[39m io\u001b[38;5;241m.\u001b[39mBytesIO()\n\u001b[1;32m---> 29\u001b[0m \u001b[43mfig2\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msavefig\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbuf2\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mformat\u001b[39;49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mpng\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdpi\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdpi\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 30\u001b[0m buf2\u001b[38;5;241m.\u001b[39mseek(\u001b[38;5;241m0\u001b[39m)\n\u001b[0;32m 31\u001b[0m img_arr2 \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mfrombuffer(buf2\u001b[38;5;241m.\u001b[39mgetvalue(), dtype\u001b[38;5;241m=\u001b[39mnp\u001b[38;5;241m.\u001b[39muint8)\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\matplotlib\\figure.py:3390\u001b[0m, in \u001b[0;36mFigure.savefig\u001b[1;34m(self, fname, transparent, **kwargs)\u001b[0m\n\u001b[0;32m 3388\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m ax \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maxes:\n\u001b[0;32m 3389\u001b[0m _recursively_make_axes_transparent(stack, ax)\n\u001b[1;32m-> 3390\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcanvas\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mprint_figure\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\matplotlib\\backend_bases.py:2193\u001b[0m, in \u001b[0;36mFigureCanvasBase.print_figure\u001b[1;34m(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, pad_inches, bbox_extra_artists, backend, **kwargs)\u001b[0m\n\u001b[0;32m 2189\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 2190\u001b[0m \u001b[38;5;66;03m# _get_renderer may change the figure dpi (as vector formats\u001b[39;00m\n\u001b[0;32m 2191\u001b[0m \u001b[38;5;66;03m# force the figure dpi to 72), so we need to set it again here.\u001b[39;00m\n\u001b[0;32m 2192\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m cbook\u001b[38;5;241m.\u001b[39m_setattr_cm(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfigure, dpi\u001b[38;5;241m=\u001b[39mdpi):\n\u001b[1;32m-> 2193\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mprint_method\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 2194\u001b[0m \u001b[43m \u001b[49m\u001b[43mfilename\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 2195\u001b[0m \u001b[43m \u001b[49m\u001b[43mfacecolor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfacecolor\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 2196\u001b[0m \u001b[43m \u001b[49m\u001b[43medgecolor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43medgecolor\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 2197\u001b[0m \u001b[43m \u001b[49m\u001b[43morientation\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43morientation\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 2198\u001b[0m \u001b[43m \u001b[49m\u001b[43mbbox_inches_restore\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m_bbox_inches_restore\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 2199\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 2200\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m 2201\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m bbox_inches \u001b[38;5;129;01mand\u001b[39;00m restore_bbox:\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\matplotlib\\backend_bases.py:2043\u001b[0m, in \u001b[0;36mFigureCanvasBase._switch_canvas_and_return_print_method.<locals>.<lambda>\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 2039\u001b[0m optional_kws \u001b[38;5;241m=\u001b[39m { \u001b[38;5;66;03m# Passed by print_figure for other renderers.\u001b[39;00m\n\u001b[0;32m 2040\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdpi\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfacecolor\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124medgecolor\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124morientation\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 2041\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mbbox_inches_restore\u001b[39m\u001b[38;5;124m\"\u001b[39m}\n\u001b[0;32m 2042\u001b[0m skip \u001b[38;5;241m=\u001b[39m optional_kws \u001b[38;5;241m-\u001b[39m {\u001b[38;5;241m*\u001b[39minspect\u001b[38;5;241m.\u001b[39msignature(meth)\u001b[38;5;241m.\u001b[39mparameters}\n\u001b[1;32m-> 2043\u001b[0m print_method \u001b[38;5;241m=\u001b[39m functools\u001b[38;5;241m.\u001b[39mwraps(meth)(\u001b[38;5;28;01mlambda\u001b[39;00m \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: \u001b[43mmeth\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 2044\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m{\u001b[49m\u001b[43mk\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mv\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mv\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitems\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mskip\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[0;32m 2045\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m: \u001b[38;5;66;03m# Let third-parties do as they see fit.\u001b[39;00m\n\u001b[0;32m 2046\u001b[0m print_method \u001b[38;5;241m=\u001b[39m meth\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\matplotlib\\backends\\backend_agg.py:497\u001b[0m, in \u001b[0;36mFigureCanvasAgg.print_png\u001b[1;34m(self, filename_or_obj, metadata, pil_kwargs)\u001b[0m\n\u001b[0;32m 450\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mprint_png\u001b[39m(\u001b[38;5;28mself\u001b[39m, filename_or_obj, \u001b[38;5;241m*\u001b[39m, metadata\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, pil_kwargs\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[0;32m 451\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 452\u001b[0m \u001b[38;5;124;03m Write the figure to a PNG file.\u001b[39;00m\n\u001b[0;32m 453\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 495\u001b[0m \u001b[38;5;124;03m *metadata*, including the default 'Software' key.\u001b[39;00m\n\u001b[0;32m 496\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 497\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_print_pil\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilename_or_obj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mpng\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpil_kwargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmetadata\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\matplotlib\\backends\\backend_agg.py:445\u001b[0m, in \u001b[0;36mFigureCanvasAgg._print_pil\u001b[1;34m(self, filename_or_obj, fmt, pil_kwargs, metadata)\u001b[0m\n\u001b[0;32m 440\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_print_pil\u001b[39m(\u001b[38;5;28mself\u001b[39m, filename_or_obj, fmt, pil_kwargs, metadata\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[0;32m 441\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 442\u001b[0m \u001b[38;5;124;03m Draw the canvas, then save it using `.image.imsave` (to which\u001b[39;00m\n\u001b[0;32m 443\u001b[0m \u001b[38;5;124;03m *pil_kwargs* and *metadata* are forwarded).\u001b[39;00m\n\u001b[0;32m 444\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 445\u001b[0m \u001b[43mFigureCanvasAgg\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdraw\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[0;32m 446\u001b[0m mpl\u001b[38;5;241m.\u001b[39mimage\u001b[38;5;241m.\u001b[39mimsave(\n\u001b[0;32m 447\u001b[0m filename_or_obj, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuffer_rgba(), \u001b[38;5;28mformat\u001b[39m\u001b[38;5;241m=\u001b[39mfmt, origin\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mupper\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 448\u001b[0m dpi\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfigure\u001b[38;5;241m.\u001b[39mdpi, metadata\u001b[38;5;241m=\u001b[39mmetadata, pil_kwargs\u001b[38;5;241m=\u001b[39mpil_kwargs)\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\matplotlib\\backends\\backend_agg.py:388\u001b[0m, in \u001b[0;36mFigureCanvasAgg.draw\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 385\u001b[0m \u001b[38;5;66;03m# Acquire a lock on the shared font cache.\u001b[39;00m\n\u001b[0;32m 386\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtoolbar\u001b[38;5;241m.\u001b[39m_wait_cursor_for_draw_cm() \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtoolbar\n\u001b[0;32m 387\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m nullcontext()):\n\u001b[1;32m--> 388\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfigure\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdraw\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrenderer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 389\u001b[0m \u001b[38;5;66;03m# A GUI class may be need to update a window using this draw, so\u001b[39;00m\n\u001b[0;32m 390\u001b[0m \u001b[38;5;66;03m# don't forget to call the superclass.\u001b[39;00m\n\u001b[0;32m 391\u001b[0m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mdraw()\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\matplotlib\\artist.py:95\u001b[0m, in \u001b[0;36m_finalize_rasterization.<locals>.draw_wrapper\u001b[1;34m(artist, renderer, *args, **kwargs)\u001b[0m\n\u001b[0;32m 93\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(draw)\n\u001b[0;32m 94\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdraw_wrapper\u001b[39m(artist, renderer, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m---> 95\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mdraw\u001b[49m\u001b[43m(\u001b[49m\u001b[43martist\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 96\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m renderer\u001b[38;5;241m.\u001b[39m_rasterizing:\n\u001b[0;32m 97\u001b[0m renderer\u001b[38;5;241m.\u001b[39mstop_rasterizing()\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\matplotlib\\artist.py:72\u001b[0m, in \u001b[0;36mallow_rasterization.<locals>.draw_wrapper\u001b[1;34m(artist, renderer)\u001b[0m\n\u001b[0;32m 69\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m artist\u001b[38;5;241m.\u001b[39mget_agg_filter() \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 70\u001b[0m renderer\u001b[38;5;241m.\u001b[39mstart_filter()\n\u001b[1;32m---> 72\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mdraw\u001b[49m\u001b[43m(\u001b[49m\u001b[43martist\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 73\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m 74\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m artist\u001b[38;5;241m.\u001b[39mget_agg_filter() \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\matplotlib\\figure.py:3154\u001b[0m, in \u001b[0;36mFigure.draw\u001b[1;34m(self, renderer)\u001b[0m\n\u001b[0;32m 3151\u001b[0m \u001b[38;5;66;03m# ValueError can occur when resizing a window.\u001b[39;00m\n\u001b[0;32m 3153\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpatch\u001b[38;5;241m.\u001b[39mdraw(renderer)\n\u001b[1;32m-> 3154\u001b[0m \u001b[43mmimage\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_draw_list_compositing_images\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 3155\u001b[0m \u001b[43m \u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43martists\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msuppressComposite\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 3157\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m sfig \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msubfigs:\n\u001b[0;32m 3158\u001b[0m sfig\u001b[38;5;241m.\u001b[39mdraw(renderer)\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\matplotlib\\image.py:132\u001b[0m, in \u001b[0;36m_draw_list_compositing_images\u001b[1;34m(renderer, parent, artists, suppress_composite)\u001b[0m\n\u001b[0;32m 130\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m not_composite \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m has_images:\n\u001b[0;32m 131\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m a \u001b[38;5;129;01min\u001b[39;00m artists:\n\u001b[1;32m--> 132\u001b[0m \u001b[43ma\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdraw\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 133\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 134\u001b[0m \u001b[38;5;66;03m# Composite any adjacent images together\u001b[39;00m\n\u001b[0;32m 135\u001b[0m image_group \u001b[38;5;241m=\u001b[39m []\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\matplotlib\\artist.py:72\u001b[0m, in \u001b[0;36mallow_rasterization.<locals>.draw_wrapper\u001b[1;34m(artist, renderer)\u001b[0m\n\u001b[0;32m 69\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m artist\u001b[38;5;241m.\u001b[39mget_agg_filter() \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 70\u001b[0m renderer\u001b[38;5;241m.\u001b[39mstart_filter()\n\u001b[1;32m---> 72\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mdraw\u001b[49m\u001b[43m(\u001b[49m\u001b[43martist\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 73\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m 74\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m artist\u001b[38;5;241m.\u001b[39mget_agg_filter() \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\matplotlib\\axes\\_base.py:3070\u001b[0m, in \u001b[0;36m_AxesBase.draw\u001b[1;34m(self, renderer)\u001b[0m\n\u001b[0;32m 3067\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m artists_rasterized:\n\u001b[0;32m 3068\u001b[0m _draw_rasterized(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfigure, artists_rasterized, renderer)\n\u001b[1;32m-> 3070\u001b[0m \u001b[43mmimage\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_draw_list_compositing_images\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 3071\u001b[0m \u001b[43m \u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43martists\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfigure\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msuppressComposite\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 3073\u001b[0m renderer\u001b[38;5;241m.\u001b[39mclose_group(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124maxes\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 3074\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstale \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\matplotlib\\image.py:132\u001b[0m, in \u001b[0;36m_draw_list_compositing_images\u001b[1;34m(renderer, parent, artists, suppress_composite)\u001b[0m\n\u001b[0;32m 130\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m not_composite \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m has_images:\n\u001b[0;32m 131\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m a \u001b[38;5;129;01min\u001b[39;00m artists:\n\u001b[1;32m--> 132\u001b[0m \u001b[43ma\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdraw\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 133\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 134\u001b[0m \u001b[38;5;66;03m# Composite any adjacent images together\u001b[39;00m\n\u001b[0;32m 135\u001b[0m image_group \u001b[38;5;241m=\u001b[39m []\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\matplotlib\\artist.py:72\u001b[0m, in \u001b[0;36mallow_rasterization.<locals>.draw_wrapper\u001b[1;34m(artist, renderer)\u001b[0m\n\u001b[0;32m 69\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m artist\u001b[38;5;241m.\u001b[39mget_agg_filter() \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 70\u001b[0m renderer\u001b[38;5;241m.\u001b[39mstart_filter()\n\u001b[1;32m---> 72\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mdraw\u001b[49m\u001b[43m(\u001b[49m\u001b[43martist\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 73\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m 74\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m artist\u001b[38;5;241m.\u001b[39mget_agg_filter() \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\matplotlib\\lines.py:801\u001b[0m, in \u001b[0;36mLine2D.draw\u001b[1;34m(self, renderer)\u001b[0m\n\u001b[0;32m 798\u001b[0m gc\u001b[38;5;241m.\u001b[39mset_foreground(lc_rgba, isRGBA\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[0;32m 800\u001b[0m gc\u001b[38;5;241m.\u001b[39mset_dashes(\u001b[38;5;241m*\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_dash_pattern)\n\u001b[1;32m--> 801\u001b[0m \u001b[43mrenderer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdraw_path\u001b[49m\u001b[43m(\u001b[49m\u001b[43mgc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtpath\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maffine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrozen\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 802\u001b[0m gc\u001b[38;5;241m.\u001b[39mrestore()\n\u001b[0;32m 804\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_marker \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_markersize \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m:\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\matplotlib\\backends\\backend_agg.py:117\u001b[0m, in \u001b[0;36mRendererAgg.draw_path\u001b[1;34m(self, gc, path, transform, rgbFace)\u001b[0m\n\u001b[0;32m 115\u001b[0m p\u001b[38;5;241m.\u001b[39msimplify_threshold \u001b[38;5;241m=\u001b[39m path\u001b[38;5;241m.\u001b[39msimplify_threshold\n\u001b[0;32m 116\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 117\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_renderer\u001b[38;5;241m.\u001b[39mdraw_path(gc, p, transform, rgbFace)\n\u001b[0;32m 118\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mOverflowError\u001b[39;00m:\n\u001b[0;32m 119\u001b[0m msg \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 120\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mExceeded cell block limit in Agg.\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 121\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPlease reduce the value of \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 127\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpath\u001b[38;5;241m.\u001b[39msimplify_threshold\u001b[38;5;132;01m:\u001b[39;00m\u001b[38;5;124m.2f\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m on the input).\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 128\u001b[0m )\n",
"\u001b[1;31mKeyboardInterrupt\u001b[0m: "
]
}
],
"source": [
"size = (256,256)\n",
"if not os.path.exists(path_to_pictures):\n",
" os.mkdir(path_to_pictures)\n",
"for subdir in os.listdir(path_to_binaries):\n",
" filepath = path_to_binaries + '/' + subdir + '/'\n",
" if not os.path.exists(path_to_pictures +'/' + subdir):\n",
" os.mkdir(path_to_pictures + '/' + subdir)\n",
" files = os.listdir(filepath)\n",
" for file in tqdm(files):\n",
" savepath = path_to_pictures +'/' + subdir + '/' + file + '.npy'\n",
" savepath_real_png = path_to_pictures +'/' + subdir + '/' + file + '_real' + '.png' \n",
" savepath_imag_png = path_to_pictures +'/' + subdir + '/' + file + '_imag' + '.png' \n",
" savepath_spec_png = path_to_pictures +'/' + subdir + '/' + file + '_spec' + '.png'\n",
" if not os.path.exists(savepath):\n",
" img = sig2pic_with_spec(path_to_data=filepath, filename=file, specT=s, resize = size)\n",
" gc.collect()\n",
" try:\n",
" \n",
" plt.imshow(img[0])\n",
" plt.savefig(savepath_real_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" plt.imshow(img[1])\n",
" plt.savefig(savepath_imag_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
"\n",
" plt.imshow(img[2])\n",
" plt.savefig(savepath_spec_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" np.save(savepath, img)\n",
" \n",
" except Exception:\n",
" continue\n",
" print('Dir: ', subdir , ' finished!')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "58ff5fbd",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "9f9ad366",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv-train",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

@ -2,7 +2,7 @@
"cells": [ "cells": [
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 2, "execution_count": 3,
"id": "4fdb98fc-65bb-467e-be0c-168fee9b0fca", "id": "4fdb98fc-65bb-467e-be0c-168fee9b0fca",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
@ -16,10 +16,10 @@
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"<contextlib.ExitStack at 0x7d183e4bd220>" "<contextlib.ExitStack at 0x76adb5fa4260>"
] ]
}, },
"execution_count": 2, "execution_count": 3,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
@ -64,7 +64,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 3, "execution_count": 4,
"id": "4848b066-2e09-4c1c-b8fa-8e3fa84d907a", "id": "4848b066-2e09-4c1c-b8fa-8e3fa84d907a",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -74,7 +74,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 4, "execution_count": 5,
"id": "9267fbe1", "id": "9267fbe1",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -147,20 +147,20 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 12, "execution_count": null,
"id": "448da74a-e0ae-44d8-9877-8dd1f257a24f", "id": "448da74a-e0ae-44d8-9877-8dd1f257a24f",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"selected_freq=750\n", "selected_freq=915\n",
"\n", "\n",
"path_to_binaries = f'/mnt/nvme1/dataset/{selected_freq}'\n", "path_to_binaries = f'/home/sibsci/dataset/drone/{selected_freq}'\n",
"path_to_pictures = f'/mnt/nvme1/dataset_img/noise/{selected_freq}_jpg'" "path_to_pictures = f'/home/sibsci/dataset_img/drone/{selected_freq}_jpg'"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 6, "execution_count": 7,
"id": "ac4945a8-29c4-4da4-945f-08658953e3e5", "id": "ac4945a8-29c4-4da4-945f-08658953e3e5",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -170,7 +170,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 13, "execution_count": 8,
"id": "6f226f86-5d72-4573-8af6-750128b70263", "id": "6f226f86-5d72-4573-8af6-750128b70263",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
@ -178,287 +178,14 @@
"name": "stderr", "name": "stderr",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"2026-03-25_16-59-25: 0%| | 0/40 [00:00<?, ?it/s]" "2026-04-06_11-37-43: 100%|██████████| 42/42 [00:11<00:00, 3.55it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-25_16-59-25: 100%|██████████| 40/40 [00:47<00:00, 1.18s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-25_16-59-25 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-26_02-59-25: 100%|██████████| 40/40 [00:47<00:00, 1.18s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-26_02-59-25 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-25_14-59-25: 100%|██████████| 40/40 [00:35<00:00, 1.11it/s]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-25_14-59-25 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-26_04-59-26: 100%|██████████| 40/40 [00:49<00:00, 1.23s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-26_04-59-26 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-25_17-59-26: 100%|██████████| 40/40 [00:44<00:00, 1.12s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-25_17-59-26 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-25_20-59-26: 100%|██████████| 40/40 [00:47<00:00, 1.20s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-25_20-59-26 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-25_22-59-25: 100%|██████████| 40/40 [00:45<00:00, 1.13s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-25_22-59-25 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-25_14-56-12: 100%|██████████| 25/25 [00:22<00:00, 1.12it/s]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-25_14-56-12 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-26_00-59-27: 100%|██████████| 40/40 [00:46<00:00, 1.16s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-26_00-59-27 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-25_19-59-25: 100%|██████████| 40/40 [00:44<00:00, 1.11s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-25_19-59-25 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-26_05-59-25: 100%|██████████| 40/40 [00:48<00:00, 1.20s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-26_05-59-25 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-26_08-59-25: 100%|██████████| 40/40 [00:47<00:00, 1.18s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-26_08-59-25 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-26_07-59-25: 100%|██████████| 40/40 [00:46<00:00, 1.16s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-26_07-59-25 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-26_06-59-26: 100%|██████████| 40/40 [00:48<00:00, 1.20s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-26_06-59-26 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-26_01-59-26: 100%|██████████| 40/40 [00:47<00:00, 1.20s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-26_01-59-26 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-25_15-59-26: 100%|██████████| 40/40 [00:45<00:00, 1.14s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-25_15-59-26 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-25_23-59-26: 100%|██████████| 40/40 [00:48<00:00, 1.20s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-25_23-59-26 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-25_21-59-26: 100%|██████████| 40/40 [00:46<00:00, 1.17s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-25_21-59-26 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-25_18-59-25: 100%|██████████| 40/40 [00:47<00:00, 1.19s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: 2026-03-25_18-59-25 finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2026-03-26_03-59-26: 100%|██████████| 40/40 [00:47<00:00, 1.19s/it]"
] ]
}, },
{ {
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"Dir: 2026-03-26_03-59-26 finished!\n" "Dir: 2026-04-06_11-37-43 finished!\n"
] ]
}, },
{ {
@ -473,7 +200,7 @@
"size = (256,256)\n", "size = (256,256)\n",
"\n", "\n",
"if not os.path.exists(path_to_pictures):\n", "if not os.path.exists(path_to_pictures):\n",
" os.mkdir(path_to_pictures)\n", " os.makedirs(path_to_pictures,exist_ok=True)\n",
"\n", "\n",
"for subdir in os.listdir(path_to_binaries):\n", "for subdir in os.listdir(path_to_binaries):\n",
" filepath = path_to_binaries + '/' + subdir + '/'\n", " filepath = path_to_binaries + '/' + subdir + '/'\n",
@ -542,7 +269,7 @@
], ],
"metadata": { "metadata": {
"kernelspec": { "kernelspec": {
"display_name": ".venv-train (3.12.3)", "display_name": ".venv-train",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },

@ -1,222 +0,0 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4fdb98fc-65bb-467e-be0c-168fee9b0fca",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cuda:0\n"
]
},
{
"data": {
"text/plain": [
"<contextlib.ExitStack at 0x249d580ff50>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import time\n",
"import io\n",
"import cv2\n",
"import copy\n",
"import os\n",
"from tqdm import tqdm\n",
"import torch.nn as nn\n",
"import torch\n",
"import torchvision\n",
"from torch.utils.data import Dataset\n",
"from torch import default_generator, randperm\n",
"from PIL import Image\n",
"#from torch._utils import _accumulate\n",
"import csv\n",
"from torch.utils.data.dataset import Subset\n",
"from scipy import ndimage\n",
"device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
"print(device)\n",
"batch_size = 16\n",
"momentum=0.9\n",
"lr = 1e-3\n",
"import random\n",
"sub_sample = 0.5\n",
"import matplotlib\n",
"import gc\n",
"matplotlib.use('Agg')\n",
"import matplotlib as mpl\n",
"mpl.rcParams['agg.path.chunksize'] = 256*256\n",
"plt.ioff()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "9267fbe1",
"metadata": {},
"outputs": [],
"source": [
"def sig2pic_with_spec(path_to_data, filename, figsize=(16,16), dpi=16, resize = None):\n",
" try:\n",
" array = np.load(path_to_data+filename)\n",
"\n",
" if resize != None:\n",
" resized_real = cv2.resize(array[0], resize)\n",
" resized_mag = cv2.resize(array[1], resize)\n",
" resized_spectr = cv2.resize(array[2], resize)\n",
" img = np.asarray(array, dtype=np.float32)\n",
" return img\n",
" \n",
" img = np.asarray(array, dtype=np.float32)\n",
" return img\n",
" \n",
" except Exception as e:\n",
" print(str(e))\n",
" return None"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "448da74a-e0ae-44d8-9877-8dd1f257a24f",
"metadata": {},
"outputs": [],
"source": [
"path_to_binaries = 'C:/Users/snytk/Lerning_NN_for_work/datasets/2.4_learning'\n",
"path_to_pictures = 'C:/Users/snytk/Lerning_NN_for_work/datasets_jpg/2.4_jpg_learning'"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "ac4945a8-29c4-4da4-945f-08658953e3e5",
"metadata": {},
"outputs": [],
"source": [
"from tqdm import tqdm"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "6f226f86-5d72-4573-8af6-750128b70263",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|████████████████████████████████████████████████████████████████████████████| 8751/8751 [1:01:54<00:00, 2.36it/s]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: drone finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████████████████████████████████████████████████████████████████████| 11202/11202 [1:19:30<00:00, 2.35it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: noise finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"size = (256,256)\n",
"if not os.path.exists(path_to_pictures):\n",
" os.mkdir(path_to_pictures)\n",
"for subdir in os.listdir(path_to_binaries):\n",
" filepath = path_to_binaries + '/' + subdir + '/'\n",
" if not os.path.exists(path_to_pictures +'/' + subdir):\n",
" os.mkdir(path_to_pictures + '/' + subdir)\n",
" files = os.listdir(filepath)\n",
" for file in tqdm(files):\n",
" savepath_real_png = path_to_pictures +'/' + subdir + '/' + file + '_real' + '.jpg' \n",
" savepath_imag_png = path_to_pictures +'/' + subdir + '/' + file + '_imag' + '.jpg' \n",
" savepath_spec_png = path_to_pictures +'/' + subdir + '/' + file + '_spec' + '.jpg'\n",
" if not os.path.exists(savepath_real_png):\n",
" img = sig2pic_with_spec(path_to_data=filepath, filename=file, resize = size)\n",
" gc.collect()\n",
" \n",
" try:\n",
" plt.imshow(img[0])\n",
" plt.savefig(savepath_real_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" plt.imshow(img[1])\n",
" plt.savefig(savepath_imag_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
"\n",
" plt.imshow(img[2])\n",
" plt.savefig(savepath_spec_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" except Exception:\n",
" continue\n",
" print('Dir: ', subdir , ' finished!')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cfbd309d",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

@ -1,360 +0,0 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4fdb98fc-65bb-467e-be0c-168fee9b0fca",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cuda:0\n"
]
},
{
"data": {
"text/plain": [
"<contextlib.ExitStack at 0x20af0408250>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import time\n",
"import io\n",
"import cv2\n",
"import copy\n",
"import os\n",
"from tqdm import tqdm\n",
"import torch.nn as nn\n",
"import torch\n",
"import torchvision\n",
"from torch.utils.data import Dataset\n",
"from torch import default_generator, randperm\n",
"from PIL import Image\n",
"#from torch._utils import _accumulate\n",
"import csv\n",
"from torch.utils.data.dataset import Subset\n",
"from scipy import ndimage\n",
"device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
"print(device)\n",
"batch_size = 16\n",
"momentum=0.9\n",
"lr = 1e-3\n",
"import random\n",
"sub_sample = 0.5\n",
"import matplotlib\n",
"import gc\n",
"matplotlib.use('Agg')\n",
"import matplotlib as mpl\n",
"mpl.rcParams['agg.path.chunksize'] = 256*256\n",
"plt.ioff()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "9267fbe1",
"metadata": {},
"outputs": [],
"source": [
"def sig2pic_with_spec(path_to_data, filename, figsize=(16,16), dpi=16, resize = None):\n",
" try:\n",
" array = np.load(path_to_data+filename)\n",
"\n",
" if resize != None:\n",
" resized_real = cv2.resize(array[0], resize)\n",
" resized_mag = cv2.resize(array[1], resize)\n",
" resized_spectr = cv2.resize(array[2], resize)\n",
" img = np.asarray(array, dtype=np.float32)\n",
" return img\n",
" \n",
" img = np.asarray(array, dtype=np.float32)\n",
" return img\n",
" \n",
" except Exception as e:\n",
" print(str(e))\n",
" return None\n",
" \n",
" \n",
" \n",
"\n",
"def pre_func_ensemble(data=None, src ='', ind_inference=0):\n",
" try:\n",
" import matplotlib.pyplot as plt\n",
" matplotlib.use('Agg')\n",
" plt.ioff()\n",
"\n",
" figsize = (16, 16)\n",
" dpi = 16\n",
"\n",
" signal = np.vectorize(complex)(data[0], data[1])\n",
" #np.save(src + '_inference_2400_' + str(ind_inference) + '.npy', signal)\n",
" spec = transform.Spectrogram(nperseg=256)\n",
" spectr = np.array(spec(signal)[:,:figsize[0] * dpi])\n",
" fig1 = plt.figure(figsize = figsize)\n",
" plt.axes(ylim=(-1, 1))\n",
" sigr = signal.real\n",
" sigi = signal.imag\n",
" \n",
" plt.plot(sigr, color='black')\n",
" plt.gca().set_axis_off()\n",
" plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0)\n",
" plt.margins(0,0)\n",
" buf1 = io.BytesIO()\n",
" fig1.savefig(buf1, format=\"png\", dpi=dpi)\n",
" buf1.seek(0)\n",
" img_arr1 = np.frombuffer(buf1.getvalue(), dtype=np.uint8)\n",
" buf1.close()\n",
" img1 = cv2.imdecode(img_arr1, 1)\n",
" img1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" plt.close(fig1)\n",
"\n",
" fig2 = plt.figure(figsize = figsize)\n",
" plt.axes(ylim=(-1, 1))\n",
" sigr = signal.real\n",
" sigi = signal.imag\n",
" \n",
" plt.plot(sigi, color='black')\n",
" plt.gca().set_axis_off()\n",
" plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0)\n",
" plt.margins(0,0)\n",
" buf = io.BytesIO()\n",
" fig2.savefig(buf, format=\"png\", dpi=dpi)\n",
" buf.seek(0)\n",
" img_arr = np.frombuffer(buf.getvalue(), dtype=np.uint8)\n",
" buf.close()\n",
" img = cv2.imdecode(img_arr, 1)\n",
" img2 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" plt.close(fig2)\n",
"\n",
" img = np.array([img1, img2, spectr])\n",
" \n",
" cv2.destroyAllWindows()\n",
" del signal\n",
" del spec\n",
" del spectr\n",
" del img1\n",
" del img2\n",
" del sigr\n",
" del sigi\n",
" del buf\n",
" del buf1\n",
" del img_arr\n",
" del img_arr1\n",
" cv2.destroyAllWindows()\n",
" gc.collect()\n",
"\n",
" print('Подготовка данных завершена')\n",
" print()\n",
" return img\n",
"\n",
" except Exception as e:\n",
" print(str(e))\n",
" return None\n",
"\n",
"\n",
"def build_func_ensemble(file_model='', file_config='', num_classes=None):\n",
" try:\n",
" import matplotlib.pyplot as plt\n",
" matplotlib.use('Agg')\n",
" plt.ioff()\n",
" torch.cuda.empty_cache()\n",
" model1 = models.resnet18(pretrained=False)\n",
" model2 = models.resnet50(pretrained=False)\n",
" model3 = models.resnet101(pretrained=False)\n",
"\n",
" num_classes = 2\n",
"\n",
" model1.fc = nn.Linear(model1.fc.in_features, num_classes)\n",
" model2.fc = nn.Linear(model2.fc.in_features, num_classes)\n",
" model3.fc = nn.Linear(model3.fc.in_features, num_classes)\n",
"\n",
" class Ensemble(nn.Module):\n",
" def __init__(self, model1, model2, model3):\n",
" super(Ensemble, self).__init__()\n",
" self.model1 = model1\n",
" self.model2 = model2\n",
" self.model3 = model3\n",
" self.fc = nn.Linear(3 * num_classes, num_classes)\n",
"\n",
" def forward(self, x):\n",
" x1 = self.model1(x)\n",
" x2 = self.model2(x)\n",
" x3 = self.model3(x)\n",
" x = torch.cat((x1, x2, x3), dim=1)\n",
" x = self.fc(x)\n",
" return x\n",
"\n",
" model = Ensemble(model1, model2, model3)\n",
"\n",
" device = 'cuda' if torch.cuda.is_available() else 'cpu'\n",
" if device != 'cpu':\n",
" model = model.to(device)\n",
" model.load_state_dict(torch.load(file_model, map_location=device))\n",
" model.eval()\n",
"\n",
" cv2.destroyAllWindows()\n",
" del model1\n",
" del model2\n",
" del model3\n",
" gc.collect()\n",
"\n",
" print('Инициализация модели завершена')\n",
" print()\n",
" return model\n",
"\n",
" except Exception as exc:\n",
" print(str(exc))\n",
" return None\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "448da74a-e0ae-44d8-9877-8dd1f257a24f",
"metadata": {},
"outputs": [],
"source": [
"path_to_binaries = 'C:/Users/snytk/Lerning_NN_for_work/datasets/1.2_learning'\n",
"path_to_pictures = 'C:/Users/snytk/Lerning_NN_for_work/datasets_jpg/1.2_jpg_learning'"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "ac4945a8-29c4-4da4-945f-08658953e3e5",
"metadata": {},
"outputs": [],
"source": [
"from tqdm import tqdm"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "6f226f86-5d72-4573-8af6-750128b70263",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|████████████████████████████████████████████████████████████████████████████████| 963/963 [06:36<00:00, 2.43it/s]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: drone finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████████████████████████████████████████████████████████████████████████| 1724/1724 [11:41<00:00, 2.46it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: noise finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"size = (256,256)\n",
"if not os.path.exists(path_to_pictures):\n",
" os.mkdir(path_to_pictures)\n",
"for subdir in os.listdir(path_to_binaries):\n",
" filepath = path_to_binaries + '/' + subdir + '/'\n",
" if not os.path.exists(path_to_pictures +'/' + subdir):\n",
" os.mkdir(path_to_pictures + '/' + subdir)\n",
" files = os.listdir(filepath)\n",
" for file in tqdm(files):\n",
" savepath_real_png = path_to_pictures +'/' + subdir + '/' + file + '_real' + '.jpg' \n",
" savepath_imag_png = path_to_pictures +'/' + subdir + '/' + file + '_imag' + '.jpg' \n",
" savepath_spec_png = path_to_pictures +'/' + subdir + '/' + file + '_spec' + '.jpg'\n",
" if not os.path.exists(savepath_real_png):\n",
" img = sig2pic_with_spec(path_to_data=filepath, filename=file, resize = size)\n",
" gc.collect()\n",
" \n",
" try:\n",
" plt.imshow(img[0])\n",
" plt.savefig(savepath_real_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" plt.imshow(img[1])\n",
" plt.savefig(savepath_imag_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
"\n",
" plt.imshow(img[2])\n",
" plt.savefig(savepath_spec_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" except Exception:\n",
" continue\n",
" print('Dir: ', subdir , ' finished!')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "871d7ab6",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

@ -1,194 +0,0 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4fdb98fc-65bb-467e-be0c-168fee9b0fca",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cuda:0\n"
]
},
{
"data": {
"text/plain": [
"<contextlib.ExitStack at 0x249d580ff50>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import time\n",
"import io\n",
"import cv2\n",
"import copy\n",
"import os\n",
"from tqdm import tqdm\n",
"import torch.nn as nn\n",
"import torch\n",
"import torchvision\n",
"from torch.utils.data import Dataset\n",
"from torch import default_generator, randperm\n",
"from PIL import Image\n",
"#from torch._utils import _accumulate\n",
"import csv\n",
"from torch.utils.data.dataset import Subset\n",
"from scipy import ndimage\n",
"device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
"print(device)\n",
"batch_size = 16\n",
"momentum=0.9\n",
"lr = 1e-3\n",
"import random\n",
"sub_sample = 0.5\n",
"import matplotlib\n",
"import gc\n",
"matplotlib.use('Agg')\n",
"import matplotlib as mpl\n",
"mpl.rcParams['agg.path.chunksize'] = 256*256\n",
"plt.ioff()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "9267fbe1",
"metadata": {},
"outputs": [],
"source": [
"def sig2pic_with_spec(path_to_data, filename, figsize=(16,16), dpi=16, resize = None):\n",
" try:\n",
" array = np.load(path_to_data+filename)\n",
"\n",
" if resize != None:\n",
" resized_real = cv2.resize(array[0], resize)\n",
" resized_mag = cv2.resize(array[1], resize)\n",
" resized_spectr = cv2.resize(array[2], resize)\n",
" img = np.asarray(array, dtype=np.float32)\n",
" return img\n",
" \n",
" img = np.asarray(array, dtype=np.float32)\n",
" return img\n",
" \n",
" except Exception as e:\n",
" print(str(e))\n",
" return None"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "448da74a-e0ae-44d8-9877-8dd1f257a24f",
"metadata": {},
"outputs": [],
"source": [
"path_to_binaries = 'C:/Users/snytk/Lerning_NN_for_work/datasets/2.4_learning'\n",
"path_to_pictures = 'C:/Users/snytk/Lerning_NN_for_work/datasets_jpg/2.4_jpg_learning'"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "ac4945a8-29c4-4da4-945f-08658953e3e5",
"metadata": {},
"outputs": [],
"source": [
"from tqdm import tqdm"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6f226f86-5d72-4573-8af6-750128b70263",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
" 2%|█▍ | 158/8751 [01:06<1:01:14, 2.34it/s]"
]
}
],
"source": [
"size = (256,256)\n",
"if not os.path.exists(path_to_pictures):\n",
" os.mkdir(path_to_pictures)\n",
"for subdir in os.listdir(path_to_binaries):\n",
" filepath = path_to_binaries + '/' + subdir + '/'\n",
" if not os.path.exists(path_to_pictures +'/' + subdir):\n",
" os.mkdir(path_to_pictures + '/' + subdir)\n",
" files = os.listdir(filepath)\n",
" for file in tqdm(files):\n",
" savepath_real_png = path_to_pictures +'/' + subdir + '/' + file + '_real' + '.jpg' \n",
" savepath_imag_png = path_to_pictures +'/' + subdir + '/' + file + '_imag' + '.jpg' \n",
" savepath_spec_png = path_to_pictures +'/' + subdir + '/' + file + '_spec' + '.jpg'\n",
" if not os.path.exists(savepath_real_png):\n",
" img = sig2pic_with_spec(path_to_data=filepath, filename=file, resize = size)\n",
" gc.collect()\n",
" \n",
" try:\n",
" plt.imshow(img[0])\n",
" plt.savefig(savepath_real_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" plt.imshow(img[1])\n",
" plt.savefig(savepath_imag_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
"\n",
" plt.imshow(img[2])\n",
" plt.savefig(savepath_spec_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" except Exception:\n",
" continue\n",
" print('Dir: ', subdir , ' finished!')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "871d7ab6",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

@ -1,194 +0,0 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4fdb98fc-65bb-467e-be0c-168fee9b0fca",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cuda:0\n"
]
},
{
"data": {
"text/plain": [
"<contextlib.ExitStack at 0x249d580ff50>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import time\n",
"import io\n",
"import cv2\n",
"import copy\n",
"import os\n",
"from tqdm import tqdm\n",
"import torch.nn as nn\n",
"import torch\n",
"import torchvision\n",
"from torch.utils.data import Dataset\n",
"from torch import default_generator, randperm\n",
"from PIL import Image\n",
"#from torch._utils import _accumulate\n",
"import csv\n",
"from torch.utils.data.dataset import Subset\n",
"from scipy import ndimage\n",
"device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
"print(device)\n",
"batch_size = 16\n",
"momentum=0.9\n",
"lr = 1e-3\n",
"import random\n",
"sub_sample = 0.5\n",
"import matplotlib\n",
"import gc\n",
"matplotlib.use('Agg')\n",
"import matplotlib as mpl\n",
"mpl.rcParams['agg.path.chunksize'] = 256*256\n",
"plt.ioff()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "9267fbe1",
"metadata": {},
"outputs": [],
"source": [
"def sig2pic_with_spec(path_to_data, filename, figsize=(16,16), dpi=16, resize = None):\n",
" try:\n",
" array = np.load(path_to_data+filename)\n",
"\n",
" if resize != None:\n",
" resized_real = cv2.resize(array[0], resize)\n",
" resized_mag = cv2.resize(array[1], resize)\n",
" resized_spectr = cv2.resize(array[2], resize)\n",
" img = np.asarray(array, dtype=np.float32)\n",
" return img\n",
" \n",
" img = np.asarray(array, dtype=np.float32)\n",
" return img\n",
" \n",
" except Exception as e:\n",
" print(str(e))\n",
" return None"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "448da74a-e0ae-44d8-9877-8dd1f257a24f",
"metadata": {},
"outputs": [],
"source": [
"path_to_binaries = 'C:/Users/snytk/Lerning_NN_for_work/datasets/2.4_learning'\n",
"path_to_pictures = 'C:/Users/snytk/Lerning_NN_for_work/datasets_jpg/2.4_jpg_learning'"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "ac4945a8-29c4-4da4-945f-08658953e3e5",
"metadata": {},
"outputs": [],
"source": [
"from tqdm import tqdm"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6f226f86-5d72-4573-8af6-750128b70263",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
" 2%|█▍ | 158/8751 [01:06<1:01:14, 2.34it/s]"
]
}
],
"source": [
"size = (256,256)\n",
"if not os.path.exists(path_to_pictures):\n",
" os.mkdir(path_to_pictures)\n",
"for subdir in os.listdir(path_to_binaries):\n",
" filepath = path_to_binaries + '/' + subdir + '/'\n",
" if not os.path.exists(path_to_pictures +'/' + subdir):\n",
" os.mkdir(path_to_pictures + '/' + subdir)\n",
" files = os.listdir(filepath)\n",
" for file in tqdm(files):\n",
" savepath_real_png = path_to_pictures +'/' + subdir + '/' + file + '_real' + '.jpg' \n",
" savepath_imag_png = path_to_pictures +'/' + subdir + '/' + file + '_imag' + '.jpg' \n",
" savepath_spec_png = path_to_pictures +'/' + subdir + '/' + file + '_spec' + '.jpg'\n",
" if not os.path.exists(savepath_real_png):\n",
" img = sig2pic_with_spec(path_to_data=filepath, filename=file, resize = size)\n",
" gc.collect()\n",
" \n",
" try:\n",
" plt.imshow(img[0])\n",
" plt.savefig(savepath_real_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" plt.imshow(img[1])\n",
" plt.savefig(savepath_imag_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
"\n",
" plt.imshow(img[2])\n",
" plt.savefig(savepath_spec_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" except Exception:\n",
" continue\n",
" print('Dir: ', subdir , ' finished!')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "871d7ab6",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

@ -1,236 +0,0 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4fdb98fc-65bb-467e-be0c-168fee9b0fca",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cuda:0\n",
"['Solarize_Light2', '_classic_test_patch', '_mpl-gallery', '_mpl-gallery-nogrid', 'bmh', 'classic', 'dark_background', 'fast', 'fivethirtyeight', 'ggplot', 'grayscale', 'seaborn-v0_8', 'seaborn-v0_8-bright', 'seaborn-v0_8-colorblind', 'seaborn-v0_8-dark', 'seaborn-v0_8-dark-palette', 'seaborn-v0_8-darkgrid', 'seaborn-v0_8-deep', 'seaborn-v0_8-muted', 'seaborn-v0_8-notebook', 'seaborn-v0_8-paper', 'seaborn-v0_8-pastel', 'seaborn-v0_8-poster', 'seaborn-v0_8-talk', 'seaborn-v0_8-ticks', 'seaborn-v0_8-white', 'seaborn-v0_8-whitegrid', 'tableau-colorblind10']\n"
]
},
{
"data": {
"text/plain": [
"<contextlib.ExitStack at 0x27e4cbae550>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import time\n",
"import io\n",
"import cv2\n",
"import copy\n",
"import os\n",
"from tqdm import tqdm\n",
"import torch.nn as nn\n",
"import torch\n",
"import torchvision\n",
"from torch.utils.data import Dataset\n",
"from torch import default_generator, randperm\n",
"from PIL import Image\n",
"#from torch._utils import _accumulate\n",
"import csv\n",
"from torch.utils.data.dataset import Subset\n",
"from scipy import ndimage\n",
"device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
"print(device)\n",
"batch_size = 16\n",
"momentum=0.9\n",
"lr = 1e-3\n",
"import random\n",
"sub_sample = 0.5\n",
"import matplotlib\n",
"import gc\n",
"matplotlib.use('Agg')\n",
"import matplotlib as mpl\n",
"mpl.rcParams['agg.path.chunksize'] = 256*256\n",
"#plt.style.use('mplstyle')\n",
"plt.style.use('ggplot')\n",
"plt.grid(None)\n",
"plt.rcParams[\"axes.grid\"] = False\n",
"print(plt.style.available)\n",
"plt.ioff()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "9267fbe1",
"metadata": {},
"outputs": [],
"source": [
"def sig2pic_with_spec(path_to_data, filename, figsize=(16,16), dpi=16, resize = None):\n",
" try:\n",
" array = np.load(path_to_data+filename)\n",
"\n",
" if resize != None:\n",
" resized_real = cv2.resize(array[0], resize)\n",
" resized_mag = cv2.resize(array[1], resize)\n",
" resized_spectr = cv2.resize(array[2], resize)\n",
" img = np.asarray(array, dtype=np.float32)\n",
" return img\n",
" \n",
" img = np.asarray(array, dtype=np.float32)\n",
" return img\n",
" \n",
" except Exception as e:\n",
" print(str(e))\n",
" return None"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "448da74a-e0ae-44d8-9877-8dd1f257a24f",
"metadata": {},
"outputs": [],
"source": [
"path_to_binaries = 'C:/Users/snytk/Lerning_NN_for_work/datasets/915_learning'\n",
"path_to_pictures = 'C:/Users/snytk/Lerning_NN_for_work/datasets_jpg/915_jpg_learning'"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "ac4945a8-29c4-4da4-945f-08658953e3e5",
"metadata": {},
"outputs": [],
"source": [
"from tqdm import tqdm"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "6f226f86-5d72-4573-8af6-750128b70263",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|████████████████████████████████████████████████████████████████████████████████| 856/856 [10:50<00:00, 1.32it/s]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: drone finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|████████████████████████████████████████████████████████████████████████████████| 627/627 [08:40<00:00, 1.20it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dir: noise finished!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"size = (256,256)\n",
"if not os.path.exists(path_to_pictures):\n",
" os.mkdir(path_to_pictures)\n",
"for subdir in os.listdir(path_to_binaries):\n",
" filepath = path_to_binaries + '/' + subdir + '/'\n",
" if not os.path.exists(path_to_pictures +'/' + subdir):\n",
" os.mkdir(path_to_pictures + '/' + subdir)\n",
" files = os.listdir(filepath)\n",
" for file in tqdm(files):\n",
" savepath_real_png = path_to_pictures +'/' + subdir + '/' + file + '_real' + '.jpg' \n",
" savepath_imag_png = path_to_pictures +'/' + subdir + '/' + file + '_imag' + '.jpg' \n",
" savepath_spec_png = path_to_pictures +'/' + subdir + '/' + file + '_spec' + '.jpg'\n",
" if not os.path.exists(savepath_real_png):\n",
" img = sig2pic_with_spec(path_to_data=filepath, filename=file, resize = size)\n",
" gc.collect()\n",
" \n",
" try:\n",
" plt.imshow(img[0])\n",
" plt.savefig(savepath_real_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" plt.imshow(img[1])\n",
" plt.savefig(savepath_imag_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
"\n",
" plt.imshow(img[2])\n",
" plt.savefig(savepath_spec_png)\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" except Exception:\n",
" continue\n",
" print('Dir: ', subdir , ' finished!')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "871d7ab6",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "e080bb07",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

@ -1,7 +0,0 @@
Для ящика на выставки:
aleksandr@192.168.3.85 19751975
aleksandr@192.168.3.86 19751975
Для ящика на Липецк:
aleksandr@192.168.3.85 19751975
aleksandr@192.168.3.86 19751975

@ -1,55 +0,0 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "a89c0273",
"metadata": {},
"outputs": [],
"source": [
"import torch\n",
"import torchvision\n",
"\n",
"def convert_pth_to_pt(pth_path, pt_path, model_class):\n",
" state_dict = torch.load(pth_path)\n",
" model = model_class()\n",
" model.load_state_dict(state_dict)\n",
" torch.save(model, pt_path)\n",
" print(f'Model saved to {pt_path}')\n",
"\n",
"class ModelClass(torch.nn.Module):\n",
" def __init__(self):\n",
" super(ModelClass, self).__init__()\n",
"\n",
" def forward(self, x):\n",
" pass\n",
"\n",
"pth_path = 'model.pth'\n",
"pt_path = 'model.pt'\n",
"\n",
"convert_pth_to_pt(pth_path, pt_path, ModelClass)\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

File diff suppressed because one or more lines are too long

@ -1,463 +0,0 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "5a13ad6b-56c9-4381-b376-1765f6dd7553",
"metadata": {
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Импортирование библиотек"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "7311cb4a-5bf3-4268-b431-43eea10e9ed6",
"metadata": {
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cuda\n"
]
},
{
"ename": "error",
"evalue": "OpenCV(4.10.0) D:\\a\\opencv-python\\opencv-python\\opencv\\modules\\highgui\\src\\window.cpp:1295: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvDestroyAllWindows'\n",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31merror\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[1], line 37\u001b[0m\n\u001b[0;32m 35\u001b[0m \u001b[38;5;28mprint\u001b[39m(device)\n\u001b[0;32m 36\u001b[0m torch\u001b[38;5;241m.\u001b[39mcuda\u001b[38;5;241m.\u001b[39mempty_cache()\n\u001b[1;32m---> 37\u001b[0m \u001b[43mcv2\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdestroyAllWindows\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 38\u001b[0m gc\u001b[38;5;241m.\u001b[39mcollect()\n",
"\u001b[1;31merror\u001b[0m: OpenCV(4.10.0) D:\\a\\opencv-python\\opencv-python\\opencv\\modules\\highgui\\src\\window.cpp:1295: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvDestroyAllWindows'\n"
]
}
],
"source": [
"from sklearn.model_selection import train_test_split\n",
"from torch.utils.data import Dataset, DataLoader\n",
"from torch import default_generator, randperm\n",
"from torch.utils.data.dataset import Subset\n",
"import torchvision.transforms as transforms\n",
"from torchvision.io import read_image\n",
"from importlib import import_module\n",
"import matplotlib.pyplot as plt\n",
"from torchvision import models\n",
"import torch, torchvision\n",
"from pathlib import Path\n",
"from PIL import Image\n",
"import torch.nn as nn\n",
"from tqdm import tqdm\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib\n",
"import os, shutil\n",
"import mlconfig\n",
"import random\n",
"import shutil\n",
"import timeit\n",
"import copy\n",
"import time\n",
"import cv2\n",
"import csv\n",
"import sys\n",
"import io\n",
"import gc\n",
"\n",
"plt.rcParams[\"savefig.bbox\"] = 'tight'\n",
"torch.manual_seed(1)\n",
"#matplotlib.use('Agg')\n",
"device = 'cuda' if torch.cuda.is_available() else 'cpu'\n",
"print(device)\n",
"torch.cuda.empty_cache()\n",
"cv2.destroyAllWindows()\n",
"gc.collect()"
]
},
{
"cell_type": "markdown",
"id": "384de097-82c6-41f5-bda9-b2f54bc99593",
"metadata": {
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Подготовка и обучение детектирование"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "46e4dc99-6994-4fee-a32e-f3983bd991bd",
"metadata": {},
"outputs": [],
"source": [
"def prepare_and_learning_detection(num_classes, num_samples, path_dataset, model_name, config_name, model):\n",
" num_samples_per_class = num_samples // num_classes\n",
"\n",
" #----------Создаём папку для сохранения результатов обучения--------------\n",
" \n",
" ind = 1\n",
" while True:\n",
" if os.path.exists(\"models/\" + model_name + str(ind)):\n",
" ind += 1\n",
" else:\n",
" os.mkdir(\"models/\" + model_name + str(ind))\n",
" path_res = \"models/\" + model_name + str(ind) + '/'\n",
" break\n",
" \n",
" #----------Создаём файл dataset.csv для обучения--------------\n",
" \n",
" pd_columns = ['file_name']\n",
" df = pd.DataFrame(columns=pd_columns)\n",
" \n",
" subdirs = os.listdir(path_dataset)\n",
" for subdir in subdirs:\n",
" files = os.listdir(path_dataset + subdir + '/')\n",
" num_samples_per_class = min(num_samples_per_class, len(files))\n",
" for subdir in subdirs:\n",
" files = os.listdir(path_dataset + subdir + '/')\n",
" random.shuffle(files)\n",
" files_to_process = files[:num_samples_per_class]\n",
" for file in files_to_process:\n",
" row = pd.DataFrame({pd_columns[0]: [str(path_dataset + subdir + '/' + file)]})\n",
" df = pd.concat([df, row], ignore_index=True)\n",
" \n",
" df.to_csv(path_res + 'dataset.csv', index=False)\n",
" \n",
" #----------Импортируем параметры для обучения--------------\n",
" \n",
" def load_function(attr):\n",
" module_, func = attr.rsplit('.', maxsplit=1)\n",
" return getattr(import_module(module_), func)\n",
" \n",
" config = mlconfig.load('config_' + config_name + '.yaml')\n",
" \n",
" #----------Создаём класс датасета--------------\n",
" \n",
" class MyDataset(Dataset):\n",
" def __init__(self, path_dataset, csv_file):\n",
" data=[]\n",
" with open(path_dataset + csv_file, newline='') as csvfile:\n",
" reader = csv.reader(csvfile, delimiter=' ', quotechar='|')\n",
" for row in list(reader)[1:]:\n",
" row = str(row)\n",
" data.append(row[2: len(row)-2])\n",
" self.sig_filenames = data\n",
" self.path_dataset = path_dataset\n",
" \n",
" def __len__(self):\n",
" return len(self.sig_filenames)\n",
" \n",
" def __getitem__(self, idx):\n",
" data_file = np.asarray(np.load(self.sig_filenames[idx], 'r+'), dtype=np.float32)\n",
" if 'drone' in list(self.sig_filenames[idx].split('/')):\n",
" label = torch.tensor(0)\n",
" if 'noise' in list(self.sig_filenames[idx].split('/')):\n",
" label = torch.tensor(1)\n",
" return data_file, label\n",
" \n",
" #----------Создаём датасет--------------\n",
" \n",
" dataset = MyDataset(path_dataset=path_res, csv_file='dataset.csv')\n",
" train_set, valid_set = torch.utils.data.random_split(dataset, [0.7, 0.3], generator=torch.Generator().manual_seed(42))\n",
" batch_size = config.batch_size\n",
" train_dataloader = torch.utils.data.DataLoader(train_set, batch_size=batch_size, shuffle=True, drop_last=True)\n",
" valid_dataloader = torch.utils.data.DataLoader(valid_set, batch_size=batch_size, shuffle=True, drop_last=True)\n",
" \n",
" dataloaders = {}\n",
" dataloaders['train'] = train_dataloader\n",
" dataloaders['val'] = valid_dataloader\n",
" dataset_sizes = {}\n",
" dataset_sizes['train'] = len(train_set)\n",
" dataset_sizes['val'] = len(valid_set)\n",
"\n",
" #----------Обучаем модель--------------\n",
"\n",
" val_loss = []\n",
" val_acc = []\n",
" train_loss = []\n",
" train_acc = []\n",
" epochs = config.epoch\n",
" \n",
" best_acc = 0.0\n",
" best_model = copy.deepcopy(model.state_dict())\n",
" limit = config.limit\n",
" epoch_limit = epochs\n",
" \n",
" start = timeit.default_timer()\n",
" for epoch in range(1, epochs+1):\n",
" print(f\"Epoch : {epoch}\\n\")\n",
" dataloader = None\n",
" \n",
" for phase in ['train', 'val']:\n",
" running_loss = 0.0\n",
" running_corrects = 0\n",
" \n",
" for (img, label) in tqdm(dataloaders[phase]):\n",
" img, label = img.to(device), label.to(device)\n",
" optimizer.zero_grad()\n",
" \n",
" with torch.set_grad_enabled(phase == 'train'):\n",
" output = model(img)\n",
" _, pred = torch.max(output.data, 1)\n",
" loss = criterion(output, label)\n",
" if phase=='train' :\n",
" loss.backward()\n",
" optimizer.step()\n",
" \n",
" running_loss += loss.item() * img.size(0)\n",
" running_corrects += torch.sum(pred == label.data)\n",
" \n",
" epoch_loss = running_loss / dataset_sizes[phase]\n",
" epoch_acc = running_corrects.double() / dataset_sizes[phase]\n",
" \n",
" print('{} Loss: {:.4f} Acc: {:.4f}'.format(phase, epoch_loss, epoch_acc))\n",
" \n",
" if phase=='train' :\n",
" train_loss.append(epoch_loss)\n",
" train_acc.append(epoch_acc)\n",
" else :\n",
" val_loss.append(epoch_loss)\n",
" val_acc.append(epoch_acc)\n",
" if val_acc[-1] > best_acc :\n",
" ind_limit = 0\n",
" best_acc = val_acc[-1]\n",
" best_model = copy.deepcopy(model.state_dict())\n",
" torch.save(best_model, path_res + model_name + '.pth')\n",
" else:\n",
" ind_limit += 1\n",
" \n",
" if ind_limit >= limit:\n",
" break\n",
" \n",
" if ind_limit >= limit:\n",
" epoch_limit = epoch\n",
" break\n",
" \n",
" print()\n",
" \n",
" end = timeit.default_timer()\n",
" print(f\"Total time elapsed = {end - start} seconds\")\n",
" epoch_limit += 1\n",
" \n",
" #----------Вывод графиков и сохранение результатов обучения--------------\n",
" \n",
" train_acc = np.asarray(list(map(lambda x: x.item(), train_acc)))\n",
" val_acc = np.asarray(list(map(lambda x: x.item(), val_acc)))\n",
" \n",
" np.save(path_res+'train_acc.npy', train_acc)\n",
" np.save(path_res+'val_acc.npy', val_acc)\n",
" np.save(path_res+'train_loss.npy', train_loss)\n",
" np.save(path_res+'val_loss.npy', val_loss)\n",
" \n",
" plt.figure()\n",
" plt.plot(range(1,epoch_limit), train_loss, color='blue')\n",
" plt.plot(range(1,epoch_limit), val_loss, color='red')\n",
" plt.xlabel('Epoch')\n",
" plt.ylabel('Loss')\n",
" plt.title('Loss Curve')\n",
" plt.legend(['Train Loss', 'Validation Loss'])\n",
" plt.show()\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" plt.figure()\n",
" plt.plot(range(1,epoch_limit), train_acc, color='blue')\n",
" plt.plot(range(1,epoch_limit), val_acc, color='red')\n",
" plt.xlabel('Epoch')\n",
" plt.ylabel('Accuracy')\n",
" plt.title('Accuracy Curve')\n",
" plt.legend(['Train Accuracy', 'Validation Accuracy'])\n",
" plt.show()\n",
" \n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" torch.cuda.empty_cache()\n",
" cv2.destroyAllWindows()\n",
" del model\n",
" gc.collect()\n",
"\n",
" return path_res, model_name"
]
},
{
"cell_type": "markdown",
"id": "93c136ee",
"metadata": {},
"source": [
"### Ensemble"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "52e8d4c5",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\snytk\\miniconda3\\envs\\python311\\Lib\\site-packages\\torchvision\\models\\_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.\n",
" warnings.warn(\n",
"C:\\Users\\snytk\\miniconda3\\envs\\python311\\Lib\\site-packages\\torchvision\\models\\_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=None`.\n",
" warnings.warn(msg)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch : 1\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|████████████████████████████████████████████████████████████████████████████████| 437/437 [23:49<00:00, 3.27s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"train Loss: 0.0884 Acc: 0.9634\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|████████████████████████████████████████████████████████████████████████████████| 187/187 [09:15<00:00, 2.97s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"val Loss: 0.0342 Acc: 0.9873\n",
"\n",
"Epoch : 2\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 84%|██████████████████████████████████████████████████████████████████▊ | 365/437 [19:28<04:18, 3.59s/it]"
]
}
],
"source": [
"#----------Инициализируем модель и параметры обучения--------------\n",
"\n",
"torch.cuda.empty_cache()\n",
"cv2.destroyAllWindows()\n",
"gc.collect()\n",
"\n",
"num_classes = 3\n",
"config_name = \"ensemble\"\n",
" \n",
"def load_function(attr):\n",
" module_, func = attr.rsplit('.', maxsplit=1)\n",
" return getattr(import_module(module_), func)\n",
" \n",
"config = mlconfig.load('config_' + config_name + '.yaml')\n",
"\n",
"model1 = models.resnet18(pretrained=False)\n",
"model2 = models.resnet50(pretrained=False)\n",
"model3 = models.resnet101(pretrained=False)\n",
"\n",
"num_classes = 2\n",
"\n",
"model1.fc = nn.Linear(model1.fc.in_features, num_classes)\n",
"model2.fc = nn.Linear(model2.fc.in_features, num_classes)\n",
"model3.fc = nn.Linear(model3.fc.in_features, num_classes)\n",
"\n",
"class Ensemble(nn.Module):\n",
" def __init__(self, model1, model2, model3):\n",
" super(Ensemble, self).__init__()\n",
" self.model1 = model1\n",
" self.model2 = model2\n",
" self.model3 = model3\n",
" self.fc = nn.Linear(3 * num_classes, num_classes)\n",
"\n",
" def forward(self, x):\n",
" x1 = self.model1(x)\n",
" x2 = self.model2(x)\n",
" x3 = self.model3(x)\n",
" x = torch.cat((x1, x2, x3), dim=1)\n",
" x = self.fc(x)\n",
" return x\n",
"\n",
"model = Ensemble(model1, model2, model3)\n",
"\n",
"optimizer = load_function(config.optimizer.name)(model.parameters(), lr=config.optimizer.lr)\n",
"criterion = load_function(config.loss_function.name)()\n",
"scheduler = load_function(config.scheduler.name)(optimizer, step_size=config.scheduler.step_size, gamma=config.scheduler.gamma)\n",
"\n",
"if device != 'cpu':\n",
" model = model.to(device)\n",
"\n",
"#----------Создания датасета и обучение модели--------------\n",
"\n",
"path_res, model_name = prepare_and_learning_detection(num_classes = num_classes, num_samples = 10000, path_dataset = \"//192.168.1.64/data/DATASETS/2.4/2.4_learning/\", \n",
" model_name = config_name+\"_2.4_\", config_name = config_name, model=model)\n",
"\n",
"\n",
"torch.cuda.empty_cache()\n",
"cv2.destroyAllWindows()\n",
"del model\n",
"gc.collect()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "57d18676",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"celltoolbar": "Отсутствует",
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

@ -1,465 +0,0 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "5a13ad6b-56c9-4381-b376-1765f6dd7553",
"metadata": {
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Импортирование библиотек"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "7311cb4a-5bf3-4268-b431-43eea10e9ed6",
"metadata": {
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cuda\n"
]
},
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.model_selection import train_test_split\n",
"from torch.utils.data import Dataset, DataLoader\n",
"from torch import default_generator, randperm\n",
"from torch.utils.data.dataset import Subset\n",
"import torchvision.transforms as transforms\n",
"from torchvision.io import read_image\n",
"from importlib import import_module\n",
"import matplotlib.pyplot as plt\n",
"from torchvision import models\n",
"import torch, torchvision\n",
"from pathlib import Path\n",
"from PIL import Image\n",
"import torch.nn as nn\n",
"from tqdm import tqdm\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib\n",
"import os, shutil\n",
"import mlconfig\n",
"import random\n",
"import shutil\n",
"import timeit\n",
"import copy\n",
"import time\n",
"import cv2\n",
"import csv\n",
"import sys\n",
"import io\n",
"import gc\n",
"\n",
"plt.rcParams[\"savefig.bbox\"] = 'tight'\n",
"torch.manual_seed(1)\n",
"#matplotlib.use('Agg')\n",
"device = 'cuda' if torch.cuda.is_available() else 'cpu'\n",
"print(device)\n",
"torch.cuda.empty_cache()\n",
"cv2.destroyAllWindows()\n",
"gc.collect()"
]
},
{
"cell_type": "markdown",
"id": "384de097-82c6-41f5-bda9-b2f54bc99593",
"metadata": {
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Подготовка и обучение детектирование"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "46e4dc99-6994-4fee-a32e-f3983bd991bd",
"metadata": {},
"outputs": [],
"source": [
"def prepare_and_learning_detection(num_classes, num_samples, path_dataset, model_name, config_name, model):\n",
" num_samples_per_class = num_samples // num_classes\n",
"\n",
" #----------Создаём папку для сохранения результатов обучения--------------\n",
" \n",
" ind = 1\n",
" while True:\n",
" if os.path.exists(\"models/\" + model_name + str(ind)):\n",
" ind += 1\n",
" else:\n",
" os.mkdir(\"models/\" + model_name + str(ind))\n",
" path_res = \"models/\" + model_name + str(ind) + '/'\n",
" break\n",
" \n",
" #----------Создаём файл dataset.csv для обучения--------------\n",
" \n",
" pd_columns = ['file_name']\n",
" df = pd.DataFrame(columns=pd_columns)\n",
" \n",
" subdirs = os.listdir(path_dataset)\n",
" for subdir in subdirs:\n",
" files = os.listdir(path_dataset + subdir + '/')\n",
" num_samples_per_class = min(num_samples_per_class, len(files))\n",
" for subdir in subdirs:\n",
" files = os.listdir(path_dataset + subdir + '/')\n",
" random.shuffle(files)\n",
" files_to_process = files[:num_samples_per_class]\n",
" for file in files_to_process:\n",
" row = pd.DataFrame({pd_columns[0]: [str(path_dataset + subdir + '/' + file)]})\n",
" df = pd.concat([df, row], ignore_index=True)\n",
" \n",
" df.to_csv(path_res + 'dataset.csv', index=False)\n",
" \n",
" #----------Импортируем параметры для обучения--------------\n",
" \n",
" def load_function(attr):\n",
" module_, func = attr.rsplit('.', maxsplit=1)\n",
" return getattr(import_module(module_), func)\n",
" \n",
" config = mlconfig.load('config_' + config_name + '.yaml')\n",
" \n",
" #----------Создаём класс датасета--------------\n",
" \n",
" class MyDataset(Dataset):\n",
" def __init__(self, path_dataset, csv_file):\n",
" data=[]\n",
" with open(path_dataset + csv_file, newline='') as csvfile:\n",
" reader = csv.reader(csvfile, delimiter=' ', quotechar='|')\n",
" for row in list(reader)[1:]:\n",
" row = str(row)\n",
" data.append(row[2: len(row)-2])\n",
" self.sig_filenames = data\n",
" self.path_dataset = path_dataset\n",
" \n",
" def __len__(self):\n",
" return len(self.sig_filenames)\n",
" \n",
" def __getitem__(self, idx):\n",
" image_real = np.asarray(cv2.split(cv2.imread(self.sig_filenames[idx][:-8]+'real.jpg')), dtype=np.float32)\n",
" if 'drone' in list(self.sig_filenames[idx].split('/')):\n",
" label = torch.tensor(0)\n",
" if 'noise' in list(self.sig_filenames[idx].split('/')):\n",
" label = torch.tensor(1)\n",
" return image_real, label\n",
" \n",
" #----------Создаём датасет--------------\n",
" \n",
" dataset = MyDataset(path_dataset=path_res, csv_file='dataset.csv')\n",
" train_set, valid_set = torch.utils.data.random_split(dataset, [0.7, 0.3], generator=torch.Generator().manual_seed(42))\n",
" batch_size = config.batch_size\n",
" train_dataloader = torch.utils.data.DataLoader(train_set, batch_size=batch_size, shuffle=True, drop_last=True)\n",
" valid_dataloader = torch.utils.data.DataLoader(valid_set, batch_size=batch_size, shuffle=True, drop_last=True)\n",
" \n",
" dataloaders = {}\n",
" dataloaders['train'] = train_dataloader\n",
" dataloaders['val'] = valid_dataloader\n",
" dataset_sizes = {}\n",
" dataset_sizes['train'] = len(train_set)\n",
" dataset_sizes['val'] = len(valid_set)\n",
"\n",
" #----------Обучаем модель--------------\n",
"\n",
" val_loss = []\n",
" val_acc = []\n",
" train_loss = []\n",
" train_acc = []\n",
" epochs = config.epoch\n",
" \n",
" best_acc = 0.0\n",
" best_model = copy.deepcopy(model.state_dict())\n",
" limit = config.limit\n",
" epoch_limit = epochs\n",
" \n",
" start = timeit.default_timer()\n",
" for epoch in range(1, epochs+1):\n",
" print(f\"Epoch : {epoch}\\n\")\n",
" dataloader = None\n",
" \n",
" for phase in ['train', 'val']:\n",
" running_loss = 0.0\n",
" running_corrects = 0\n",
" \n",
" for (img, label) in tqdm(dataloaders[phase]):\n",
" img, label = img.to(device), label.to(device)\n",
" optimizer.zero_grad()\n",
" \n",
" with torch.set_grad_enabled(phase == 'train'):\n",
" output = model(img)\n",
" _, pred = torch.max(output.data, 1)\n",
" loss = criterion(output, label)\n",
" if phase=='train' :\n",
" loss.backward()\n",
" optimizer.step()\n",
" \n",
" running_loss += loss.item() * img.size(0)\n",
" running_corrects += torch.sum(pred == label.data)\n",
" \n",
" epoch_loss = running_loss / dataset_sizes[phase]\n",
" epoch_acc = running_corrects.double() / dataset_sizes[phase]\n",
" \n",
" print('{} Loss: {:.4f} Acc: {:.4f}'.format(phase, epoch_loss, epoch_acc))\n",
" \n",
" if phase=='train' :\n",
" train_loss.append(epoch_loss)\n",
" train_acc.append(epoch_acc)\n",
" else :\n",
" val_loss.append(epoch_loss)\n",
" val_acc.append(epoch_acc)\n",
" if val_acc[-1] > best_acc :\n",
" ind_limit = 0\n",
" best_acc = val_acc[-1]\n",
" best_model = copy.deepcopy(model.state_dict())\n",
" torch.save(best_model, path_res + model_name + '.pth')\n",
" else:\n",
" ind_limit += 1\n",
" \n",
" if ind_limit >= limit:\n",
" break\n",
" \n",
" if ind_limit >= limit:\n",
" epoch_limit = epoch\n",
" break\n",
" \n",
" print()\n",
" \n",
" end = timeit.default_timer()\n",
" print(f\"Total time elapsed = {end - start} seconds\")\n",
" epoch_limit += 1\n",
" \n",
" #----------Вывод графиков и сохранение результатов обучения--------------\n",
" \n",
" train_acc = np.asarray(list(map(lambda x: x.item(), train_acc)))\n",
" val_acc = np.asarray(list(map(lambda x: x.item(), val_acc)))\n",
" \n",
" np.save(path_res+'train_acc.npy', train_acc)\n",
" np.save(path_res+'val_acc.npy', val_acc)\n",
" np.save(path_res+'train_loss.npy', train_loss)\n",
" np.save(path_res+'val_loss.npy', val_loss)\n",
" \n",
" plt.figure()\n",
" plt.plot(range(1,epoch_limit), train_loss, color='blue')\n",
" plt.plot(range(1,epoch_limit), val_loss, color='red')\n",
" plt.xlabel('Epoch')\n",
" plt.ylabel('Loss')\n",
" plt.title('Loss Curve')\n",
" plt.legend(['Train Loss', 'Validation Loss'])\n",
" plt.show()\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" plt.figure()\n",
" plt.plot(range(1,epoch_limit), train_acc, color='blue')\n",
" plt.plot(range(1,epoch_limit), val_acc, color='red')\n",
" plt.xlabel('Epoch')\n",
" plt.ylabel('Accuracy')\n",
" plt.title('Accuracy Curve')\n",
" plt.legend(['Train Accuracy', 'Validation Accuracy'])\n",
" plt.show()\n",
" \n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" torch.cuda.empty_cache()\n",
" cv2.destroyAllWindows()\n",
" del model\n",
" gc.collect()\n",
"\n",
" return path_res, model_name"
]
},
{
"cell_type": "markdown",
"id": "93c136ee",
"metadata": {},
"source": [
"### Ensemble"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "52e8d4c5",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\snytk\\miniconda3\\envs\\python311\\Lib\\site-packages\\torchvision\\models\\_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.\n",
" warnings.warn(\n",
"C:\\Users\\snytk\\miniconda3\\envs\\python311\\Lib\\site-packages\\torchvision\\models\\_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNet18_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet18_Weights.DEFAULT` to get the most up-to-date weights.\n",
" warnings.warn(msg)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch : 1\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 0%| | 0/337 [00:00<?, ?it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([], device='cuda:0', size=(4, 0))\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"ename": "RuntimeError",
"evalue": "Expected 3D (unbatched) or 4D (batched) input to conv2d, but got input of size: [4, 0]",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mRuntimeError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[10], line 42\u001b[0m\n\u001b[0;32m 38\u001b[0m model \u001b[38;5;241m=\u001b[39m model\u001b[38;5;241m.\u001b[39mto(device)\n\u001b[0;32m 40\u001b[0m \u001b[38;5;66;03m#----------Создания датасета и обучение модели--------------\u001b[39;00m\n\u001b[1;32m---> 42\u001b[0m path_res, model_name \u001b[38;5;241m=\u001b[39m \u001b[43mprepare_and_learning_detection\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnum_classes\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mnum_classes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnum_samples\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m20000\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpath_dataset\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m//192.168.11.63/data/DATASETS/Energomash/2400_learning/\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[0;32m 43\u001b[0m \u001b[43m \u001b[49m\u001b[43mmodel_name\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mconfig_name\u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m_2.4_jpg_\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconfig_name\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mconfig_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmodel\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 46\u001b[0m torch\u001b[38;5;241m.\u001b[39mcuda\u001b[38;5;241m.\u001b[39mempty_cache()\n\u001b[0;32m 47\u001b[0m cv2\u001b[38;5;241m.\u001b[39mdestroyAllWindows()\n",
"Cell \u001b[1;32mIn[2], line 108\u001b[0m, in \u001b[0;36mprepare_and_learning_detection\u001b[1;34m(num_classes, num_samples, path_dataset, model_name, config_name, model)\u001b[0m\n\u001b[0;32m 105\u001b[0m optimizer\u001b[38;5;241m.\u001b[39mzero_grad()\n\u001b[0;32m 107\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m torch\u001b[38;5;241m.\u001b[39mset_grad_enabled(phase \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtrain\u001b[39m\u001b[38;5;124m'\u001b[39m):\n\u001b[1;32m--> 108\u001b[0m output \u001b[38;5;241m=\u001b[39m \u001b[43mmodel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mimg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 109\u001b[0m _, pred \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mmax(output\u001b[38;5;241m.\u001b[39mdata, \u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m 110\u001b[0m loss \u001b[38;5;241m=\u001b[39m criterion(output, label)\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1553\u001b[0m, in \u001b[0;36mModule._wrapped_call_impl\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1551\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_compiled_call_impl(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs) \u001b[38;5;66;03m# type: ignore[misc]\u001b[39;00m\n\u001b[0;32m 1552\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m-> 1553\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_impl\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1562\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1557\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[0;32m 1558\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[0;32m 1559\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks\n\u001b[0;32m 1560\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[0;32m 1561\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[1;32m-> 1562\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1564\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 1565\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n",
"Cell \u001b[1;32mIn[10], line 28\u001b[0m, in \u001b[0;36mModel.forward\u001b[1;34m(self, x)\u001b[0m\n\u001b[0;32m 26\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mforward\u001b[39m(\u001b[38;5;28mself\u001b[39m, x):\n\u001b[0;32m 27\u001b[0m \u001b[38;5;28mprint\u001b[39m(x)\n\u001b[1;32m---> 28\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmodel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 29\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m x\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1553\u001b[0m, in \u001b[0;36mModule._wrapped_call_impl\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1551\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_compiled_call_impl(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs) \u001b[38;5;66;03m# type: ignore[misc]\u001b[39;00m\n\u001b[0;32m 1552\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m-> 1553\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_impl\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1562\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1557\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[0;32m 1558\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[0;32m 1559\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks\n\u001b[0;32m 1560\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[0;32m 1561\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[1;32m-> 1562\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1564\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 1565\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torchvision\\models\\resnet.py:285\u001b[0m, in \u001b[0;36mResNet.forward\u001b[1;34m(self, x)\u001b[0m\n\u001b[0;32m 284\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mforward\u001b[39m(\u001b[38;5;28mself\u001b[39m, x: Tensor) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Tensor:\n\u001b[1;32m--> 285\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_forward_impl\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torchvision\\models\\resnet.py:268\u001b[0m, in \u001b[0;36mResNet._forward_impl\u001b[1;34m(self, x)\u001b[0m\n\u001b[0;32m 266\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_forward_impl\u001b[39m(\u001b[38;5;28mself\u001b[39m, x: Tensor) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Tensor:\n\u001b[0;32m 267\u001b[0m \u001b[38;5;66;03m# See note [TorchScript super()]\u001b[39;00m\n\u001b[1;32m--> 268\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconv1\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 269\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbn1(x)\n\u001b[0;32m 270\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrelu(x)\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1553\u001b[0m, in \u001b[0;36mModule._wrapped_call_impl\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1551\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_compiled_call_impl(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs) \u001b[38;5;66;03m# type: ignore[misc]\u001b[39;00m\n\u001b[0;32m 1552\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m-> 1553\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_impl\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1562\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1557\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[0;32m 1558\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[0;32m 1559\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks\n\u001b[0;32m 1560\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[0;32m 1561\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[1;32m-> 1562\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1564\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 1565\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torch\\nn\\modules\\conv.py:458\u001b[0m, in \u001b[0;36mConv2d.forward\u001b[1;34m(self, input)\u001b[0m\n\u001b[0;32m 457\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mforward\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;28minput\u001b[39m: Tensor) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Tensor:\n\u001b[1;32m--> 458\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_conv_forward\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mweight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbias\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torch\\nn\\modules\\conv.py:454\u001b[0m, in \u001b[0;36mConv2d._conv_forward\u001b[1;34m(self, input, weight, bias)\u001b[0m\n\u001b[0;32m 450\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpadding_mode \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mzeros\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[0;32m 451\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m F\u001b[38;5;241m.\u001b[39mconv2d(F\u001b[38;5;241m.\u001b[39mpad(\u001b[38;5;28minput\u001b[39m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_reversed_padding_repeated_twice, mode\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpadding_mode),\n\u001b[0;32m 452\u001b[0m weight, bias, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstride,\n\u001b[0;32m 453\u001b[0m _pair(\u001b[38;5;241m0\u001b[39m), \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdilation, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mgroups)\n\u001b[1;32m--> 454\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mF\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconv2d\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mweight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbias\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstride\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 455\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpadding\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdilation\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgroups\u001b[49m\u001b[43m)\u001b[49m\n",
"\u001b[1;31mRuntimeError\u001b[0m: Expected 3D (unbatched) or 4D (batched) input to conv2d, but got input of size: [4, 0]"
]
}
],
"source": [
"#----------Инициализируем модель и параметры обучения--------------\n",
"\n",
"torch.cuda.empty_cache()\n",
"cv2.destroyAllWindows()\n",
"gc.collect()\n",
"\n",
"config_name = \"ensemble\"\n",
" \n",
"def load_function(attr):\n",
" module_, func = attr.rsplit('.', maxsplit=1)\n",
" return getattr(import_module(module_), func)\n",
" \n",
"config = mlconfig.load('config_' + config_name + '.yaml')\n",
"\n",
"model = models.resnet18(pretrained=True)\n",
"\n",
"num_classes = 2\n",
"\n",
"model.fc = nn.Linear(model.fc.in_features, num_classes)\n",
"\n",
"class Model(nn.Module):\n",
" def __init__(self, model):\n",
" super(Model, self).__init__()\n",
" self.model = model\n",
"\n",
" def forward(self, x):\n",
" print(x)\n",
" x = self.model(x)\n",
" return x\n",
"\n",
"model = Model(model)\n",
"\n",
"optimizer = load_function(config.optimizer.name)(model.parameters(), lr=config.optimizer.lr)\n",
"criterion = load_function(config.loss_function.name)()\n",
"scheduler = load_function(config.scheduler.name)(optimizer, step_size=config.scheduler.step_size, gamma=config.scheduler.gamma)\n",
"\n",
"if device != 'cpu':\n",
" model = model.to(device)\n",
"\n",
"#----------Создания датасета и обучение модели--------------\n",
"\n",
"path_res, model_name = prepare_and_learning_detection(num_classes = num_classes, num_samples = 20000, path_dataset = \"//192.168.11.63/data/DATASETS/Energomash/2400_learning/\", \n",
" model_name = config_name+\"_2.4_jpg_\", config_name = config_name, model=model)\n",
"\n",
"\n",
"torch.cuda.empty_cache()\n",
"cv2.destroyAllWindows()\n",
"del model\n",
"gc.collect()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "57d18676",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "c10afb29",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"celltoolbar": "Отсутствует",
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

File diff suppressed because one or more lines are too long

@ -1,465 +0,0 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "5a13ad6b-56c9-4381-b376-1765f6dd7553",
"metadata": {
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Импортирование библиотек"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "7311cb4a-5bf3-4268-b431-43eea10e9ed6",
"metadata": {
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cuda\n"
]
},
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.model_selection import train_test_split\n",
"from torch.utils.data import Dataset, DataLoader\n",
"from torch import default_generator, randperm\n",
"from torch.utils.data.dataset import Subset\n",
"import torchvision.transforms as transforms\n",
"from torchvision.io import read_image\n",
"from importlib import import_module\n",
"import matplotlib.pyplot as plt\n",
"from torchvision import models\n",
"import torch, torchvision\n",
"from pathlib import Path\n",
"from PIL import Image\n",
"import torch.nn as nn\n",
"from tqdm import tqdm\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib\n",
"import os, shutil\n",
"import mlconfig\n",
"import random\n",
"import shutil\n",
"import timeit\n",
"import copy\n",
"import time\n",
"import cv2\n",
"import csv\n",
"import sys\n",
"import io\n",
"import gc\n",
"\n",
"plt.rcParams[\"savefig.bbox\"] = 'tight'\n",
"torch.manual_seed(1)\n",
"#matplotlib.use('Agg')\n",
"device = 'cuda' if torch.cuda.is_available() else 'cpu'\n",
"print(device)\n",
"torch.cuda.empty_cache()\n",
"cv2.destroyAllWindows()\n",
"gc.collect()"
]
},
{
"cell_type": "markdown",
"id": "384de097-82c6-41f5-bda9-b2f54bc99593",
"metadata": {
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Подготовка и обучение детектирование"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "46e4dc99-6994-4fee-a32e-f3983bd991bd",
"metadata": {},
"outputs": [],
"source": [
"def prepare_and_learning_detection(num_classes, num_samples, path_dataset, model_name, config_name, model):\n",
" num_samples_per_class = num_samples // num_classes\n",
"\n",
" #----------Создаём папку для сохранения результатов обучения--------------\n",
" \n",
" ind = 1\n",
" while True:\n",
" if os.path.exists(\"models/\" + model_name + str(ind)):\n",
" ind += 1\n",
" else:\n",
" os.mkdir(\"models/\" + model_name + str(ind))\n",
" path_res = \"models/\" + model_name + str(ind) + '/'\n",
" break\n",
" \n",
" #----------Создаём файл dataset.csv для обучения--------------\n",
" \n",
" pd_columns = ['file_name']\n",
" df = pd.DataFrame(columns=pd_columns)\n",
" \n",
" subdirs = os.listdir(path_dataset)\n",
" for subdir in subdirs:\n",
" files = os.listdir(path_dataset + subdir + '/')\n",
" num_samples_per_class = min(num_samples_per_class, len(files))\n",
" for subdir in subdirs:\n",
" files = os.listdir(path_dataset + subdir + '/')\n",
" random.shuffle(files)\n",
" files_to_process = files[:num_samples_per_class]\n",
" for file in files_to_process:\n",
" row = pd.DataFrame({pd_columns[0]: [str(path_dataset + subdir + '/' + file)]})\n",
" df = pd.concat([df, row], ignore_index=True)\n",
" \n",
" df.to_csv(path_res + 'dataset.csv', index=False)\n",
" \n",
" #----------Импортируем параметры для обучения--------------\n",
" \n",
" def load_function(attr):\n",
" module_, func = attr.rsplit('.', maxsplit=1)\n",
" return getattr(import_module(module_), func)\n",
" \n",
" config = mlconfig.load('config_' + config_name + '.yaml')\n",
" \n",
" #----------Создаём класс датасета--------------\n",
" \n",
" class MyDataset(Dataset):\n",
" def __init__(self, path_dataset, csv_file):\n",
" data=[]\n",
" with open(path_dataset + csv_file, newline='') as csvfile:\n",
" reader = csv.reader(csvfile, delimiter=' ', quotechar='|')\n",
" for row in list(reader)[1:]:\n",
" row = str(row)\n",
" data.append(row[2: len(row)-2])\n",
" self.sig_filenames = data\n",
" self.path_dataset = path_dataset\n",
" \n",
" def __len__(self):\n",
" return len(self.sig_filenames)\n",
" \n",
" def __getitem__(self, idx):\n",
" image_real = np.asarray(cv2.split(cv2.imread(self.sig_filenames[idx][:-8]+'real.jpg')), dtype=np.float32)\n",
" if 'drone' in list(self.sig_filenames[idx].split('/')):\n",
" label = torch.tensor(0)\n",
" if 'noise' in list(self.sig_filenames[idx].split('/')):\n",
" label = torch.tensor(1)\n",
" return image_real, label\n",
" \n",
" #----------Создаём датасет--------------\n",
" \n",
" dataset = MyDataset(path_dataset=path_res, csv_file='dataset.csv')\n",
" train_set, valid_set = torch.utils.data.random_split(dataset, [0.7, 0.3], generator=torch.Generator().manual_seed(42))\n",
" batch_size = config.batch_size\n",
" train_dataloader = torch.utils.data.DataLoader(train_set, batch_size=batch_size, shuffle=True, drop_last=True)\n",
" valid_dataloader = torch.utils.data.DataLoader(valid_set, batch_size=batch_size, shuffle=True, drop_last=True)\n",
" \n",
" dataloaders = {}\n",
" dataloaders['train'] = train_dataloader\n",
" dataloaders['val'] = valid_dataloader\n",
" dataset_sizes = {}\n",
" dataset_sizes['train'] = len(train_set)\n",
" dataset_sizes['val'] = len(valid_set)\n",
"\n",
" #----------Обучаем модель--------------\n",
"\n",
" val_loss = []\n",
" val_acc = []\n",
" train_loss = []\n",
" train_acc = []\n",
" epochs = config.epoch\n",
" \n",
" best_acc = 0.0\n",
" best_model = copy.deepcopy(model.state_dict())\n",
" limit = config.limit\n",
" epoch_limit = epochs\n",
" \n",
" start = timeit.default_timer()\n",
" for epoch in range(1, epochs+1):\n",
" print(f\"Epoch : {epoch}\\n\")\n",
" dataloader = None\n",
" \n",
" for phase in ['train', 'val']:\n",
" running_loss = 0.0\n",
" running_corrects = 0\n",
" \n",
" for (img, label) in tqdm(dataloaders[phase]):\n",
" img, label = img.to(device), label.to(device)\n",
" optimizer.zero_grad()\n",
" \n",
" with torch.set_grad_enabled(phase == 'train'):\n",
" output = model(img)\n",
" _, pred = torch.max(output.data, 1)\n",
" loss = criterion(output, label)\n",
" if phase=='train' :\n",
" loss.backward()\n",
" optimizer.step()\n",
" \n",
" running_loss += loss.item() * img.size(0)\n",
" running_corrects += torch.sum(pred == label.data)\n",
" \n",
" epoch_loss = running_loss / dataset_sizes[phase]\n",
" epoch_acc = running_corrects.double() / dataset_sizes[phase]\n",
" \n",
" print('{} Loss: {:.4f} Acc: {:.4f}'.format(phase, epoch_loss, epoch_acc))\n",
" \n",
" if phase=='train' :\n",
" train_loss.append(epoch_loss)\n",
" train_acc.append(epoch_acc)\n",
" else :\n",
" val_loss.append(epoch_loss)\n",
" val_acc.append(epoch_acc)\n",
" if val_acc[-1] > best_acc :\n",
" ind_limit = 0\n",
" best_acc = val_acc[-1]\n",
" best_model = copy.deepcopy(model.state_dict())\n",
" torch.save(best_model, path_res + model_name + '.pth')\n",
" else:\n",
" ind_limit += 1\n",
" \n",
" if ind_limit >= limit:\n",
" break\n",
" \n",
" if ind_limit >= limit:\n",
" epoch_limit = epoch\n",
" break\n",
" \n",
" print()\n",
" \n",
" end = timeit.default_timer()\n",
" print(f\"Total time elapsed = {end - start} seconds\")\n",
" epoch_limit += 1\n",
" \n",
" #----------Вывод графиков и сохранение результатов обучения--------------\n",
" \n",
" train_acc = np.asarray(list(map(lambda x: x.item(), train_acc)))\n",
" val_acc = np.asarray(list(map(lambda x: x.item(), val_acc)))\n",
" \n",
" np.save(path_res+'train_acc.npy', train_acc)\n",
" np.save(path_res+'val_acc.npy', val_acc)\n",
" np.save(path_res+'train_loss.npy', train_loss)\n",
" np.save(path_res+'val_loss.npy', val_loss)\n",
" \n",
" plt.figure()\n",
" plt.plot(range(1,epoch_limit), train_loss, color='blue')\n",
" plt.plot(range(1,epoch_limit), val_loss, color='red')\n",
" plt.xlabel('Epoch')\n",
" plt.ylabel('Loss')\n",
" plt.title('Loss Curve')\n",
" plt.legend(['Train Loss', 'Validation Loss'])\n",
" plt.show()\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" plt.figure()\n",
" plt.plot(range(1,epoch_limit), train_acc, color='blue')\n",
" plt.plot(range(1,epoch_limit), val_acc, color='red')\n",
" plt.xlabel('Epoch')\n",
" plt.ylabel('Accuracy')\n",
" plt.title('Accuracy Curve')\n",
" plt.legend(['Train Accuracy', 'Validation Accuracy'])\n",
" plt.show()\n",
" \n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" torch.cuda.empty_cache()\n",
" cv2.destroyAllWindows()\n",
" del model\n",
" gc.collect()\n",
"\n",
" return path_res, model_name"
]
},
{
"cell_type": "markdown",
"id": "93c136ee",
"metadata": {},
"source": [
"### Ensemble"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "52e8d4c5",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\snytk\\miniconda3\\envs\\python311\\Lib\\site-packages\\torchvision\\models\\_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.\n",
" warnings.warn(\n",
"C:\\Users\\snytk\\miniconda3\\envs\\python311\\Lib\\site-packages\\torchvision\\models\\_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNet18_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet18_Weights.DEFAULT` to get the most up-to-date weights.\n",
" warnings.warn(msg)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch : 1\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 0%| | 0/337 [00:00<?, ?it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([], device='cuda:0', size=(4, 0))\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"ename": "RuntimeError",
"evalue": "Expected 3D (unbatched) or 4D (batched) input to conv2d, but got input of size: [4, 0]",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mRuntimeError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[10], line 42\u001b[0m\n\u001b[0;32m 38\u001b[0m model \u001b[38;5;241m=\u001b[39m model\u001b[38;5;241m.\u001b[39mto(device)\n\u001b[0;32m 40\u001b[0m \u001b[38;5;66;03m#----------Создания датасета и обучение модели--------------\u001b[39;00m\n\u001b[1;32m---> 42\u001b[0m path_res, model_name \u001b[38;5;241m=\u001b[39m \u001b[43mprepare_and_learning_detection\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnum_classes\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mnum_classes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnum_samples\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m20000\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpath_dataset\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m//192.168.11.63/data/DATASETS/Energomash/2400_learning/\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[0;32m 43\u001b[0m \u001b[43m \u001b[49m\u001b[43mmodel_name\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mconfig_name\u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m_2.4_jpg_\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconfig_name\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mconfig_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmodel\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 46\u001b[0m torch\u001b[38;5;241m.\u001b[39mcuda\u001b[38;5;241m.\u001b[39mempty_cache()\n\u001b[0;32m 47\u001b[0m cv2\u001b[38;5;241m.\u001b[39mdestroyAllWindows()\n",
"Cell \u001b[1;32mIn[2], line 108\u001b[0m, in \u001b[0;36mprepare_and_learning_detection\u001b[1;34m(num_classes, num_samples, path_dataset, model_name, config_name, model)\u001b[0m\n\u001b[0;32m 105\u001b[0m optimizer\u001b[38;5;241m.\u001b[39mzero_grad()\n\u001b[0;32m 107\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m torch\u001b[38;5;241m.\u001b[39mset_grad_enabled(phase \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtrain\u001b[39m\u001b[38;5;124m'\u001b[39m):\n\u001b[1;32m--> 108\u001b[0m output \u001b[38;5;241m=\u001b[39m \u001b[43mmodel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mimg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 109\u001b[0m _, pred \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mmax(output\u001b[38;5;241m.\u001b[39mdata, \u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m 110\u001b[0m loss \u001b[38;5;241m=\u001b[39m criterion(output, label)\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1553\u001b[0m, in \u001b[0;36mModule._wrapped_call_impl\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1551\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_compiled_call_impl(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs) \u001b[38;5;66;03m# type: ignore[misc]\u001b[39;00m\n\u001b[0;32m 1552\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m-> 1553\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_impl\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1562\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1557\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[0;32m 1558\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[0;32m 1559\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks\n\u001b[0;32m 1560\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[0;32m 1561\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[1;32m-> 1562\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1564\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 1565\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n",
"Cell \u001b[1;32mIn[10], line 28\u001b[0m, in \u001b[0;36mModel.forward\u001b[1;34m(self, x)\u001b[0m\n\u001b[0;32m 26\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mforward\u001b[39m(\u001b[38;5;28mself\u001b[39m, x):\n\u001b[0;32m 27\u001b[0m \u001b[38;5;28mprint\u001b[39m(x)\n\u001b[1;32m---> 28\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmodel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 29\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m x\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1553\u001b[0m, in \u001b[0;36mModule._wrapped_call_impl\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1551\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_compiled_call_impl(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs) \u001b[38;5;66;03m# type: ignore[misc]\u001b[39;00m\n\u001b[0;32m 1552\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m-> 1553\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_impl\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1562\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1557\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[0;32m 1558\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[0;32m 1559\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks\n\u001b[0;32m 1560\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[0;32m 1561\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[1;32m-> 1562\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1564\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 1565\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torchvision\\models\\resnet.py:285\u001b[0m, in \u001b[0;36mResNet.forward\u001b[1;34m(self, x)\u001b[0m\n\u001b[0;32m 284\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mforward\u001b[39m(\u001b[38;5;28mself\u001b[39m, x: Tensor) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Tensor:\n\u001b[1;32m--> 285\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_forward_impl\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torchvision\\models\\resnet.py:268\u001b[0m, in \u001b[0;36mResNet._forward_impl\u001b[1;34m(self, x)\u001b[0m\n\u001b[0;32m 266\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_forward_impl\u001b[39m(\u001b[38;5;28mself\u001b[39m, x: Tensor) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Tensor:\n\u001b[0;32m 267\u001b[0m \u001b[38;5;66;03m# See note [TorchScript super()]\u001b[39;00m\n\u001b[1;32m--> 268\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconv1\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 269\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbn1(x)\n\u001b[0;32m 270\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrelu(x)\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1553\u001b[0m, in \u001b[0;36mModule._wrapped_call_impl\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1551\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_compiled_call_impl(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs) \u001b[38;5;66;03m# type: ignore[misc]\u001b[39;00m\n\u001b[0;32m 1552\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m-> 1553\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_impl\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1562\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1557\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[0;32m 1558\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[0;32m 1559\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks\n\u001b[0;32m 1560\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[0;32m 1561\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[1;32m-> 1562\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1564\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 1565\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torch\\nn\\modules\\conv.py:458\u001b[0m, in \u001b[0;36mConv2d.forward\u001b[1;34m(self, input)\u001b[0m\n\u001b[0;32m 457\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mforward\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;28minput\u001b[39m: Tensor) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Tensor:\n\u001b[1;32m--> 458\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_conv_forward\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mweight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbias\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[1;32m~\\miniconda3\\envs\\python311\\Lib\\site-packages\\torch\\nn\\modules\\conv.py:454\u001b[0m, in \u001b[0;36mConv2d._conv_forward\u001b[1;34m(self, input, weight, bias)\u001b[0m\n\u001b[0;32m 450\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpadding_mode \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mzeros\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[0;32m 451\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m F\u001b[38;5;241m.\u001b[39mconv2d(F\u001b[38;5;241m.\u001b[39mpad(\u001b[38;5;28minput\u001b[39m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_reversed_padding_repeated_twice, mode\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpadding_mode),\n\u001b[0;32m 452\u001b[0m weight, bias, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstride,\n\u001b[0;32m 453\u001b[0m _pair(\u001b[38;5;241m0\u001b[39m), \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdilation, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mgroups)\n\u001b[1;32m--> 454\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mF\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconv2d\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mweight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbias\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstride\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 455\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpadding\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdilation\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgroups\u001b[49m\u001b[43m)\u001b[49m\n",
"\u001b[1;31mRuntimeError\u001b[0m: Expected 3D (unbatched) or 4D (batched) input to conv2d, but got input of size: [4, 0]"
]
}
],
"source": [
"#----------Инициализируем модель и параметры обучения--------------\n",
"\n",
"torch.cuda.empty_cache()\n",
"cv2.destroyAllWindows()\n",
"gc.collect()\n",
"\n",
"config_name = \"ensemble\"\n",
" \n",
"def load_function(attr):\n",
" module_, func = attr.rsplit('.', maxsplit=1)\n",
" return getattr(import_module(module_), func)\n",
" \n",
"config = mlconfig.load('config_' + config_name + '.yaml')\n",
"\n",
"model = models.resnet18(pretrained=True)\n",
"\n",
"num_classes = 2\n",
"\n",
"model.fc = nn.Linear(model.fc.in_features, num_classes)\n",
"\n",
"class Model(nn.Module):\n",
" def __init__(self, model):\n",
" super(Model, self).__init__()\n",
" self.model = model\n",
"\n",
" def forward(self, x):\n",
" print(x)\n",
" x = self.model(x)\n",
" return x\n",
"\n",
"model = Model(model)\n",
"\n",
"optimizer = load_function(config.optimizer.name)(model.parameters(), lr=config.optimizer.lr)\n",
"criterion = load_function(config.loss_function.name)()\n",
"scheduler = load_function(config.scheduler.name)(optimizer, step_size=config.scheduler.step_size, gamma=config.scheduler.gamma)\n",
"\n",
"if device != 'cpu':\n",
" model = model.to(device)\n",
"\n",
"#----------Создания датасета и обучение модели--------------\n",
"\n",
"path_res, model_name = prepare_and_learning_detection(num_classes = num_classes, num_samples = 20000, path_dataset = \"//192.168.11.63/data/DATASETS/Energomash/2400_learning/\", \n",
" model_name = config_name+\"_2.4_jpg_\", config_name = config_name, model=model)\n",
"\n",
"\n",
"torch.cuda.empty_cache()\n",
"cv2.destroyAllWindows()\n",
"del model\n",
"gc.collect()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "57d18676",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "c10afb29",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"celltoolbar": "Отсутствует",
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,503 +0,0 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "5a13ad6b-56c9-4381-b376-1765f6dd7553",
"metadata": {
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Импортирование библиотек"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "7311cb4a-5bf3-4268-b431-43eea10e9ed6",
"metadata": {
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cuda\n"
]
},
{
"data": {
"text/plain": [
"12"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.model_selection import train_test_split\n",
"from torch.utils.data import Dataset, DataLoader\n",
"from torch import default_generator, randperm\n",
"from torch.utils.data.dataset import Subset\n",
"import torchvision.transforms as transforms\n",
"from torchvision.io import read_image\n",
"from importlib import import_module\n",
"import matplotlib.pyplot as plt\n",
"from torchvision import models\n",
"import torch, torchvision\n",
"from pathlib import Path\n",
"from PIL import Image\n",
"import torch.nn as nn\n",
"from tqdm import tqdm\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib\n",
"import os, shutil\n",
"import mlconfig\n",
"import random\n",
"import shutil\n",
"import timeit\n",
"import copy\n",
"import time\n",
"import cv2\n",
"import csv\n",
"import sys\n",
"import io\n",
"import gc\n",
"\n",
"plt.rcParams[\"savefig.bbox\"] = 'tight'\n",
"torch.manual_seed(1)\n",
"#matplotlib.use('Agg')\n",
"device = 'cuda' if torch.cuda.is_available() else 'cpu'\n",
"print(device)\n",
"torch.cuda.empty_cache()\n",
"cv2.destroyAllWindows()\n",
"gc.collect()"
]
},
{
"cell_type": "markdown",
"id": "384de097-82c6-41f5-bda9-b2f54bc99593",
"metadata": {
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Подготовка и обучение детектирование"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "46e4dc99-6994-4fee-a32e-f3983bd991bd",
"metadata": {},
"outputs": [],
"source": [
"def prepare_and_learning_detection(num_classes, num_samples, path_dataset, model_name, config_name, model):\n",
" num_samples_per_class = num_samples // num_classes\n",
"\n",
" #----------Создаём папку для сохранения результатов обучения--------------\n",
" \n",
" ind = 1\n",
" while True:\n",
" if os.path.exists(\"models/\" + model_name + str(ind)):\n",
" ind += 1\n",
" else:\n",
" os.mkdir(\"models/\" + model_name + str(ind))\n",
" path_res = \"models/\" + model_name + str(ind) + '/'\n",
" break\n",
" \n",
" #----------Создаём файл dataset.csv для обучения--------------\n",
" \n",
" pd_columns = ['file_name']\n",
" df = pd.DataFrame(columns=pd_columns)\n",
" \n",
" subdirs = os.listdir(path_dataset)\n",
" for subdir in subdirs:\n",
" files = os.listdir(path_dataset + subdir + '/')\n",
" num_samples_per_class = min(num_samples_per_class, len(files))\n",
" for subdir in subdirs:\n",
" files = os.listdir(path_dataset + subdir + '/')\n",
" random.shuffle(files)\n",
" files_to_process = files[:num_samples_per_class]\n",
" for file in files_to_process:\n",
" row = pd.DataFrame({pd_columns[0]: [str(path_dataset + subdir + '/' + file)]})\n",
" df = pd.concat([df, row], ignore_index=True)\n",
" \n",
" df.to_csv(path_res + 'dataset.csv', index=False)\n",
" \n",
" #----------Импортируем параметры для обучения--------------\n",
" \n",
" def load_function(attr):\n",
" module_, func = attr.rsplit('.', maxsplit=1)\n",
" return getattr(import_module(module_), func)\n",
" \n",
" config = mlconfig.load('config_' + config_name + '.yaml')\n",
" \n",
" #----------Создаём класс датасета--------------\n",
" \n",
" class MyDataset(Dataset):\n",
" def __init__(self, path_dataset, csv_file):\n",
" data=[]\n",
" with open(path_dataset + csv_file, newline='') as csvfile:\n",
" reader = csv.reader(csvfile, delimiter=' ', quotechar='|')\n",
" for row in list(reader)[1:]:\n",
" row = str(row)\n",
" data.append(row[2: len(row)-2])\n",
" self.sig_filenames = data\n",
" self.path_dataset = path_dataset\n",
" \n",
" def __len__(self):\n",
" return len(self.sig_filenames)\n",
" \n",
" def __getitem__(self, idx):\n",
" image_real = np.asarray(cv2.split(cv2.imread(self.sig_filenames[idx][:-8]+'real.jpg')), dtype=np.float32)\n",
" image_imag = np.asarray(cv2.split(cv2.imread(self.sig_filenames[idx][:-8]+'imag.jpg')), dtype=np.float32)\n",
" image_spec = np.asarray(cv2.split(cv2.imread(self.sig_filenames[idx][:-8]+'spec.jpg')), dtype=np.float32)\n",
" if 'drone' in list(self.sig_filenames[idx].split('/')):\n",
" label = torch.tensor(0)\n",
" if 'noise' in list(self.sig_filenames[idx].split('/')):\n",
" label = torch.tensor(1)\n",
" return image_real, image_imag, image_spec, label\n",
" \n",
" #----------Создаём датасет--------------\n",
" \n",
" dataset = MyDataset(path_dataset=path_res, csv_file='dataset.csv')\n",
" train_set, valid_set = torch.utils.data.random_split(dataset, [0.7, 0.3], generator=torch.Generator().manual_seed(42))\n",
" batch_size = config.batch_size\n",
" train_dataloader = torch.utils.data.DataLoader(train_set, batch_size=batch_size, shuffle=True, drop_last=True)\n",
" valid_dataloader = torch.utils.data.DataLoader(valid_set, batch_size=batch_size, shuffle=True, drop_last=True)\n",
" \n",
" dataloaders = {}\n",
" dataloaders['train'] = train_dataloader\n",
" dataloaders['val'] = valid_dataloader\n",
" dataset_sizes = {}\n",
" dataset_sizes['train'] = len(train_set)\n",
" dataset_sizes['val'] = len(valid_set)\n",
"\n",
" #----------Обучаем модель--------------\n",
"\n",
" val_loss = []\n",
" val_acc = []\n",
" train_loss = []\n",
" train_acc = []\n",
" epochs = config.epoch\n",
" \n",
" best_acc = 0.0\n",
" best_model = copy.deepcopy(model.state_dict())\n",
" limit = config.limit\n",
" epoch_limit = epochs\n",
" \n",
" start = timeit.default_timer()\n",
" for epoch in range(1, epochs+1):\n",
" print(f\"Epoch : {epoch}\\n\")\n",
" dataloader = None\n",
" \n",
" for phase in ['train', 'val']:\n",
" running_loss = 0.0\n",
" running_corrects = 0\n",
" \n",
" for (img1, img2, img3, label) in tqdm(dataloaders[phase]):\n",
" img1, img2, img3, label = img1.to(device), img2.to(device), img3.to(device), label.to(device)\n",
" optimizer.zero_grad()\n",
" \n",
" with torch.set_grad_enabled(phase == 'train'):\n",
" output = model([img1, img2, img3])\n",
" _, pred = torch.max(output.data, 1)\n",
" loss = criterion(output, label)\n",
" if phase=='train' :\n",
" loss.backward()\n",
" optimizer.step()\n",
" \n",
" running_loss += loss.item() * 3 * img1.size(0)\n",
" running_corrects += torch.sum(pred == label.data)\n",
" \n",
" epoch_loss = running_loss / dataset_sizes[phase]\n",
" epoch_acc = running_corrects.double() / dataset_sizes[phase]\n",
" \n",
" print('{} Loss: {:.4f} Acc: {:.4f}'.format(phase, epoch_loss, epoch_acc))\n",
" \n",
" if phase=='train' :\n",
" train_loss.append(epoch_loss)\n",
" train_acc.append(epoch_acc)\n",
" else :\n",
" val_loss.append(epoch_loss)\n",
" val_acc.append(epoch_acc)\n",
" if val_acc[-1] > best_acc :\n",
" ind_limit = 0\n",
" best_acc = val_acc[-1]\n",
" best_model = copy.deepcopy(model.state_dict())\n",
" torch.save(best_model, path_res + model_name + '.pth')\n",
" else:\n",
" ind_limit += 1\n",
" \n",
" if ind_limit >= limit:\n",
" break\n",
" \n",
" if ind_limit >= limit:\n",
" epoch_limit = epoch\n",
" break\n",
" \n",
" print()\n",
" \n",
" end = timeit.default_timer()\n",
" print(f\"Total time elapsed = {end - start} seconds\")\n",
" epoch_limit += 1\n",
" \n",
" #----------Вывод графиков и сохранение результатов обучения--------------\n",
" \n",
" train_acc = np.asarray(list(map(lambda x: x.item(), train_acc)))\n",
" val_acc = np.asarray(list(map(lambda x: x.item(), val_acc)))\n",
" \n",
" np.save(path_res+'train_acc.npy', train_acc)\n",
" np.save(path_res+'val_acc.npy', val_acc)\n",
" np.save(path_res+'train_loss.npy', train_loss)\n",
" np.save(path_res+'val_loss.npy', val_loss)\n",
" \n",
" plt.figure()\n",
" plt.plot(range(1,epoch_limit), train_loss, color='blue')\n",
" plt.plot(range(1,epoch_limit), val_loss, color='red')\n",
" plt.xlabel('Epoch')\n",
" plt.ylabel('Loss')\n",
" plt.title('Loss Curve')\n",
" plt.legend(['Train Loss', 'Validation Loss'])\n",
" plt.show()\n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" \n",
" plt.figure()\n",
" plt.plot(range(1,epoch_limit), train_acc, color='blue')\n",
" plt.plot(range(1,epoch_limit), val_acc, color='red')\n",
" plt.xlabel('Epoch')\n",
" plt.ylabel('Accuracy')\n",
" plt.title('Accuracy Curve')\n",
" plt.legend(['Train Accuracy', 'Validation Accuracy'])\n",
" plt.show()\n",
" \n",
" plt.clf()\n",
" plt.cla()\n",
" plt.close()\n",
" torch.cuda.empty_cache()\n",
" cv2.destroyAllWindows()\n",
" del model\n",
" gc.collect()\n",
"\n",
" return path_res, model_name"
]
},
{
"cell_type": "markdown",
"id": "93c136ee",
"metadata": {},
"source": [
"### Ensemble"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "52e8d4c5",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\snytk\\miniconda3\\envs\\python311\\Lib\\site-packages\\torchvision\\models\\_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.\n",
" warnings.warn(\n",
"C:\\Users\\snytk\\miniconda3\\envs\\python311\\Lib\\site-packages\\torchvision\\models\\_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=None`.\n",
" warnings.warn(msg)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch : 1\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████████████████████████████████████████████████████████████████████████| 658/658 [1:00:26<00:00, 5.51s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"train Loss: 0.6663 Acc: 0.9241\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|████████████████████████████████████████████████████████████████████████████████| 282/282 [02:45<00:00, 1.71it/s]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"val Loss: 0.4023 Acc: 0.9557\n",
"\n",
"Epoch : 2\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|████████████████████████████████████████████████████████████████████████████████| 658/658 [43:11<00:00, 3.94s/it]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"train Loss: 0.4096 Acc: 0.9514\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|████████████████████████████████████████████████████████████████████████████████| 282/282 [00:47<00:00, 5.98it/s]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"val Loss: 0.3390 Acc: 0.9574\n",
"\n",
"Epoch : 3\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 8%|██████▍ | 52/658 [04:26<51:43, 5.12s/it]"
]
}
],
"source": [
"#----------Инициализируем модель и параметры обучения--------------\n",
"\n",
"torch.cuda.empty_cache()\n",
"cv2.destroyAllWindows()\n",
"gc.collect()\n",
"\n",
"num_classes = 3\n",
"config_name = \"ensemble\"\n",
" \n",
"def load_function(attr):\n",
" module_, func = attr.rsplit('.', maxsplit=1)\n",
" return getattr(import_module(module_), func)\n",
" \n",
"config = mlconfig.load('config_' + config_name + '.yaml')\n",
"\n",
"model1 = models.resnet18(pretrained=False)\n",
"model2 = models.resnet50(pretrained=False)\n",
"model3 = models.resnet101(pretrained=False)\n",
"\n",
"num_classes = 2\n",
"\n",
"model1.fc = nn.Linear(model1.fc.in_features, num_classes)\n",
"model2.fc = nn.Linear(model2.fc.in_features, num_classes)\n",
"model3.fc = nn.Linear(model3.fc.in_features, num_classes)\n",
"\n",
"class Ensemble(nn.Module):\n",
" def __init__(self, model1, model2, model3):\n",
" super(Ensemble, self).__init__()\n",
" self.model1 = model1\n",
" self.model2 = model2\n",
" self.model3 = model3\n",
" self.fc = nn.Linear(3 * num_classes, num_classes)\n",
"\n",
" def forward(self, x):\n",
" x1 = self.model1(x[0])\n",
" x2 = self.model2(x[1])\n",
" x3 = self.model3(x[2])\n",
" x = torch.cat((x1, x2, x3), dim=1)\n",
" x = self.fc(x)\n",
" return x\n",
"\n",
"model = Ensemble(model1, model2, model3)\n",
"\n",
"optimizer = load_function(config.optimizer.name)(model.parameters(), lr=config.optimizer.lr)\n",
"criterion = load_function(config.loss_function.name)()\n",
"scheduler = load_function(config.scheduler.name)(optimizer, step_size=config.scheduler.step_size, gamma=config.scheduler.gamma)\n",
"\n",
"if device != 'cpu':\n",
" model = model.to(device)\n",
"\n",
"#----------Создания датасета и обучение модели--------------\n",
"\n",
"path_res, model_name = prepare_and_learning_detection(num_classes = num_classes, num_samples = 5000, path_dataset = \"C:/Users/snytk/Lerning_NN_for_work/datasets_jpg/915_jpg_learning/\", \n",
" model_name = config_name+\"_915_jpg_\", config_name = config_name, model=model)\n",
"\n",
"\n",
"torch.cuda.empty_cache()\n",
"cv2.destroyAllWindows()\n",
"del model\n",
"gc.collect()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "57d18676",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "eab69324",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"celltoolbar": "Отсутствует",
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

@ -1,370 +0,0 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 13,
"id": "c1b1a484",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['id', 'module_id', 'createdAt', 'registeredAt', 'data', 'createdBy', 'type']\n",
"['291725', '1', '2025-02-14 13:58:03', '2025-02-14 13:58:01', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291722', '1', '2025-02-14 13:57:32', '2025-02-14 13:57:30', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291721', '1', '2025-02-14 13:57:29', '2025-02-14 13:57:27', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291718', '1', '2025-02-14 13:56:58', '2025-02-14 13:56:55', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291715', '1', '2025-02-14 13:56:26', '2025-02-14 13:56:24', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291711', '1', '2025-02-14 13:55:53', '2025-02-14 13:55:51', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291710', '1', '2025-02-14 13:55:50', '2025-02-14 13:55:48', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291706', '1', '2025-02-14 13:55:17', '2025-02-14 13:55:15', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291700', '1', '2025-02-14 13:54:15', '2025-02-14 13:54:13', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291697', '1', '2025-02-14 13:53:44', '2025-02-14 13:53:42', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291696', '1', '2025-02-14 13:53:41', '2025-02-14 13:53:39', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291693', '1', '2025-02-14 13:53:10', '2025-02-14 13:53:07', '[{\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291692', '1', '2025-02-14 13:53:07', '2025-02-14 13:53:05', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291688', '1', '2025-02-14 13:52:34', '2025-02-14 13:52:32', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291685', '1', '2025-02-14 13:52:03', '2025-02-14 13:52:01', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291684', '1', '2025-02-14 13:52:01', '2025-02-14 13:51:59', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291681', '1', '2025-02-14 13:51:30', '2025-02-14 13:51:28', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291677', '1', '2025-02-14 13:50:57', '2025-02-14 13:50:55', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291676', '1', '2025-02-14 13:50:53', '2025-02-14 13:50:51', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291673', '1', '2025-02-14 13:50:21', '2025-02-14 13:50:19', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291672', '1', '2025-02-14 13:50:18', '2025-02-14 13:50:16', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291669', '1', '2025-02-14 13:49:47', '2025-02-14 13:49:45', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291668', '1', '2025-02-14 13:49:36', '2025-02-14 13:49:34', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291665', '1', '2025-02-14 13:49:05', '2025-02-14 13:49:03', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291664', '1', '2025-02-14 13:49:03', '2025-02-14 13:49:01', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291661', '1', '2025-02-14 13:48:32', '2025-02-14 13:48:30', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291657', '1', '2025-02-14 13:47:59', '2025-02-14 13:47:57', '[{\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291656', '1', '2025-02-14 13:47:56', '2025-02-14 13:47:54', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291653', '1', '2025-02-14 13:47:24', '2025-02-14 13:47:22', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291621', '1', '2025-02-14 13:15:52', '2025-02-14 13:15:50', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291615', '1', '2025-02-14 13:14:50', '2025-02-14 13:14:48', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291614', '1', '2025-02-14 13:14:45', '2025-02-14 13:14:43', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291611', '1', '2025-02-14 13:14:14', '2025-02-14 13:14:12', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291607', '1', '2025-02-14 13:13:38', '2025-02-14 13:13:36', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291551', '1', '2025-02-14 12:17:59', '2025-02-14 12:17:57', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291548', '1', '2025-02-14 12:17:28', '2025-02-14 12:17:26', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291547', '1', '2025-02-14 12:17:26', '2025-02-14 12:17:24', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291544', '1', '2025-02-14 12:16:55', '2025-02-14 12:16:53', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291543', '1', '2025-02-14 12:16:51', '2025-02-14 12:16:49', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291540', '1', '2025-02-14 12:16:20', '2025-02-14 12:16:18', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291335', '1', '2025-02-14 08:51:24', '2025-02-14 08:51:22', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291332', '1', '2025-02-14 08:50:53', '2025-02-14 08:50:51', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291331', '1', '2025-02-14 08:50:48', '2025-02-14 08:50:46', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291328', '1', '2025-02-14 08:50:17', '2025-02-14 08:50:14', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291327', '1', '2025-02-14 08:50:11', '2025-02-14 08:50:09', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291324', '1', '2025-02-14 08:49:40', '2025-02-14 08:49:38', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291323', '1', '2025-02-14 08:49:36', '2025-02-14 08:49:34', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291320', '1', '2025-02-14 08:49:05', '2025-02-14 08:49:03', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291317', '1', '2025-02-14 08:48:34', '2025-02-14 08:48:32', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291316', '1', '2025-02-14 08:48:32', '2025-02-14 08:48:30', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291313', '1', '2025-02-14 08:48:01', '2025-02-14 08:47:59', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291312', '1', '2025-02-14 08:47:46', '2025-02-14 08:47:44', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291309', '1', '2025-02-14 08:47:15', '2025-02-14 08:47:13', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291308', '1', '2025-02-14 08:47:13', '2025-02-14 08:47:11', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291305', '1', '2025-02-14 08:46:41', '2025-02-14 08:46:39', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291304', '1', '2025-02-14 08:46:25', '2025-02-14 08:46:23', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291301', '1', '2025-02-14 08:45:54', '2025-02-14 08:45:52', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291300', '1', '2025-02-14 08:45:52', '2025-02-14 08:45:50', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291297', '1', '2025-02-14 08:45:21', '2025-02-14 08:45:19', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291296', '1', '2025-02-14 08:45:17', '2025-02-14 08:45:15', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291293', '1', '2025-02-14 08:44:46', '2025-02-14 08:44:44', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291292', '1', '2025-02-14 08:44:33', '2025-02-14 08:44:31', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291289', '1', '2025-02-14 08:44:02', '2025-02-14 08:44:00', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291288', '1', '2025-02-14 08:43:53', '2025-02-14 08:43:50', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291285', '1', '2025-02-14 08:43:21', '2025-02-14 08:43:19', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291284', '1', '2025-02-14 08:43:19', '2025-02-14 08:43:17', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291281', '1', '2025-02-14 08:42:48', '2025-02-14 08:42:46', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291280', '1', '2025-02-14 08:42:32', '2025-02-14 08:42:30', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291277', '1', '2025-02-14 08:42:01', '2025-02-14 08:41:59', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291276', '1', '2025-02-14 08:41:57', '2025-02-14 08:41:55', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291269', '1', '2025-02-14 08:40:52', '2025-02-14 08:40:50', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['291265', '1', '2025-02-14 08:40:19', '2025-02-14 08:40:17', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290775', '1', '2025-02-14 00:29:43', '2025-02-14 00:29:41', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290772', '1', '2025-02-14 00:29:12', '2025-02-14 00:29:10', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290768', '1', '2025-02-14 00:28:38', '2025-02-14 00:28:36', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290767', '1', '2025-02-14 00:28:27', '2025-02-14 00:28:25', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290764', '1', '2025-02-14 00:27:56', '2025-02-14 00:27:54', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290763', '1', '2025-02-14 00:27:46', '2025-02-14 00:27:44', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290760', '1', '2025-02-14 00:27:15', '2025-02-14 00:27:13', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290756', '1', '2025-02-14 00:26:42', '2025-02-14 00:26:40', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290752', '1', '2025-02-14 00:25:59', '2025-02-14 00:25:57', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290748', '1', '2025-02-14 00:25:26', '2025-02-14 00:25:24', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290744', '1', '2025-02-14 00:24:51', '2025-02-14 00:24:49', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290743', '1', '2025-02-14 00:24:41', '2025-02-14 00:24:39', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290740', '1', '2025-02-14 00:24:10', '2025-02-14 00:24:08', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290739', '1', '2025-02-14 00:24:00', '2025-02-14 00:23:58', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290736', '1', '2025-02-14 00:23:29', '2025-02-14 00:23:27', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290735', '1', '2025-02-14 00:23:24', '2025-02-14 00:23:22', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290732', '1', '2025-02-14 00:22:53', '2025-02-14 00:22:51', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290728', '1', '2025-02-14 00:22:20', '2025-02-14 00:22:18', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290727', '1', '2025-02-14 00:22:17', '2025-02-14 00:22:15', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290724', '1', '2025-02-14 00:21:46', '2025-02-14 00:21:44', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290721', '1', '2025-02-14 00:21:15', '2025-02-14 00:21:13', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290720', '1', '2025-02-14 00:21:10', '2025-02-14 00:21:08', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290717', '1', '2025-02-14 00:20:39', '2025-02-14 00:20:37', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290716', '1', '2025-02-14 00:20:34', '2025-02-14 00:20:32', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290713', '1', '2025-02-14 00:20:02', '2025-02-14 00:20:00', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290712', '1', '2025-02-14 00:20:00', '2025-02-14 00:19:58', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290709', '1', '2025-02-14 00:19:29', '2025-02-14 00:19:27', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290705', '1', '2025-02-14 00:18:56', '2025-02-14 00:18:54', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290704', '1', '2025-02-14 00:18:48', '2025-02-14 00:18:46', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290701', '1', '2025-02-14 00:18:17', '2025-02-14 00:18:15', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290700', '1', '2025-02-14 00:18:12', '2025-02-14 00:18:10', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290697', '1', '2025-02-14 00:17:41', '2025-02-14 00:17:39', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290693', '1', '2025-02-14 00:17:08', '2025-02-14 00:17:06', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290692', '1', '2025-02-14 00:17:06', '2025-02-14 00:17:03', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290689', '1', '2025-02-14 00:16:34', '2025-02-14 00:16:32', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290685', '1', '2025-02-14 00:16:01', '2025-02-14 00:15:59', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290682', '1', '2025-02-14 00:15:30', '2025-02-14 00:15:28', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290676', '1', '2025-02-14 00:09:52', '2025-02-14 00:09:50', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290673', '1', '2025-02-14 00:09:21', '2025-02-14 00:09:19', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290672', '1', '2025-02-14 00:09:19', '2025-02-14 00:09:17', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290669', '1', '2025-02-14 00:08:48', '2025-02-14 00:08:46', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290661', '1', '2025-02-14 00:00:53', '2025-02-14 00:00:51', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290658', '1', '2025-02-14 00:00:22', '2025-02-14 00:00:19', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290654', '1', '2025-02-13 23:59:45', '2025-02-13 23:59:43', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290650', '1', '2025-02-13 23:59:12', '2025-02-13 23:59:10', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290649', '1', '2025-02-13 23:59:08', '2025-02-13 23:59:06', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290646', '1', '2025-02-13 23:58:37', '2025-02-13 23:58:35', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290645', '1', '2025-02-13 23:58:28', '2025-02-13 23:58:26', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290642', '1', '2025-02-13 23:57:57', '2025-02-13 23:57:55', '[{\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290641', '1', '2025-02-13 23:57:55', '2025-02-13 23:57:53', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290638', '1', '2025-02-13 23:57:24', '2025-02-13 23:57:22', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290637', '1', '2025-02-13 23:57:22', '2025-02-13 23:57:20', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290634', '1', '2025-02-13 23:56:51', '2025-02-13 23:56:49', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290633', '1', '2025-02-13 23:56:47', '2025-02-13 23:56:45', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290630', '1', '2025-02-13 23:56:15', '2025-02-13 23:56:13', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290629', '1', '2025-02-13 23:56:10', '2025-02-13 23:56:08', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290626', '1', '2025-02-13 23:55:39', '2025-02-13 23:55:37', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290625', '1', '2025-02-13 23:55:30', '2025-02-13 23:55:28', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290622', '1', '2025-02-13 23:54:59', '2025-02-13 23:54:57', '[{\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290621', '1', '2025-02-13 23:54:57', '2025-02-13 23:54:55', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290618', '1', '2025-02-13 23:54:26', '2025-02-13 23:54:24', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290617', '1', '2025-02-13 23:54:23', '2025-02-13 23:54:21', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290614', '1', '2025-02-13 23:53:52', '2025-02-13 23:53:50', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290613', '1', '2025-02-13 23:53:41', '2025-02-13 23:53:39', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290610', '1', '2025-02-13 23:53:09', '2025-02-13 23:53:07', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290441', '1', '2025-02-13 21:04:20', '2025-02-13 21:04:18', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290438', '1', '2025-02-13 21:03:49', '2025-02-13 21:03:47', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290431', '1', '2025-02-13 21:02:44', '2025-02-13 21:02:42', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290427', '1', '2025-02-13 21:02:04', '2025-02-13 21:02:02', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290423', '1', '2025-02-13 21:01:31', '2025-02-13 21:01:29', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290419', '1', '2025-02-13 21:00:56', '2025-02-13 21:00:54', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290418', '1', '2025-02-13 21:00:46', '2025-02-13 21:00:44', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290415', '1', '2025-02-13 21:00:15', '2025-02-13 21:00:13', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290414', '1', '2025-02-13 21:00:06', '2025-02-13 21:00:04', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290411', '1', '2025-02-13 20:59:35', '2025-02-13 20:59:33', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290407', '1', '2025-02-13 20:59:02', '2025-02-13 20:59:00', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290406', '1', '2025-02-13 20:58:54', '2025-02-13 20:58:51', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290403', '1', '2025-02-13 20:58:22', '2025-02-13 20:58:20', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290399', '1', '2025-02-13 20:57:48', '2025-02-13 20:57:46', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290398', '1', '2025-02-13 20:57:41', '2025-02-13 20:57:39', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290395', '1', '2025-02-13 20:57:10', '2025-02-13 20:57:08', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290394', '1', '2025-02-13 20:57:06', '2025-02-13 20:57:04', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290390', '1', '2025-02-13 20:56:32', '2025-02-13 20:56:30', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290387', '1', '2025-02-13 20:56:01', '2025-02-13 20:55:59', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290386', '1', '2025-02-13 20:55:59', '2025-02-13 20:55:57', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290383', '1', '2025-02-13 20:55:28', '2025-02-13 20:55:26', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290382', '1', '2025-02-13 20:55:26', '2025-02-13 20:55:24', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290379', '1', '2025-02-13 20:54:55', '2025-02-13 20:54:53', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290378', '1', '2025-02-13 20:54:44', '2025-02-13 20:54:42', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290375', '1', '2025-02-13 20:54:13', '2025-02-13 20:54:11', '[{\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290374', '1', '2025-02-13 20:54:11', '2025-02-13 20:54:09', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290371', '1', '2025-02-13 20:53:40', '2025-02-13 20:53:38', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290370', '1', '2025-02-13 20:53:37', '2025-02-13 20:53:34', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290363', '1', '2025-02-13 20:52:32', '2025-02-13 20:52:30', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290299', '1', '2025-02-13 19:48:43', '2025-02-13 19:48:41', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290296', '1', '2025-02-13 19:48:12', '2025-02-13 19:48:10', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290295', '1', '2025-02-13 19:48:07', '2025-02-13 19:48:05', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290292', '1', '2025-02-13 19:47:36', '2025-02-13 19:47:34', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290291', '1', '2025-02-13 19:47:34', '2025-02-13 19:47:32', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290288', '1', '2025-02-13 19:47:03', '2025-02-13 19:47:01', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290287', '1', '2025-02-13 19:46:59', '2025-02-13 19:46:56', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290280', '1', '2025-02-13 19:45:54', '2025-02-13 19:45:52', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290229', '1', '2025-02-13 18:55:16', '2025-02-13 18:55:14', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290226', '1', '2025-02-13 18:54:45', '2025-02-13 18:54:43', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290225', '1', '2025-02-13 18:54:43', '2025-02-13 18:54:41', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290222', '1', '2025-02-13 18:54:12', '2025-02-13 18:54:10', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290221', '1', '2025-02-13 18:53:52', '2025-02-13 18:53:50', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290218', '1', '2025-02-13 18:53:21', '2025-02-13 18:53:19', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290089', '1', '2025-02-13 16:44:59', '2025-02-13 16:44:57', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290086', '1', '2025-02-13 16:44:28', '2025-02-13 16:44:26', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290085', '1', '2025-02-13 16:44:19', '2025-02-13 16:44:17', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290082', '1', '2025-02-13 16:43:48', '2025-02-13 16:43:45', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290078', '1', '2025-02-13 16:43:14', '2025-02-13 16:43:12', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290074', '1', '2025-02-13 16:42:40', '2025-02-13 16:42:38', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290073', '1', '2025-02-13 16:42:29', '2025-02-13 16:42:27', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290070', '1', '2025-02-13 16:41:58', '2025-02-13 16:41:56', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290069', '1', '2025-02-13 16:41:55', '2025-02-13 16:41:53', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290066', '1', '2025-02-13 16:41:24', '2025-02-13 16:41:22', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290063', '1', '2025-02-13 16:40:53', '2025-02-13 16:40:51', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290062', '1', '2025-02-13 16:40:49', '2025-02-13 16:40:47', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290058', '1', '2025-02-13 16:40:16', '2025-02-13 16:40:13', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290055', '1', '2025-02-13 16:39:44', '2025-02-13 16:39:42', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290054', '1', '2025-02-13 16:39:41', '2025-02-13 16:39:39', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290048', '1', '2025-02-13 16:38:39', '2025-02-13 16:38:37', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290047', '1', '2025-02-13 16:38:37', '2025-02-13 16:38:35', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290044', '1', '2025-02-13 16:38:06', '2025-02-13 16:38:04', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290043', '1', '2025-02-13 16:37:58', '2025-02-13 16:37:56', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290040', '1', '2025-02-13 16:37:27', '2025-02-13 16:37:25', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290039', '1', '2025-02-13 16:37:25', '2025-02-13 16:37:23', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290036', '1', '2025-02-13 16:36:54', '2025-02-13 16:36:52', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290028', '1', '2025-02-13 16:35:46', '2025-02-13 16:35:44', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290027', '1', '2025-02-13 16:35:36', '2025-02-13 16:35:34', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290024', '1', '2025-02-13 16:35:05', '2025-02-13 16:35:03', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290023', '1', '2025-02-13 16:35:00', '2025-02-13 16:34:58', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290020', '1', '2025-02-13 16:34:29', '2025-02-13 16:34:27', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290019', '1', '2025-02-13 16:34:26', '2025-02-13 16:34:24', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['290016', '1', '2025-02-13 16:33:55', '2025-02-13 16:33:53', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289835', '1', '2025-02-13 13:32:33', '2025-02-13 13:32:31', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289832', '1', '2025-02-13 13:32:02', '2025-02-13 13:31:59', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289831', '1', '2025-02-13 13:31:25', '2025-02-13 13:31:23', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289828', '1', '2025-02-13 13:30:54', '2025-02-13 13:30:52', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289827', '1', '2025-02-13 13:30:52', '2025-02-13 13:30:50', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289824', '1', '2025-02-13 13:30:21', '2025-02-13 13:30:19', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289823', '1', '2025-02-13 13:30:16', '2025-02-13 13:30:14', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289820', '1', '2025-02-13 13:29:45', '2025-02-13 13:29:43', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289819', '1', '2025-02-13 13:29:41', '2025-02-13 13:29:39', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289816', '1', '2025-02-13 13:29:10', '2025-02-13 13:29:08', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289815', '1', '2025-02-13 13:29:03', '2025-02-13 13:29:01', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289812', '1', '2025-02-13 13:28:32', '2025-02-13 13:28:30', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289811', '1', '2025-02-13 13:28:30', '2025-02-13 13:28:27', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289808', '1', '2025-02-13 13:27:58', '2025-02-13 13:27:56', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289807', '1', '2025-02-13 13:27:38', '2025-02-13 13:27:36', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289804', '1', '2025-02-13 13:27:07', '2025-02-13 13:27:05', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289749', '1', '2025-02-13 12:34:53', '2025-02-13 12:34:51', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289745', '1', '2025-02-13 12:34:20', '2025-02-13 12:34:18', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289741', '1', '2025-02-13 12:33:44', '2025-02-13 12:33:42', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289737', '1', '2025-02-13 12:33:11', '2025-02-13 12:33:09', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289736', '1', '2025-02-13 12:33:06', '2025-02-13 12:33:04', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289733', '1', '2025-02-13 12:32:35', '2025-02-13 12:32:33', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289729', '1', '2025-02-13 12:32:02', '2025-02-13 12:32:00', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289728', '1', '2025-02-13 12:31:57', '2025-02-13 12:31:54', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289725', '1', '2025-02-13 12:31:25', '2025-02-13 12:31:23', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289721', '1', '2025-02-13 12:30:52', '2025-02-13 12:30:50', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289720', '1', '2025-02-13 12:30:47', '2025-02-13 12:30:45', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289717', '1', '2025-02-13 12:30:16', '2025-02-13 12:30:14', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289713', '1', '2025-02-13 12:29:43', '2025-02-13 12:29:41', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289712', '1', '2025-02-13 12:29:38', '2025-02-13 12:29:36', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289709', '1', '2025-02-13 12:29:07', '2025-02-13 12:29:05', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289705', '1', '2025-02-13 12:28:34', '2025-02-13 12:28:31', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289704', '1', '2025-02-13 12:28:28', '2025-02-13 12:28:26', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289701', '1', '2025-02-13 12:27:57', '2025-02-13 12:27:55', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289697', '1', '2025-02-13 12:27:24', '2025-02-13 12:27:22', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289693', '1', '2025-02-13 12:26:50', '2025-02-13 12:26:48', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289692', '1', '2025-02-13 12:26:46', '2025-02-13 12:26:44', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289689', '1', '2025-02-13 12:26:15', '2025-02-13 12:26:13', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289685', '1', '2025-02-13 12:25:41', '2025-02-13 12:25:39', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289684', '1', '2025-02-13 12:25:37', '2025-02-13 12:25:34', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 8, \"light_len\": 8, \"triggered\": true}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289681', '1', '2025-02-13 12:25:05', '2025-02-13 12:25:03', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289680', '1', '2025-02-13 12:25:00', '2025-02-13 12:24:58', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289677', '1', '2025-02-13 12:24:29', '2025-02-13 12:24:27', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289673', '1', '2025-02-13 12:23:56', '2025-02-13 12:23:54', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289669', '1', '2025-02-13 12:23:22', '2025-02-13 12:23:20', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289665', '1', '2025-02-13 12:22:48', '2025-02-13 12:22:46', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289664', '1', '2025-02-13 12:22:42', '2025-02-13 12:22:40', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289661', '1', '2025-02-13 12:22:11', '2025-02-13 12:22:08', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289657', '1', '2025-02-13 12:21:37', '2025-02-13 12:21:35', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289656', '1', '2025-02-13 12:21:34', '2025-02-13 12:21:32', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289653', '1', '2025-02-13 12:21:03', '2025-02-13 12:21:01', '[{\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289652', '1', '2025-02-13 12:21:00', '2025-02-13 12:20:58', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289649', '1', '2025-02-13 12:20:29', '2025-02-13 12:20:27', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289648', '1', '2025-02-13 12:20:23', '2025-02-13 12:20:21', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289645', '1', '2025-02-13 12:19:52', '2025-02-13 12:19:50', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289644', '1', '2025-02-13 12:19:50', '2025-02-13 12:19:48', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289641', '1', '2025-02-13 12:19:19', '2025-02-13 12:19:17', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289640', '1', '2025-02-13 12:19:16', '2025-02-13 12:19:13', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289637', '1', '2025-02-13 12:18:44', '2025-02-13 12:18:42', '[{\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289636', '1', '2025-02-13 12:18:41', '2025-02-13 12:18:39', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289633', '1', '2025-02-13 12:18:10', '2025-02-13 12:18:08', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289632', '1', '2025-02-13 12:18:04', '2025-02-13 12:18:02', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289629', '1', '2025-02-13 12:17:33', '2025-02-13 12:17:31', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289628', '1', '2025-02-13 12:17:31', '2025-02-13 12:17:29', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289625', '1', '2025-02-13 12:17:00', '2025-02-13 12:16:58', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289624', '1', '2025-02-13 12:16:58', '2025-02-13 12:16:56', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289621', '1', '2025-02-13 12:16:27', '2025-02-13 12:16:25', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289620', '1', '2025-02-13 12:16:24', '2025-02-13 12:16:22', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289617', '1', '2025-02-13 12:15:53', '2025-02-13 12:15:50', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289616', '1', '2025-02-13 12:15:45', '2025-02-13 12:15:43', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289613', '1', '2025-02-13 12:15:14', '2025-02-13 12:15:12', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289612', '1', '2025-02-13 12:15:11', '2025-02-13 12:15:09', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289609', '1', '2025-02-13 12:14:40', '2025-02-13 12:14:38', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289606', '1', '2025-02-13 12:14:09', '2025-02-13 12:14:07', '[{\"freq\": 433, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289605', '1', '2025-02-13 12:14:05', '2025-02-13 12:14:03', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['289602', '1', '2025-02-13 12:13:34', '2025-02-13 12:13:32', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 868, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"['287824', '1', '2025-02-12 04:41:04', '2025-02-12 04:41:02', '[{\"freq\": 433, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 700, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 868, \"amplitude\": 9, \"triggered\": true}, {\"freq\": 915, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 1200, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 2400, \"amplitude\": 0, \"light_len\": 0, \"triggered\": false}, {\"freq\": 5200, \"amplitude\": 0, \"triggered\": false}, {\"freq\": 5800, \"amplitude\": 0, \"triggered\": false}]', 'NULL', 'freq']\n",
"Данные успешно обработаны и сохранены в History_change_1.csv\n"
]
}
],
"source": [
"import csv\n",
"\n",
"# Путь к входному CSV-файлу\n",
"input_file = 'History_1.csv'\n",
"\n",
"# Путь к выходному CSV-файлу (с правильно разделёнными данными)\n",
"output_file = 'History_change_1.csv'\n",
"\n",
"# Открываем исходный файл для чтения и новый файл для записи\n",
"with open(input_file, mode='r', encoding='utf-8') as infile:\n",
" with open(output_file, mode='w', encoding='utf-8-sig', newline='') as outfile:\n",
"\n",
" # Создаем объект reader для чтения CSV с учетом кавычек\n",
" reader = csv.reader(infile, delimiter=',', quotechar='\"')\n",
"\n",
" # Создаем объект writer для записи в новый CSV-файл\n",
" writer = csv.writer(outfile, delimiter=';', quotechar=\"'\", quoting=csv.QUOTE_MINIMAL)\n",
"\n",
" # Проходимся по каждой строке в исходном файле\n",
" for row in reader:\n",
" # Записываем строку в выходной файл\n",
" print(row)\n",
" writer.writerow(row)\n",
"\n",
"print(f\"Данные успешно обработаны и сохранены в {output_file}\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "caf7679f",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "97cfbd11",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

@ -1,5 +1,5 @@
# Training params # Training params
epoch : 10 epoch : 5
batch_size : 4 batch_size : 4
num_workers: 8 num_workers: 8
limit : 5 limit : 5
@ -16,5 +16,5 @@ loss_function :
# Scheduler # Scheduler
scheduler : scheduler :
name : torch.optim.lr_scheduler.StepLR name : torch.optim.lr_scheduler.StepLR
gamma : 0.01 gamma : 0.15
step_size : 10 step_size : 3

@ -1,964 +0,0 @@
file_name
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1261.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_333.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_53.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_933.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_81.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_193.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_419.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1440.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_501.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_475.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_981.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_837.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_880.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_150.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1802.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_363.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_360.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_161.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_199.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_43.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1275.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_54.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_833.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_459.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1814.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_338.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_451.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_414.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_968.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_328.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1243.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_64.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_8.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1826.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_444.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_842.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_779.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_847.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1250.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_903.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_455.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_406.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_778.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1341.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_751.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_44.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_511.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_743.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_888.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_497.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1805.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1821.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_194.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_875.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1279.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_25.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_366.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_885.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_912.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_473.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_828.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_740.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_492.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1455.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_97.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1357.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_135.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1292.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1778.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_483.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_493.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_21.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_498.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_973.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_373.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_907.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1380.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1329.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_958.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_860.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_179.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1818.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_49.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_780.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_314.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_951.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1427.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_756.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_400.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_307.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_99.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_89.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1255.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1378.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_389.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_770.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_446.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_437.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_937.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_369.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_883.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_499.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_515.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1372.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_128.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_476.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_915.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1286.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_959.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_61.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_832.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_836.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1823.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1807.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1409.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1245.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_929.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_336.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_433.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1320.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1825.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_935.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1801.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_500.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1309.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_480.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_442.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1267.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_965.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_412.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1405.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1343.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_416.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1411.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_417.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_384.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_116.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_491.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1434.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_733.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1448.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_471.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1780.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1340.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_144.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_126.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_140.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_859.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1333.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_784.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1824.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_5.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_4.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_36.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_908.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_477.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_801.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_466.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_109.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_824.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_825.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_16.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_771.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1373.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1314.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_900.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_404.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_808.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_441.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_435.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_881.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1235.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1306.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_797.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_851.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1307.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_130.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_330.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_826.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_159.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1244.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_149.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_66.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_760.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1812.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1797.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1226.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_308.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1330.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_465.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_753.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_931.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_821.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_205.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_69.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_90.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1442.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1392.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1410.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1456.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_35.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_168.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1257.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_479.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_869.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1384.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_458.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_754.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_984.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_979.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_735.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_325.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1272.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_985.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_834.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1280.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_85.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_884.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1241.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_42.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1274.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1349.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_827.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1396.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_502.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1789.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_899.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1297.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_142.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1352.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1772.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1435.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_844.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_153.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_70.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1777.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1326.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_909.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_157.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1438.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_349.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_204.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_403.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_347.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_861.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1385.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_20.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1822.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_310.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_505.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_858.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_344.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1322.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_445.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_134.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1381.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_852.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_391.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_341.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_960.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_901.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_758.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_831.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_507.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1429.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_486.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1783.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_878.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_132.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_450.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_164.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_320.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_434.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_197.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1369.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_350.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_854.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_12.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_358.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1779.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_313.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_790.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1315.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1360.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_795.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_469.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_764.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1334.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_916.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_38.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_440.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_383.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_180.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1398.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_169.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1449.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_773.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_430.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_806.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_815.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_729.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1236.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_864.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_346.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_944.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_72.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1366.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1246.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_156.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_22.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_182.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_68.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_882.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_106.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_186.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_810.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_436.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_27.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_478.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_848.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1231.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1337.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1324.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_845.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_387.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_438.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_129.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_814.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1239.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_332.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1294.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1444.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_902.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1224.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_18.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_28.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_474.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_971.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1412.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_23.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1262.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_335.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1785.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_898.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1356.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_362.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1443.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_396.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_381.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_13.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_58.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_408.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_51.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_811.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_393.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_65.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1281.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_407.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_490.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1273.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1424.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1269.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1259.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_983.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1790.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1339.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_9.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_113.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_425.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_146.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1225.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1445.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_356.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_399.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1287.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1342.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1382.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_829.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_772.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_865.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_187.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_46.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1348.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1303.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_203.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_911.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_122.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_482.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1419.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_942.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1408.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_820.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_105.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1828.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1436.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_120.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_736.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_429.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1403.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1452.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_467.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1251.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_422.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_319.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_495.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_956.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1776.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_83.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_966.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_781.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_428.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_452.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_37.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_755.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_757.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_30.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_155.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_786.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1389.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_78.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_111.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_809.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_131.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_361.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_782.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1371.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_962.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_928.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1407.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_930.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_463.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1361.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_424.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_394.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1390.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1377.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_472.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_411.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1454.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1238.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1282.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_886.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_812.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1256.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_862.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_787.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1794.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1325.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1432.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1363.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_67.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_76.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1800.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_410.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1816.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_817.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_785.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1304.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_2.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1283.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_59.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_950.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1817.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1295.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_379.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_374.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_192.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_342.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_974.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_73.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_800.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1317.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1383.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1331.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_167.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_891.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_3.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_160.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_201.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1347.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1323.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_513.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_481.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_162.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_896.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_439.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_367.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_506.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_166.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1827.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_206.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1387.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1299.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_910.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_395.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_124.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1451.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_352.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_29.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_857.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_94.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_747.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_202.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_62.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_165.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_955.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_40.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1417.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_10.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_200.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_863.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_151.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_462.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_39.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_976.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_895.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1811.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_55.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_110.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1351.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1300.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1426.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_485.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_34.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1254.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_893.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_191.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_849.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_431.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1242.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_121.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_101.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1420.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_60.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_207.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_119.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_783.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_92.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_748.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_823.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_334.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1370.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_957.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1284.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1365.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1368.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_329.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_514.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_98.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_830.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1804.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_954.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1264.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1414.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_376.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_775.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_388.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_163.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_324.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1327.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1318.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_917.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1290.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_972.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1437.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_26.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_876.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_759.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_918.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_835.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_850.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_32.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_802.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1277.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_74.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_734.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_742.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_977.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_923.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_108.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_327.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_807.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_114.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1319.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_91.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_198.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_813.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_368.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_461.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_796.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_426.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_326.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1421.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1311.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_749.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_19.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1379.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1397.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_453.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_96.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_33.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1271.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_402.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_311.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1345.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_970.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_93.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1815.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_88.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_371.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_767.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_975.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_372.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_938.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_853.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_894.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_79.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_752.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1404.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1353.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_732.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_184.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_323.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_961.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1258.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_792.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_777.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_765.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1316.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_107.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_147.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_804.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_304.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_978.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_762.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_840.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1228.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1232.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1302.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_148.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1792.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_351.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_154.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1313.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_949.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1268.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1781.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_185.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_731.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_741.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1293.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1233.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_138.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_737.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1346.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_488.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1394.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_7.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_927.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_871.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_943.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_941.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_868.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_45.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_468.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_774.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_48.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_919.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1820.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1431.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_504.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1796.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1810.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_353.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_738.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_322.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_82.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1237.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_136.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_87.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_380.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_897.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1400.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_17.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_95.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_143.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_791.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1799.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_924.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_343.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_867.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_872.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_370.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1375.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1247.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1344.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_123.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1406.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_139.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_24.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_874.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1782.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_822.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_102.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1386.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_302.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_0.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_71.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_856.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1321.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_421.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1775.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1430.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_460.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1332.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_873.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1355.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_409.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_397.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_905.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_727.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_117.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_805.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1788.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_398.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1359.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1301.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1252.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1362.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_57.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_420.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_382.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_793.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_127.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1803.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_103.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_879.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_945.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1308.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_798.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_789.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_359.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1358.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1374.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_63.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1376.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_510.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_969.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_494.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_11.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_50.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_375.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1266.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_77.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1447.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1441.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1336.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_443.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_390.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1270.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_803.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_385.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_321.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1439.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_354.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_470.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1401.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_337.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_746.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1248.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_305.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_115.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_75.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_904.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_769.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1457.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_183.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1263.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_331.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_345.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_952.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1249.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_6.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_889.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_31.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1305.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_315.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_750.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_301.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1422.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_137.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1298.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1253.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1230.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_866.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_982.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_364.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_763.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_418.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_348.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_449.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1354.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1388.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1819.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1415.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1291.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_340.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1791.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_925.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_14.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_15.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_41.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_766.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_892.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_788.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_312.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_355.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1829.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1278.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1260.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_946.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1350.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_84.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_306.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_100.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_118.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_52.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_196.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_303.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_181.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1786.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_739.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_309.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1798.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_508.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_152.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_489.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_887.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_794.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_86.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1806.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_843.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_457.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_819.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_768.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1402.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_934.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_838.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_339.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_378.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1335.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_914.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1453.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1425.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1240.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_940.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_846.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_456.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_920.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1423.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_906.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_744.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1793.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_145.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_936.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1310.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1229.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1446.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_487.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_405.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1338.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1393.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1413.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_503.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_730.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_454.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_377.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_728.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_818.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_415.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1328.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_980.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1265.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_447.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_496.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_855.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_745.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_316.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_401.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_816.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_932.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_509.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1296.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1433.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1774.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1809.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_158.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_464.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_761.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1288.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_922.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_413.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_392.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1289.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_141.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_133.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1450.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_967.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_877.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1773.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_125.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_365.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_318.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1367.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_841.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_776.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_178.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1813.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_512.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_953.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1787.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_47.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_926.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1808.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_317.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_484.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_357.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_947.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_839.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1285.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1234.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_799.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1784.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_432.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_56.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1395.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_104.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_870.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_963.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_427.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_423.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1428.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_386.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_913.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1364.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_939.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1416.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1418.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_948.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_112.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_195.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1391.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1795.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_921.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_80.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1312.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1276.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1227.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1399.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_448.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_964.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_890.npy.npy
1 file_name
2 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1261.npy.npy
3 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_333.npy.npy
4 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_53.npy.npy
5 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_933.npy.npy
6 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_81.npy.npy
7 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_193.npy.npy
8 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_419.npy.npy
9 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1440.npy.npy
10 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_501.npy.npy
11 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_475.npy.npy
12 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_981.npy.npy
13 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_837.npy.npy
14 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_880.npy.npy
15 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_150.npy.npy
16 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1802.npy.npy
17 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_363.npy.npy
18 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_360.npy.npy
19 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_161.npy.npy
20 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_199.npy.npy
21 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_43.npy.npy
22 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1275.npy.npy
23 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_54.npy.npy
24 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_833.npy.npy
25 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_459.npy.npy
26 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1814.npy.npy
27 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_338.npy.npy
28 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_451.npy.npy
29 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_414.npy.npy
30 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_968.npy.npy
31 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_328.npy.npy
32 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1243.npy.npy
33 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_64.npy.npy
34 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_8.npy.npy
35 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1826.npy.npy
36 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_444.npy.npy
37 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_842.npy.npy
38 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_779.npy.npy
39 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_847.npy.npy
40 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1250.npy.npy
41 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_903.npy.npy
42 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_455.npy.npy
43 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_406.npy.npy
44 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_778.npy.npy
45 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1341.npy.npy
46 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_751.npy.npy
47 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_44.npy.npy
48 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_511.npy.npy
49 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_743.npy.npy
50 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_888.npy.npy
51 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_497.npy.npy
52 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1805.npy.npy
53 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1821.npy.npy
54 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_194.npy.npy
55 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_875.npy.npy
56 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1279.npy.npy
57 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_25.npy.npy
58 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_366.npy.npy
59 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_885.npy.npy
60 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_912.npy.npy
61 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_473.npy.npy
62 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_828.npy.npy
63 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_740.npy.npy
64 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_492.npy.npy
65 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1455.npy.npy
66 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_97.npy.npy
67 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1357.npy.npy
68 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_135.npy.npy
69 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1292.npy.npy
70 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1778.npy.npy
71 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_483.npy.npy
72 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_493.npy.npy
73 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_21.npy.npy
74 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_498.npy.npy
75 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_973.npy.npy
76 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_373.npy.npy
77 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_907.npy.npy
78 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1380.npy.npy
79 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1329.npy.npy
80 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_958.npy.npy
81 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_860.npy.npy
82 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_179.npy.npy
83 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1818.npy.npy
84 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_49.npy.npy
85 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_780.npy.npy
86 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_314.npy.npy
87 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_951.npy.npy
88 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1427.npy.npy
89 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_756.npy.npy
90 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_400.npy.npy
91 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_307.npy.npy
92 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_99.npy.npy
93 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_89.npy.npy
94 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1255.npy.npy
95 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1378.npy.npy
96 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_389.npy.npy
97 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_770.npy.npy
98 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_446.npy.npy
99 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_437.npy.npy
100 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_937.npy.npy
101 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_369.npy.npy
102 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_883.npy.npy
103 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_499.npy.npy
104 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_515.npy.npy
105 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1372.npy.npy
106 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_128.npy.npy
107 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_476.npy.npy
108 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_915.npy.npy
109 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1286.npy.npy
110 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_959.npy.npy
111 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_61.npy.npy
112 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_832.npy.npy
113 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_836.npy.npy
114 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1823.npy.npy
115 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1807.npy.npy
116 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1409.npy.npy
117 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1245.npy.npy
118 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_929.npy.npy
119 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_336.npy.npy
120 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_433.npy.npy
121 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1320.npy.npy
122 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1825.npy.npy
123 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_935.npy.npy
124 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1801.npy.npy
125 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_500.npy.npy
126 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1309.npy.npy
127 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_480.npy.npy
128 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_442.npy.npy
129 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1267.npy.npy
130 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_965.npy.npy
131 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_412.npy.npy
132 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1405.npy.npy
133 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1343.npy.npy
134 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_416.npy.npy
135 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1411.npy.npy
136 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_417.npy.npy
137 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_384.npy.npy
138 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_116.npy.npy
139 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_491.npy.npy
140 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1434.npy.npy
141 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_733.npy.npy
142 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1448.npy.npy
143 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_471.npy.npy
144 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1780.npy.npy
145 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1340.npy.npy
146 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_144.npy.npy
147 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_126.npy.npy
148 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_140.npy.npy
149 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_859.npy.npy
150 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1333.npy.npy
151 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_784.npy.npy
152 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1824.npy.npy
153 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_5.npy.npy
154 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_4.npy.npy
155 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_36.npy.npy
156 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_908.npy.npy
157 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_477.npy.npy
158 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_801.npy.npy
159 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_466.npy.npy
160 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_109.npy.npy
161 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_824.npy.npy
162 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_825.npy.npy
163 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_16.npy.npy
164 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_771.npy.npy
165 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1373.npy.npy
166 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1314.npy.npy
167 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_900.npy.npy
168 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_404.npy.npy
169 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_808.npy.npy
170 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_441.npy.npy
171 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_435.npy.npy
172 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_881.npy.npy
173 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1235.npy.npy
174 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1306.npy.npy
175 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_797.npy.npy
176 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_851.npy.npy
177 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1307.npy.npy
178 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_130.npy.npy
179 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_330.npy.npy
180 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_826.npy.npy
181 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_159.npy.npy
182 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1244.npy.npy
183 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_149.npy.npy
184 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_66.npy.npy
185 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_760.npy.npy
186 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1812.npy.npy
187 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1797.npy.npy
188 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1226.npy.npy
189 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_308.npy.npy
190 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1330.npy.npy
191 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_465.npy.npy
192 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_753.npy.npy
193 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_931.npy.npy
194 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_821.npy.npy
195 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_205.npy.npy
196 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_69.npy.npy
197 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_90.npy.npy
198 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1442.npy.npy
199 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1392.npy.npy
200 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1410.npy.npy
201 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1456.npy.npy
202 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_35.npy.npy
203 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_168.npy.npy
204 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1257.npy.npy
205 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_479.npy.npy
206 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_869.npy.npy
207 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1384.npy.npy
208 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_458.npy.npy
209 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_754.npy.npy
210 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_984.npy.npy
211 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_979.npy.npy
212 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_735.npy.npy
213 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_325.npy.npy
214 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1272.npy.npy
215 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_985.npy.npy
216 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_834.npy.npy
217 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1280.npy.npy
218 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_85.npy.npy
219 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_884.npy.npy
220 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1241.npy.npy
221 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_42.npy.npy
222 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1274.npy.npy
223 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1349.npy.npy
224 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_827.npy.npy
225 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1396.npy.npy
226 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_502.npy.npy
227 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1789.npy.npy
228 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_899.npy.npy
229 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1297.npy.npy
230 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_142.npy.npy
231 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1352.npy.npy
232 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1772.npy.npy
233 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1435.npy.npy
234 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_844.npy.npy
235 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_153.npy.npy
236 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_70.npy.npy
237 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1777.npy.npy
238 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1326.npy.npy
239 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_909.npy.npy
240 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_157.npy.npy
241 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1438.npy.npy
242 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_349.npy.npy
243 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_204.npy.npy
244 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_403.npy.npy
245 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_347.npy.npy
246 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_861.npy.npy
247 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1385.npy.npy
248 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_20.npy.npy
249 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1822.npy.npy
250 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_310.npy.npy
251 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_505.npy.npy
252 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_858.npy.npy
253 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_344.npy.npy
254 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1322.npy.npy
255 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_445.npy.npy
256 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_134.npy.npy
257 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1381.npy.npy
258 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_852.npy.npy
259 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_391.npy.npy
260 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_341.npy.npy
261 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_960.npy.npy
262 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_901.npy.npy
263 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_758.npy.npy
264 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_831.npy.npy
265 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_507.npy.npy
266 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1429.npy.npy
267 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_486.npy.npy
268 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1783.npy.npy
269 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_878.npy.npy
270 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_132.npy.npy
271 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_450.npy.npy
272 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_164.npy.npy
273 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_320.npy.npy
274 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_434.npy.npy
275 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_197.npy.npy
276 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1369.npy.npy
277 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_350.npy.npy
278 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_854.npy.npy
279 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_12.npy.npy
280 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_358.npy.npy
281 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1779.npy.npy
282 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_313.npy.npy
283 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_790.npy.npy
284 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1315.npy.npy
285 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1360.npy.npy
286 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_795.npy.npy
287 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_469.npy.npy
288 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_764.npy.npy
289 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1334.npy.npy
290 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_916.npy.npy
291 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_38.npy.npy
292 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_440.npy.npy
293 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_383.npy.npy
294 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_180.npy.npy
295 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1398.npy.npy
296 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_169.npy.npy
297 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1449.npy.npy
298 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_773.npy.npy
299 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_430.npy.npy
300 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_806.npy.npy
301 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_815.npy.npy
302 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_729.npy.npy
303 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1236.npy.npy
304 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_864.npy.npy
305 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_346.npy.npy
306 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_944.npy.npy
307 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_72.npy.npy
308 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1366.npy.npy
309 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1246.npy.npy
310 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_156.npy.npy
311 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_22.npy.npy
312 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_182.npy.npy
313 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_68.npy.npy
314 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_882.npy.npy
315 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_106.npy.npy
316 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_186.npy.npy
317 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_810.npy.npy
318 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_436.npy.npy
319 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_27.npy.npy
320 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_478.npy.npy
321 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_848.npy.npy
322 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1231.npy.npy
323 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1337.npy.npy
324 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1324.npy.npy
325 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_845.npy.npy
326 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_387.npy.npy
327 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_438.npy.npy
328 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_129.npy.npy
329 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_814.npy.npy
330 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1239.npy.npy
331 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_332.npy.npy
332 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1294.npy.npy
333 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1444.npy.npy
334 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_902.npy.npy
335 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1224.npy.npy
336 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_18.npy.npy
337 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_28.npy.npy
338 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_474.npy.npy
339 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_971.npy.npy
340 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1412.npy.npy
341 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_23.npy.npy
342 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1262.npy.npy
343 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_335.npy.npy
344 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1785.npy.npy
345 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_898.npy.npy
346 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1356.npy.npy
347 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_362.npy.npy
348 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1443.npy.npy
349 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_396.npy.npy
350 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_381.npy.npy
351 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_13.npy.npy
352 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_58.npy.npy
353 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_408.npy.npy
354 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_51.npy.npy
355 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_811.npy.npy
356 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_393.npy.npy
357 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_65.npy.npy
358 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1281.npy.npy
359 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_407.npy.npy
360 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_490.npy.npy
361 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1273.npy.npy
362 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1424.npy.npy
363 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1269.npy.npy
364 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1259.npy.npy
365 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_983.npy.npy
366 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1790.npy.npy
367 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1339.npy.npy
368 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_9.npy.npy
369 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_113.npy.npy
370 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_425.npy.npy
371 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_146.npy.npy
372 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1225.npy.npy
373 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1445.npy.npy
374 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_356.npy.npy
375 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_399.npy.npy
376 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1287.npy.npy
377 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1342.npy.npy
378 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1382.npy.npy
379 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_829.npy.npy
380 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_772.npy.npy
381 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_865.npy.npy
382 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_187.npy.npy
383 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_46.npy.npy
384 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1348.npy.npy
385 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1303.npy.npy
386 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_203.npy.npy
387 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_911.npy.npy
388 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_122.npy.npy
389 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_482.npy.npy
390 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1419.npy.npy
391 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_942.npy.npy
392 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1408.npy.npy
393 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_820.npy.npy
394 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_105.npy.npy
395 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1828.npy.npy
396 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1436.npy.npy
397 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_120.npy.npy
398 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_736.npy.npy
399 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_429.npy.npy
400 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1403.npy.npy
401 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1452.npy.npy
402 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_467.npy.npy
403 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1251.npy.npy
404 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_422.npy.npy
405 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_319.npy.npy
406 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_495.npy.npy
407 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_956.npy.npy
408 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1776.npy.npy
409 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_83.npy.npy
410 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_966.npy.npy
411 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_781.npy.npy
412 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_428.npy.npy
413 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_452.npy.npy
414 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_37.npy.npy
415 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_755.npy.npy
416 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_757.npy.npy
417 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_30.npy.npy
418 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_155.npy.npy
419 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_786.npy.npy
420 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1389.npy.npy
421 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_78.npy.npy
422 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_111.npy.npy
423 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_809.npy.npy
424 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_131.npy.npy
425 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_361.npy.npy
426 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_782.npy.npy
427 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1371.npy.npy
428 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_962.npy.npy
429 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_928.npy.npy
430 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1407.npy.npy
431 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_930.npy.npy
432 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_463.npy.npy
433 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1361.npy.npy
434 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_424.npy.npy
435 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_394.npy.npy
436 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1390.npy.npy
437 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1377.npy.npy
438 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_472.npy.npy
439 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_411.npy.npy
440 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1454.npy.npy
441 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1238.npy.npy
442 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1282.npy.npy
443 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_886.npy.npy
444 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_812.npy.npy
445 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1256.npy.npy
446 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_862.npy.npy
447 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_787.npy.npy
448 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1794.npy.npy
449 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1325.npy.npy
450 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1432.npy.npy
451 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1363.npy.npy
452 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_67.npy.npy
453 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_76.npy.npy
454 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1800.npy.npy
455 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_410.npy.npy
456 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1816.npy.npy
457 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_817.npy.npy
458 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_785.npy.npy
459 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1304.npy.npy
460 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_2.npy.npy
461 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1283.npy.npy
462 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_59.npy.npy
463 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_950.npy.npy
464 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1817.npy.npy
465 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1295.npy.npy
466 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_379.npy.npy
467 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_374.npy.npy
468 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_192.npy.npy
469 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_342.npy.npy
470 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_974.npy.npy
471 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_73.npy.npy
472 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_800.npy.npy
473 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1317.npy.npy
474 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1383.npy.npy
475 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1331.npy.npy
476 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_167.npy.npy
477 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_891.npy.npy
478 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_3.npy.npy
479 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_160.npy.npy
480 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_201.npy.npy
481 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1347.npy.npy
482 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1323.npy.npy
483 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_513.npy.npy
484 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_481.npy.npy
485 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_162.npy.npy
486 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_896.npy.npy
487 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_439.npy.npy
488 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_367.npy.npy
489 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_506.npy.npy
490 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_166.npy.npy
491 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1827.npy.npy
492 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_206.npy.npy
493 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1387.npy.npy
494 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1299.npy.npy
495 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_910.npy.npy
496 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_395.npy.npy
497 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_124.npy.npy
498 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1451.npy.npy
499 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_352.npy.npy
500 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_29.npy.npy
501 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_857.npy.npy
502 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_94.npy.npy
503 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_747.npy.npy
504 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_202.npy.npy
505 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_62.npy.npy
506 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_165.npy.npy
507 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_955.npy.npy
508 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_40.npy.npy
509 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1417.npy.npy
510 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_10.npy.npy
511 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_200.npy.npy
512 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_863.npy.npy
513 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_151.npy.npy
514 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_462.npy.npy
515 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_39.npy.npy
516 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_976.npy.npy
517 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_895.npy.npy
518 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1811.npy.npy
519 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_55.npy.npy
520 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_110.npy.npy
521 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1351.npy.npy
522 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1300.npy.npy
523 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1426.npy.npy
524 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_485.npy.npy
525 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_34.npy.npy
526 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1254.npy.npy
527 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_893.npy.npy
528 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_191.npy.npy
529 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_849.npy.npy
530 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_431.npy.npy
531 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1242.npy.npy
532 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_121.npy.npy
533 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_101.npy.npy
534 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1420.npy.npy
535 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_60.npy.npy
536 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_207.npy.npy
537 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_119.npy.npy
538 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_783.npy.npy
539 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_92.npy.npy
540 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_748.npy.npy
541 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_823.npy.npy
542 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_334.npy.npy
543 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1370.npy.npy
544 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_957.npy.npy
545 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1284.npy.npy
546 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1365.npy.npy
547 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1368.npy.npy
548 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_329.npy.npy
549 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_514.npy.npy
550 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_98.npy.npy
551 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_830.npy.npy
552 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1804.npy.npy
553 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_954.npy.npy
554 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1264.npy.npy
555 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1414.npy.npy
556 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_376.npy.npy
557 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_775.npy.npy
558 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_388.npy.npy
559 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_163.npy.npy
560 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_324.npy.npy
561 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1327.npy.npy
562 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1318.npy.npy
563 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_917.npy.npy
564 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1290.npy.npy
565 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_972.npy.npy
566 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1437.npy.npy
567 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_26.npy.npy
568 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_876.npy.npy
569 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_759.npy.npy
570 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_918.npy.npy
571 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_835.npy.npy
572 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_850.npy.npy
573 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_32.npy.npy
574 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_802.npy.npy
575 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1277.npy.npy
576 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_74.npy.npy
577 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_734.npy.npy
578 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_742.npy.npy
579 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_977.npy.npy
580 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_923.npy.npy
581 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_108.npy.npy
582 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_327.npy.npy
583 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_807.npy.npy
584 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_114.npy.npy
585 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1319.npy.npy
586 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_91.npy.npy
587 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_198.npy.npy
588 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_813.npy.npy
589 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_368.npy.npy
590 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_461.npy.npy
591 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_796.npy.npy
592 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_426.npy.npy
593 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_326.npy.npy
594 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1421.npy.npy
595 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1311.npy.npy
596 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_749.npy.npy
597 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_19.npy.npy
598 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1379.npy.npy
599 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1397.npy.npy
600 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_453.npy.npy
601 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_96.npy.npy
602 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_33.npy.npy
603 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1271.npy.npy
604 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_402.npy.npy
605 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_311.npy.npy
606 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1345.npy.npy
607 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_970.npy.npy
608 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_93.npy.npy
609 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1815.npy.npy
610 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_88.npy.npy
611 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_371.npy.npy
612 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_767.npy.npy
613 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_975.npy.npy
614 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_372.npy.npy
615 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_938.npy.npy
616 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_853.npy.npy
617 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_894.npy.npy
618 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_79.npy.npy
619 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_752.npy.npy
620 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1404.npy.npy
621 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1353.npy.npy
622 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_732.npy.npy
623 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_184.npy.npy
624 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_323.npy.npy
625 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_961.npy.npy
626 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1258.npy.npy
627 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_792.npy.npy
628 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_777.npy.npy
629 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_765.npy.npy
630 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1316.npy.npy
631 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_107.npy.npy
632 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_147.npy.npy
633 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_804.npy.npy
634 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_304.npy.npy
635 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_978.npy.npy
636 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_762.npy.npy
637 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_840.npy.npy
638 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1228.npy.npy
639 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1232.npy.npy
640 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1302.npy.npy
641 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_148.npy.npy
642 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1792.npy.npy
643 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_351.npy.npy
644 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_154.npy.npy
645 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1313.npy.npy
646 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_949.npy.npy
647 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1268.npy.npy
648 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1781.npy.npy
649 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_185.npy.npy
650 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_731.npy.npy
651 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_741.npy.npy
652 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1293.npy.npy
653 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1233.npy.npy
654 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_138.npy.npy
655 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_737.npy.npy
656 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1346.npy.npy
657 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_488.npy.npy
658 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1394.npy.npy
659 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_7.npy.npy
660 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_927.npy.npy
661 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_871.npy.npy
662 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_943.npy.npy
663 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_941.npy.npy
664 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_868.npy.npy
665 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_45.npy.npy
666 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_468.npy.npy
667 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_774.npy.npy
668 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_48.npy.npy
669 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_919.npy.npy
670 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1820.npy.npy
671 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1431.npy.npy
672 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_504.npy.npy
673 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1796.npy.npy
674 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1810.npy.npy
675 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_353.npy.npy
676 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_738.npy.npy
677 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_322.npy.npy
678 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_82.npy.npy
679 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1237.npy.npy
680 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_136.npy.npy
681 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_87.npy.npy
682 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_380.npy.npy
683 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_897.npy.npy
684 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1400.npy.npy
685 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_17.npy.npy
686 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_95.npy.npy
687 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_143.npy.npy
688 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_791.npy.npy
689 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1799.npy.npy
690 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_924.npy.npy
691 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_343.npy.npy
692 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_867.npy.npy
693 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_872.npy.npy
694 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_370.npy.npy
695 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1375.npy.npy
696 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1247.npy.npy
697 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1344.npy.npy
698 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_123.npy.npy
699 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1406.npy.npy
700 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_139.npy.npy
701 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_24.npy.npy
702 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_874.npy.npy
703 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1782.npy.npy
704 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_822.npy.npy
705 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_102.npy.npy
706 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1386.npy.npy
707 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_302.npy.npy
708 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_0.npy.npy
709 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_71.npy.npy
710 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_856.npy.npy
711 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1321.npy.npy
712 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_421.npy.npy
713 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1775.npy.npy
714 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1430.npy.npy
715 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_460.npy.npy
716 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1332.npy.npy
717 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_873.npy.npy
718 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1355.npy.npy
719 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_409.npy.npy
720 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_397.npy.npy
721 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_905.npy.npy
722 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_727.npy.npy
723 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_117.npy.npy
724 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_805.npy.npy
725 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1788.npy.npy
726 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_398.npy.npy
727 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1359.npy.npy
728 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1301.npy.npy
729 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1252.npy.npy
730 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1362.npy.npy
731 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_57.npy.npy
732 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_420.npy.npy
733 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_382.npy.npy
734 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_793.npy.npy
735 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_127.npy.npy
736 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1803.npy.npy
737 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_103.npy.npy
738 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_879.npy.npy
739 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_945.npy.npy
740 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1308.npy.npy
741 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_798.npy.npy
742 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_789.npy.npy
743 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_359.npy.npy
744 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1358.npy.npy
745 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1374.npy.npy
746 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_63.npy.npy
747 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1376.npy.npy
748 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_510.npy.npy
749 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_969.npy.npy
750 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_494.npy.npy
751 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_11.npy.npy
752 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_50.npy.npy
753 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_375.npy.npy
754 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1266.npy.npy
755 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_77.npy.npy
756 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1447.npy.npy
757 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1441.npy.npy
758 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1336.npy.npy
759 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_443.npy.npy
760 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_390.npy.npy
761 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1270.npy.npy
762 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_803.npy.npy
763 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_385.npy.npy
764 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_321.npy.npy
765 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1439.npy.npy
766 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_354.npy.npy
767 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_470.npy.npy
768 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1401.npy.npy
769 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_337.npy.npy
770 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_746.npy.npy
771 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1248.npy.npy
772 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_305.npy.npy
773 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_115.npy.npy
774 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_75.npy.npy
775 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_904.npy.npy
776 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_769.npy.npy
777 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1457.npy.npy
778 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_183.npy.npy
779 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1263.npy.npy
780 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_331.npy.npy
781 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_345.npy.npy
782 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_952.npy.npy
783 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1249.npy.npy
784 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_6.npy.npy
785 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_889.npy.npy
786 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_31.npy.npy
787 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1305.npy.npy
788 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_315.npy.npy
789 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_750.npy.npy
790 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_301.npy.npy
791 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1422.npy.npy
792 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_137.npy.npy
793 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1298.npy.npy
794 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1253.npy.npy
795 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1230.npy.npy
796 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_866.npy.npy
797 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_982.npy.npy
798 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_364.npy.npy
799 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_763.npy.npy
800 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_418.npy.npy
801 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1.npy.npy
802 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_348.npy.npy
803 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_449.npy.npy
804 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1354.npy.npy
805 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1388.npy.npy
806 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1819.npy.npy
807 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1415.npy.npy
808 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1291.npy.npy
809 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_340.npy.npy
810 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1791.npy.npy
811 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_925.npy.npy
812 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_14.npy.npy
813 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_15.npy.npy
814 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_41.npy.npy
815 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_766.npy.npy
816 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_892.npy.npy
817 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_788.npy.npy
818 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_312.npy.npy
819 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_355.npy.npy
820 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1829.npy.npy
821 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1278.npy.npy
822 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1260.npy.npy
823 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_946.npy.npy
824 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1350.npy.npy
825 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_84.npy.npy
826 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_306.npy.npy
827 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_100.npy.npy
828 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_118.npy.npy
829 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_52.npy.npy
830 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_196.npy.npy
831 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_303.npy.npy
832 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_181.npy.npy
833 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1786.npy.npy
834 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_739.npy.npy
835 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_309.npy.npy
836 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1798.npy.npy
837 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_508.npy.npy
838 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_152.npy.npy
839 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_489.npy.npy
840 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_887.npy.npy
841 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_794.npy.npy
842 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_86.npy.npy
843 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1806.npy.npy
844 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_843.npy.npy
845 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_457.npy.npy
846 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_819.npy.npy
847 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_768.npy.npy
848 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1402.npy.npy
849 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_934.npy.npy
850 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_838.npy.npy
851 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_339.npy.npy
852 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_378.npy.npy
853 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1335.npy.npy
854 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_914.npy.npy
855 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1453.npy.npy
856 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1425.npy.npy
857 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1240.npy.npy
858 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_940.npy.npy
859 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_846.npy.npy
860 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_456.npy.npy
861 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_920.npy.npy
862 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1423.npy.npy
863 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_906.npy.npy
864 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_744.npy.npy
865 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1793.npy.npy
866 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_145.npy.npy
867 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_936.npy.npy
868 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1310.npy.npy
869 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1229.npy.npy
870 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1446.npy.npy
871 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_487.npy.npy
872 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_405.npy.npy
873 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1338.npy.npy
874 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1393.npy.npy
875 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1413.npy.npy
876 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_503.npy.npy
877 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_730.npy.npy
878 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_454.npy.npy
879 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_377.npy.npy
880 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_728.npy.npy
881 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_818.npy.npy
882 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_415.npy.npy
883 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1328.npy.npy
884 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_980.npy.npy
885 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1265.npy.npy
886 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_447.npy.npy
887 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_496.npy.npy
888 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_855.npy.npy
889 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_745.npy.npy
890 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_316.npy.npy
891 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_401.npy.npy
892 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_816.npy.npy
893 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_932.npy.npy
894 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_509.npy.npy
895 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1296.npy.npy
896 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1433.npy.npy
897 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1774.npy.npy
898 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1809.npy.npy
899 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_158.npy.npy
900 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_464.npy.npy
901 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_761.npy.npy
902 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1288.npy.npy
903 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_922.npy.npy
904 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_413.npy.npy
905 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_392.npy.npy
906 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1289.npy.npy
907 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_141.npy.npy
908 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_133.npy.npy
909 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1450.npy.npy
910 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_967.npy.npy
911 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_877.npy.npy
912 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1773.npy.npy
913 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_125.npy.npy
914 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_365.npy.npy
915 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_318.npy.npy
916 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1367.npy.npy
917 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_841.npy.npy
918 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_776.npy.npy
919 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_178.npy.npy
920 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1813.npy.npy
921 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_512.npy.npy
922 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_953.npy.npy
923 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1787.npy.npy
924 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_47.npy.npy
925 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_926.npy.npy
926 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1808.npy.npy
927 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_317.npy.npy
928 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_484.npy.npy
929 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_357.npy.npy
930 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_947.npy.npy
931 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_839.npy.npy
932 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1285.npy.npy
933 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1234.npy.npy
934 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_799.npy.npy
935 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1784.npy.npy
936 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_432.npy.npy
937 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_56.npy.npy
938 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1395.npy.npy
939 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_104.npy.npy
940 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_870.npy.npy
941 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_963.npy.npy
942 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_427.npy.npy
943 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_423.npy.npy
944 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1428.npy.npy
945 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_386.npy.npy
946 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_913.npy.npy
947 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1364.npy.npy
948 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_939.npy.npy
949 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1416.npy.npy
950 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1418.npy.npy
951 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_948.npy.npy
952 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_112.npy.npy
953 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_195.npy.npy
954 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1391.npy.npy
955 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1795.npy.npy
956 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_921.npy.npy
957 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_80.npy.npy
958 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1312.npy.npy
959 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1276.npy.npy
960 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1227.npy.npy
961 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1399.npy.npy
962 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_448.npy.npy
963 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_964.npy.npy
964 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_890.npy.npy

@ -1,964 +0,0 @@
file_name
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1258.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_890.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1780.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_362.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_166.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_754.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_780.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1401.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1811.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_854.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_178.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1804.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_818.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_441.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_372.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_333.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1304.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1799.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_428.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_506.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_163.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_497.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1411.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_425.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_459.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1358.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_482.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_968.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1337.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_496.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_842.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1353.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_808.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_90.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_961.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_128.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_32.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_474.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_918.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_738.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_964.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_135.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_744.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_883.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_162.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_316.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1395.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1280.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_764.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_866.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_835.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_479.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_783.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_151.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_838.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_779.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_909.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1237.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_943.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_156.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_311.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_8.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_806.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_402.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_481.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_962.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_50.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_819.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_421.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1447.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_200.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1362.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1446.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_805.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_832.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_14.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_13.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1373.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_371.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_515.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1444.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_797.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_326.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_929.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_180.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_917.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_955.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_827.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1805.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_184.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1386.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_21.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1440.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_420.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_795.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_345.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_504.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_114.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_375.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_383.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_954.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_355.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_849.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_817.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1292.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_386.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_191.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_467.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1414.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1404.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_824.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1775.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_946.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_739.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_36.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1308.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_382.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_462.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_123.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_390.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_387.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1807.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1406.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_353.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_446.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_912.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1423.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_951.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_429.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_887.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_937.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1824.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_830.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_348.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_424.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1431.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_380.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1393.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_131.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1230.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_411.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1227.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_320.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_899.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1416.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_67.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_182.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_907.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_765.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_406.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_939.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1425.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_352.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_126.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_15.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1343.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_407.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1409.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_748.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_72.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_106.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_816.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_511.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_392.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1823.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_360.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_404.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1389.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_92.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1275.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1364.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1336.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_882.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1298.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_31.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1817.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_510.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_144.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_314.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1347.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_330.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1344.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_760.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1787.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1399.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_306.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_388.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1369.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_44.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_729.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_340.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1809.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_98.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_80.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1352.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_847.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_139.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_401.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_47.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_860.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1436.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_821.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1428.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_397.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_449.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_329.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_845.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_99.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_39.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1786.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_303.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1357.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1360.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1264.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_447.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_746.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1410.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1330.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1814.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_75.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_958.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_349.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1417.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_494.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_53.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_960.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1225.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_86.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1795.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_919.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_37.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_452.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_498.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_859.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_341.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_57.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_444.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_136.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_507.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_508.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_374.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_395.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_898.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_980.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_485.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_42.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_851.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1327.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1350.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_470.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1276.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_204.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_321.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_758.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_920.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_83.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_34.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_186.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_776.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1248.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_751.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_207.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_130.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_502.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_38.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_361.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_736.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1260.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_886.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_196.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_367.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_158.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_319.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1412.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_179.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_843.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_796.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1351.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_74.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_430.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_893.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_500.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_159.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1813.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_801.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_873.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1374.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_152.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_51.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1449.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_343.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_62.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1290.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_30.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1398.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1456.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_941.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_9.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_458.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_59.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_837.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_435.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_307.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_120.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_793.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_60.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1257.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_185.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_457.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_503.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1403.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_804.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1437.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1310.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_85.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_305.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_150.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_137.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_863.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_985.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_2.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_836.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1300.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_164.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_813.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_768.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_865.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_913.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_318.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1778.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1287.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_914.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_923.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1822.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_756.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_488.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_512.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1796.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1321.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1777.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_111.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1311.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1421.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_761.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1808.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_16.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_869.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1328.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1326.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_398.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_461.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_23.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_875.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_168.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_433.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1251.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_921.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_165.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1812.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_928.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_335.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_133.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1235.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_342.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1245.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_456.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_489.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_115.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_463.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_143.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_149.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1323.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_206.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1791.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1241.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_978.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_325.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_877.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_472.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_774.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_902.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_938.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_377.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1246.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_358.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1265.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1453.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_740.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_499.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1319.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1450.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_925.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_426.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1256.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_922.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1429.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1296.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_789.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_142.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_187.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_45.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_413.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_916.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_49.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_391.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_0.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_181.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_91.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_344.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1339.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_61.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1826.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_731.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1402.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1806.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_769.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1281.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_192.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_28.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_116.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1259.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_312.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_417.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_811.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_369.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_767.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_448.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_932.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1232.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_743.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1371.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_895.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_434.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_878.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1419.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_427.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1819.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1262.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_466.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1366.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_905.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1438.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_778.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_455.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_880.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1427.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_927.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1242.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_495.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1443.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_953.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1375.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1789.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_112.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_834.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1279.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_96.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_803.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1293.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1228.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1354.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1334.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_867.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_831.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_442.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_464.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1377.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_966.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1372.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_889.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_897.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_40.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_900.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_101.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_825.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_436.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_22.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_408.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1829.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_965.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_117.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_65.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_840.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_812.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1324.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1783.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_122.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1305.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1793.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_393.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_844.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_105.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_205.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_41.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_826.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_766.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_940.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1828.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_981.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1779.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1396.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_141.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_302.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1384.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_87.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_203.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_876.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_104.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_734.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_870.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_460.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_25.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1413.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_107.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_926.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_815.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_450.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1773.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_437.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1782.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_931.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1294.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_351.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_947.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_888.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_728.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_422.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_118.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_157.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_147.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_901.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_95.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_792.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1355.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_416.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_19.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_791.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1238.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_892.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_17.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_759.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_983.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_93.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_509.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_109.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1239.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_800.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1309.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1359.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_755.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_957.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_322.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_952.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_84.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_129.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_119.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1333.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1307.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_323.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1397.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1253.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_451.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_752.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1381.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1435.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_100.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1442.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_194.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1340.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1301.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_338.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_195.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1229.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_378.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1394.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_486.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_833.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1408.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_385.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_346.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_747.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1289.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1451.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1233.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_336.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1356.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_948.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_20.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1269.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_959.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1317.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1341.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_807.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_58.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_52.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_432.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_839.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1422.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_782.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1801.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1810.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_313.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_33.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1297.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_443.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_331.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1378.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_125.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1342.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_27.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1430.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1790.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_862.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1338.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1254.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_477.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1426.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_492.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_872.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_820.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_110.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1236.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_868.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1348.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_772.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_108.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1303.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_737.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_405.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_423.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_794.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_394.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1313.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_970.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_77.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1452.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_790.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_483.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_82.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_490.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_121.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1800.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1792.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1325.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1306.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_359.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1277.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_484.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_468.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_410.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_160.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1231.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_473.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_493.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_809.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_858.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_373.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_788.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_969.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_911.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_802.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_975.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_846.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1434.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_94.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1244.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_950.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_505.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1240.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1424.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_69.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_379.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_749.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_885.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_71.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_10.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_350.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_376.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_810.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_967.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_347.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_785.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_370.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1314.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_140.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_852.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_848.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_487.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_54.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_24.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1266.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_148.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_763.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1252.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_798.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_29.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_97.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1335.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1415.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_88.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_841.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1827.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_183.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_514.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_963.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1433.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_727.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1295.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_202.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1255.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_735.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_786.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_480.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1250.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_366.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_414.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_103.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1349.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1261.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1391.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_364.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_363.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_56.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1286.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1267.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_879.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1785.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_864.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1821.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_12.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1263.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_5.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1322.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_770.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_412.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_368.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1400.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_757.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1802.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_935.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_155.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1302.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_43.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1316.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_742.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_339.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_146.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_18.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_198.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1270.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_134.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_73.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1818.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_857.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_979.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1383.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_933.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1272.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1284.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_903.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_357.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_945.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_465.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_356.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_400.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1291.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_419.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1772.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1388.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1318.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1346.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1370.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_773.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_891.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_332.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_127.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1788.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_750.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1382.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_384.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1420.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_753.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1249.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_102.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_7.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1278.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1361.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1455.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1784.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_781.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_822.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_469.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_762.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_874.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_324.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1243.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_984.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1224.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_775.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_396.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1407.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_942.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_310.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1331.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_513.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_501.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_894.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_930.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_491.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1797.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_169.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_476.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_977.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_46.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1815.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_777.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_944.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1441.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_973.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1798.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_881.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_850.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_915.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_853.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_787.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1376.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1320.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_6.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_956.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_55.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_328.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_855.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_784.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1445.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1803.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_949.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1329.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_884.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_403.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_138.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1345.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_68.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_389.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_445.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_934.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1282.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_301.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_936.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1439.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1283.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1781.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_478.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_828.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_733.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_365.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1271.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1299.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_418.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1363.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1457.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_3.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_317.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_315.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_475.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1454.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_76.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_193.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1268.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_337.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_976.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_908.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_48.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_124.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1332.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_26.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_896.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_910.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1387.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_439.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1367.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1226.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_145.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_167.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1448.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_354.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1390.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_70.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1273.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1288.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1405.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_201.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_982.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_829.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_906.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_64.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_304.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1825.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_161.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_741.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_924.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_113.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1432.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_399.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_4.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_454.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_814.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_972.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_861.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1774.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1368.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1315.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_199.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1794.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1274.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_89.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_381.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_153.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1380.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_81.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1385.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_440.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1816.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1418.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_904.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_823.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1379.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_799.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_732.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1285.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_308.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_154.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_11.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_438.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_309.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_415.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1365.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1247.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_856.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_453.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_971.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1820.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_431.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_471.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_197.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1776.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_409.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_327.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_66.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1234.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_771.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_35.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_132.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_974.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_871.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_334.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_78.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1312.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_745.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_79.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1392.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_730.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_63.npy.npy
1 file_name
2 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1258.npy.npy
3 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_890.npy.npy
4 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1780.npy.npy
5 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_362.npy.npy
6 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_166.npy.npy
7 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_754.npy.npy
8 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_780.npy.npy
9 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1401.npy.npy
10 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1811.npy.npy
11 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_854.npy.npy
12 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_178.npy.npy
13 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1804.npy.npy
14 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_818.npy.npy
15 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_441.npy.npy
16 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_372.npy.npy
17 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_333.npy.npy
18 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1304.npy.npy
19 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1799.npy.npy
20 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_428.npy.npy
21 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_506.npy.npy
22 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_163.npy.npy
23 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_497.npy.npy
24 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1411.npy.npy
25 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_425.npy.npy
26 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_459.npy.npy
27 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1358.npy.npy
28 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_482.npy.npy
29 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_968.npy.npy
30 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1337.npy.npy
31 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_496.npy.npy
32 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_842.npy.npy
33 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1353.npy.npy
34 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_808.npy.npy
35 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_90.npy.npy
36 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_961.npy.npy
37 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_128.npy.npy
38 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_32.npy.npy
39 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_474.npy.npy
40 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_918.npy.npy
41 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_738.npy.npy
42 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_964.npy.npy
43 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_135.npy.npy
44 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_744.npy.npy
45 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_883.npy.npy
46 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_162.npy.npy
47 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_316.npy.npy
48 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1395.npy.npy
49 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1280.npy.npy
50 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_764.npy.npy
51 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_866.npy.npy
52 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_835.npy.npy
53 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_479.npy.npy
54 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_783.npy.npy
55 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_151.npy.npy
56 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_838.npy.npy
57 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_779.npy.npy
58 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_909.npy.npy
59 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1237.npy.npy
60 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_943.npy.npy
61 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_156.npy.npy
62 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_311.npy.npy
63 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_8.npy.npy
64 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_806.npy.npy
65 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_402.npy.npy
66 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_481.npy.npy
67 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_962.npy.npy
68 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_50.npy.npy
69 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_819.npy.npy
70 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_421.npy.npy
71 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1447.npy.npy
72 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_200.npy.npy
73 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1362.npy.npy
74 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1446.npy.npy
75 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_805.npy.npy
76 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_832.npy.npy
77 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_14.npy.npy
78 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_13.npy.npy
79 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1373.npy.npy
80 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_371.npy.npy
81 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_515.npy.npy
82 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1444.npy.npy
83 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_797.npy.npy
84 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_326.npy.npy
85 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_929.npy.npy
86 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_180.npy.npy
87 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_917.npy.npy
88 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_955.npy.npy
89 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_827.npy.npy
90 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1805.npy.npy
91 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_184.npy.npy
92 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1386.npy.npy
93 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_21.npy.npy
94 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1440.npy.npy
95 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_420.npy.npy
96 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_795.npy.npy
97 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_345.npy.npy
98 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_504.npy.npy
99 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_114.npy.npy
100 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_375.npy.npy
101 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_383.npy.npy
102 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_954.npy.npy
103 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_355.npy.npy
104 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1.npy.npy
105 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_849.npy.npy
106 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_817.npy.npy
107 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1292.npy.npy
108 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_386.npy.npy
109 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_191.npy.npy
110 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_467.npy.npy
111 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1414.npy.npy
112 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1404.npy.npy
113 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_824.npy.npy
114 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1775.npy.npy
115 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_946.npy.npy
116 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_739.npy.npy
117 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_36.npy.npy
118 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1308.npy.npy
119 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_382.npy.npy
120 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_462.npy.npy
121 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_123.npy.npy
122 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_390.npy.npy
123 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_387.npy.npy
124 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1807.npy.npy
125 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1406.npy.npy
126 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_353.npy.npy
127 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_446.npy.npy
128 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_912.npy.npy
129 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1423.npy.npy
130 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_951.npy.npy
131 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_429.npy.npy
132 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_887.npy.npy
133 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_937.npy.npy
134 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1824.npy.npy
135 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_830.npy.npy
136 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_348.npy.npy
137 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_424.npy.npy
138 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1431.npy.npy
139 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_380.npy.npy
140 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1393.npy.npy
141 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_131.npy.npy
142 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1230.npy.npy
143 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_411.npy.npy
144 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1227.npy.npy
145 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_320.npy.npy
146 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_899.npy.npy
147 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1416.npy.npy
148 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_67.npy.npy
149 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_182.npy.npy
150 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_907.npy.npy
151 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_765.npy.npy
152 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_406.npy.npy
153 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_939.npy.npy
154 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1425.npy.npy
155 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_352.npy.npy
156 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_126.npy.npy
157 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_15.npy.npy
158 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1343.npy.npy
159 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_407.npy.npy
160 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1409.npy.npy
161 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_748.npy.npy
162 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_72.npy.npy
163 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_106.npy.npy
164 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_816.npy.npy
165 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_511.npy.npy
166 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_392.npy.npy
167 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1823.npy.npy
168 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_360.npy.npy
169 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_404.npy.npy
170 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1389.npy.npy
171 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_92.npy.npy
172 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1275.npy.npy
173 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1364.npy.npy
174 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1336.npy.npy
175 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_882.npy.npy
176 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1298.npy.npy
177 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_31.npy.npy
178 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1817.npy.npy
179 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_510.npy.npy
180 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_144.npy.npy
181 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_314.npy.npy
182 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1347.npy.npy
183 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_330.npy.npy
184 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1344.npy.npy
185 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_760.npy.npy
186 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1787.npy.npy
187 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1399.npy.npy
188 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_306.npy.npy
189 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_388.npy.npy
190 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1369.npy.npy
191 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_44.npy.npy
192 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_729.npy.npy
193 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_340.npy.npy
194 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1809.npy.npy
195 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_98.npy.npy
196 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_80.npy.npy
197 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1352.npy.npy
198 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_847.npy.npy
199 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_139.npy.npy
200 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_401.npy.npy
201 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_47.npy.npy
202 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_860.npy.npy
203 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1436.npy.npy
204 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_821.npy.npy
205 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1428.npy.npy
206 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_397.npy.npy
207 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_449.npy.npy
208 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_329.npy.npy
209 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_845.npy.npy
210 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_99.npy.npy
211 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_39.npy.npy
212 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1786.npy.npy
213 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_303.npy.npy
214 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1357.npy.npy
215 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1360.npy.npy
216 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1264.npy.npy
217 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_447.npy.npy
218 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_746.npy.npy
219 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1410.npy.npy
220 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1330.npy.npy
221 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1814.npy.npy
222 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_75.npy.npy
223 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_958.npy.npy
224 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_349.npy.npy
225 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1417.npy.npy
226 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_494.npy.npy
227 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_53.npy.npy
228 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_960.npy.npy
229 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1225.npy.npy
230 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_86.npy.npy
231 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1795.npy.npy
232 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_919.npy.npy
233 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_37.npy.npy
234 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_452.npy.npy
235 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_498.npy.npy
236 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_859.npy.npy
237 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_341.npy.npy
238 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_57.npy.npy
239 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_444.npy.npy
240 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_136.npy.npy
241 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_507.npy.npy
242 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_508.npy.npy
243 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_374.npy.npy
244 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_395.npy.npy
245 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_898.npy.npy
246 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_980.npy.npy
247 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_485.npy.npy
248 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_42.npy.npy
249 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_851.npy.npy
250 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1327.npy.npy
251 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1350.npy.npy
252 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_470.npy.npy
253 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1276.npy.npy
254 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_204.npy.npy
255 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_321.npy.npy
256 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_758.npy.npy
257 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_920.npy.npy
258 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_83.npy.npy
259 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_34.npy.npy
260 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_186.npy.npy
261 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_776.npy.npy
262 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1248.npy.npy
263 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_751.npy.npy
264 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_207.npy.npy
265 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_130.npy.npy
266 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_502.npy.npy
267 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_38.npy.npy
268 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_361.npy.npy
269 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_736.npy.npy
270 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1260.npy.npy
271 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_886.npy.npy
272 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_196.npy.npy
273 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_367.npy.npy
274 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_158.npy.npy
275 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_319.npy.npy
276 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1412.npy.npy
277 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_179.npy.npy
278 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_843.npy.npy
279 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_796.npy.npy
280 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1351.npy.npy
281 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_74.npy.npy
282 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_430.npy.npy
283 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_893.npy.npy
284 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_500.npy.npy
285 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_159.npy.npy
286 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1813.npy.npy
287 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_801.npy.npy
288 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_873.npy.npy
289 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1374.npy.npy
290 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_152.npy.npy
291 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_51.npy.npy
292 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1449.npy.npy
293 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_343.npy.npy
294 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_62.npy.npy
295 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1290.npy.npy
296 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_30.npy.npy
297 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1398.npy.npy
298 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1456.npy.npy
299 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_941.npy.npy
300 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_9.npy.npy
301 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_458.npy.npy
302 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_59.npy.npy
303 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_837.npy.npy
304 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_435.npy.npy
305 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_307.npy.npy
306 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_120.npy.npy
307 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_793.npy.npy
308 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_60.npy.npy
309 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1257.npy.npy
310 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_185.npy.npy
311 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_457.npy.npy
312 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_503.npy.npy
313 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1403.npy.npy
314 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_804.npy.npy
315 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1437.npy.npy
316 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1310.npy.npy
317 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_85.npy.npy
318 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_305.npy.npy
319 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_150.npy.npy
320 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_137.npy.npy
321 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_863.npy.npy
322 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_985.npy.npy
323 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_2.npy.npy
324 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_836.npy.npy
325 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1300.npy.npy
326 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_164.npy.npy
327 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_813.npy.npy
328 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_768.npy.npy
329 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_865.npy.npy
330 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_913.npy.npy
331 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_318.npy.npy
332 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1778.npy.npy
333 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1287.npy.npy
334 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_914.npy.npy
335 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_923.npy.npy
336 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1822.npy.npy
337 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_756.npy.npy
338 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_488.npy.npy
339 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_512.npy.npy
340 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1796.npy.npy
341 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1321.npy.npy
342 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1777.npy.npy
343 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_111.npy.npy
344 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1311.npy.npy
345 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1421.npy.npy
346 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_761.npy.npy
347 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1808.npy.npy
348 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_16.npy.npy
349 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_869.npy.npy
350 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1328.npy.npy
351 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1326.npy.npy
352 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_398.npy.npy
353 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_461.npy.npy
354 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_23.npy.npy
355 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_875.npy.npy
356 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_168.npy.npy
357 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_433.npy.npy
358 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1251.npy.npy
359 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_921.npy.npy
360 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_165.npy.npy
361 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1812.npy.npy
362 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_928.npy.npy
363 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_335.npy.npy
364 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_133.npy.npy
365 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1235.npy.npy
366 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_342.npy.npy
367 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1245.npy.npy
368 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_456.npy.npy
369 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_489.npy.npy
370 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_115.npy.npy
371 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_463.npy.npy
372 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_143.npy.npy
373 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_149.npy.npy
374 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1323.npy.npy
375 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_206.npy.npy
376 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1791.npy.npy
377 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1241.npy.npy
378 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_978.npy.npy
379 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_325.npy.npy
380 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_877.npy.npy
381 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_472.npy.npy
382 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_774.npy.npy
383 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_902.npy.npy
384 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_938.npy.npy
385 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_377.npy.npy
386 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1246.npy.npy
387 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_358.npy.npy
388 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1265.npy.npy
389 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1453.npy.npy
390 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_740.npy.npy
391 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_499.npy.npy
392 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1319.npy.npy
393 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1450.npy.npy
394 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_925.npy.npy
395 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_426.npy.npy
396 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1256.npy.npy
397 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_922.npy.npy
398 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1429.npy.npy
399 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1296.npy.npy
400 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_789.npy.npy
401 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_142.npy.npy
402 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_187.npy.npy
403 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_45.npy.npy
404 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_413.npy.npy
405 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_916.npy.npy
406 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_49.npy.npy
407 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_391.npy.npy
408 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_0.npy.npy
409 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_181.npy.npy
410 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_91.npy.npy
411 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_344.npy.npy
412 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1339.npy.npy
413 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_61.npy.npy
414 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1826.npy.npy
415 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_731.npy.npy
416 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1402.npy.npy
417 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1806.npy.npy
418 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_769.npy.npy
419 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1281.npy.npy
420 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_192.npy.npy
421 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_28.npy.npy
422 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_116.npy.npy
423 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1259.npy.npy
424 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_312.npy.npy
425 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_417.npy.npy
426 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_811.npy.npy
427 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_369.npy.npy
428 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_767.npy.npy
429 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_448.npy.npy
430 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_932.npy.npy
431 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1232.npy.npy
432 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_743.npy.npy
433 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1371.npy.npy
434 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_895.npy.npy
435 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_434.npy.npy
436 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_878.npy.npy
437 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1419.npy.npy
438 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_427.npy.npy
439 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1819.npy.npy
440 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1262.npy.npy
441 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_466.npy.npy
442 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1366.npy.npy
443 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_905.npy.npy
444 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1438.npy.npy
445 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_778.npy.npy
446 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_455.npy.npy
447 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_880.npy.npy
448 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1427.npy.npy
449 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_927.npy.npy
450 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1242.npy.npy
451 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_495.npy.npy
452 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1443.npy.npy
453 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_953.npy.npy
454 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1375.npy.npy
455 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1789.npy.npy
456 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_112.npy.npy
457 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_834.npy.npy
458 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1279.npy.npy
459 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_96.npy.npy
460 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_803.npy.npy
461 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1293.npy.npy
462 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1228.npy.npy
463 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1354.npy.npy
464 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1334.npy.npy
465 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_867.npy.npy
466 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_831.npy.npy
467 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_442.npy.npy
468 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_464.npy.npy
469 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1377.npy.npy
470 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_966.npy.npy
471 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1372.npy.npy
472 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_889.npy.npy
473 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_897.npy.npy
474 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_40.npy.npy
475 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_900.npy.npy
476 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_101.npy.npy
477 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_825.npy.npy
478 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_436.npy.npy
479 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_22.npy.npy
480 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_408.npy.npy
481 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1829.npy.npy
482 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_965.npy.npy
483 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_117.npy.npy
484 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_65.npy.npy
485 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_840.npy.npy
486 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_812.npy.npy
487 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1324.npy.npy
488 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1783.npy.npy
489 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_122.npy.npy
490 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1305.npy.npy
491 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1793.npy.npy
492 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_393.npy.npy
493 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_844.npy.npy
494 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_105.npy.npy
495 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_205.npy.npy
496 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_41.npy.npy
497 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_826.npy.npy
498 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_766.npy.npy
499 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_940.npy.npy
500 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1828.npy.npy
501 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_981.npy.npy
502 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1779.npy.npy
503 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1396.npy.npy
504 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_141.npy.npy
505 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_302.npy.npy
506 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1384.npy.npy
507 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_87.npy.npy
508 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_203.npy.npy
509 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_876.npy.npy
510 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_104.npy.npy
511 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_734.npy.npy
512 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_870.npy.npy
513 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_460.npy.npy
514 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_25.npy.npy
515 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1413.npy.npy
516 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_107.npy.npy
517 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_926.npy.npy
518 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_815.npy.npy
519 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_450.npy.npy
520 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1773.npy.npy
521 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_437.npy.npy
522 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1782.npy.npy
523 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_931.npy.npy
524 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1294.npy.npy
525 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_351.npy.npy
526 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_947.npy.npy
527 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_888.npy.npy
528 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_728.npy.npy
529 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_422.npy.npy
530 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_118.npy.npy
531 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_157.npy.npy
532 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_147.npy.npy
533 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_901.npy.npy
534 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_95.npy.npy
535 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_792.npy.npy
536 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1355.npy.npy
537 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_416.npy.npy
538 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_19.npy.npy
539 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_791.npy.npy
540 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1238.npy.npy
541 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_892.npy.npy
542 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_17.npy.npy
543 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_759.npy.npy
544 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_983.npy.npy
545 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_93.npy.npy
546 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_509.npy.npy
547 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_109.npy.npy
548 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1239.npy.npy
549 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_800.npy.npy
550 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1309.npy.npy
551 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1359.npy.npy
552 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_755.npy.npy
553 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_957.npy.npy
554 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_322.npy.npy
555 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_952.npy.npy
556 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_84.npy.npy
557 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_129.npy.npy
558 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_119.npy.npy
559 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1333.npy.npy
560 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1307.npy.npy
561 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_323.npy.npy
562 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1397.npy.npy
563 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1253.npy.npy
564 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_451.npy.npy
565 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_752.npy.npy
566 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1381.npy.npy
567 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1435.npy.npy
568 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_100.npy.npy
569 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1442.npy.npy
570 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_194.npy.npy
571 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1340.npy.npy
572 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1301.npy.npy
573 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_338.npy.npy
574 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_195.npy.npy
575 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1229.npy.npy
576 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_378.npy.npy
577 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1394.npy.npy
578 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_486.npy.npy
579 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_833.npy.npy
580 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1408.npy.npy
581 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_385.npy.npy
582 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_346.npy.npy
583 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_747.npy.npy
584 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1289.npy.npy
585 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1451.npy.npy
586 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1233.npy.npy
587 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_336.npy.npy
588 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1356.npy.npy
589 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_948.npy.npy
590 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_20.npy.npy
591 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1269.npy.npy
592 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_959.npy.npy
593 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1317.npy.npy
594 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1341.npy.npy
595 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_807.npy.npy
596 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_58.npy.npy
597 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_52.npy.npy
598 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_432.npy.npy
599 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_839.npy.npy
600 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1422.npy.npy
601 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_782.npy.npy
602 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1801.npy.npy
603 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1810.npy.npy
604 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_313.npy.npy
605 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_33.npy.npy
606 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1297.npy.npy
607 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_443.npy.npy
608 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_331.npy.npy
609 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1378.npy.npy
610 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_125.npy.npy
611 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1342.npy.npy
612 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_27.npy.npy
613 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1430.npy.npy
614 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1790.npy.npy
615 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_862.npy.npy
616 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1338.npy.npy
617 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1254.npy.npy
618 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_477.npy.npy
619 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1426.npy.npy
620 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_492.npy.npy
621 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_872.npy.npy
622 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_820.npy.npy
623 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_110.npy.npy
624 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1236.npy.npy
625 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_868.npy.npy
626 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1348.npy.npy
627 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_772.npy.npy
628 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_108.npy.npy
629 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1303.npy.npy
630 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_737.npy.npy
631 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_405.npy.npy
632 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_423.npy.npy
633 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_794.npy.npy
634 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_394.npy.npy
635 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1313.npy.npy
636 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_970.npy.npy
637 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_77.npy.npy
638 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1452.npy.npy
639 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_790.npy.npy
640 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_483.npy.npy
641 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_82.npy.npy
642 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_490.npy.npy
643 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_121.npy.npy
644 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1800.npy.npy
645 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1792.npy.npy
646 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1325.npy.npy
647 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1306.npy.npy
648 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_359.npy.npy
649 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1277.npy.npy
650 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_484.npy.npy
651 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_468.npy.npy
652 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_410.npy.npy
653 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_160.npy.npy
654 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1231.npy.npy
655 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_473.npy.npy
656 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_493.npy.npy
657 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_809.npy.npy
658 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_858.npy.npy
659 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_373.npy.npy
660 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_788.npy.npy
661 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_969.npy.npy
662 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_911.npy.npy
663 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_802.npy.npy
664 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_975.npy.npy
665 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_846.npy.npy
666 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1434.npy.npy
667 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_94.npy.npy
668 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1244.npy.npy
669 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_950.npy.npy
670 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_505.npy.npy
671 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1240.npy.npy
672 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1424.npy.npy
673 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_69.npy.npy
674 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_379.npy.npy
675 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_749.npy.npy
676 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_885.npy.npy
677 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_71.npy.npy
678 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_10.npy.npy
679 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_350.npy.npy
680 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_376.npy.npy
681 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_810.npy.npy
682 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_967.npy.npy
683 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_347.npy.npy
684 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_785.npy.npy
685 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_370.npy.npy
686 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1314.npy.npy
687 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_140.npy.npy
688 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_852.npy.npy
689 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_848.npy.npy
690 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_487.npy.npy
691 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_54.npy.npy
692 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_24.npy.npy
693 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1266.npy.npy
694 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_148.npy.npy
695 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_763.npy.npy
696 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1252.npy.npy
697 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_798.npy.npy
698 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_29.npy.npy
699 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_97.npy.npy
700 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1335.npy.npy
701 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1415.npy.npy
702 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_88.npy.npy
703 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_841.npy.npy
704 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1827.npy.npy
705 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_183.npy.npy
706 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_514.npy.npy
707 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_963.npy.npy
708 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1433.npy.npy
709 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_727.npy.npy
710 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1295.npy.npy
711 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_202.npy.npy
712 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1255.npy.npy
713 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_735.npy.npy
714 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_786.npy.npy
715 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_480.npy.npy
716 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1250.npy.npy
717 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_366.npy.npy
718 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_414.npy.npy
719 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_103.npy.npy
720 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1349.npy.npy
721 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1261.npy.npy
722 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1391.npy.npy
723 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_364.npy.npy
724 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_363.npy.npy
725 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_56.npy.npy
726 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1286.npy.npy
727 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1267.npy.npy
728 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_879.npy.npy
729 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1785.npy.npy
730 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_864.npy.npy
731 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1821.npy.npy
732 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_12.npy.npy
733 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1263.npy.npy
734 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_5.npy.npy
735 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1322.npy.npy
736 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_770.npy.npy
737 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_412.npy.npy
738 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_368.npy.npy
739 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1400.npy.npy
740 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_757.npy.npy
741 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1802.npy.npy
742 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_935.npy.npy
743 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_155.npy.npy
744 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1302.npy.npy
745 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_43.npy.npy
746 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1316.npy.npy
747 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_742.npy.npy
748 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_339.npy.npy
749 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_146.npy.npy
750 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_18.npy.npy
751 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_198.npy.npy
752 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1270.npy.npy
753 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_134.npy.npy
754 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_73.npy.npy
755 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1818.npy.npy
756 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_857.npy.npy
757 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_979.npy.npy
758 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1383.npy.npy
759 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_933.npy.npy
760 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1272.npy.npy
761 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1284.npy.npy
762 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_903.npy.npy
763 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_357.npy.npy
764 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_945.npy.npy
765 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_465.npy.npy
766 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_356.npy.npy
767 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_400.npy.npy
768 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1291.npy.npy
769 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_419.npy.npy
770 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1772.npy.npy
771 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1388.npy.npy
772 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1318.npy.npy
773 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1346.npy.npy
774 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1370.npy.npy
775 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_773.npy.npy
776 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_891.npy.npy
777 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_332.npy.npy
778 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_127.npy.npy
779 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1788.npy.npy
780 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_750.npy.npy
781 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1382.npy.npy
782 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_384.npy.npy
783 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1420.npy.npy
784 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_753.npy.npy
785 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1249.npy.npy
786 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_102.npy.npy
787 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_7.npy.npy
788 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1278.npy.npy
789 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1361.npy.npy
790 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1455.npy.npy
791 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1784.npy.npy
792 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_781.npy.npy
793 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_822.npy.npy
794 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_469.npy.npy
795 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_762.npy.npy
796 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_874.npy.npy
797 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_324.npy.npy
798 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1243.npy.npy
799 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_984.npy.npy
800 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1224.npy.npy
801 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_775.npy.npy
802 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_396.npy.npy
803 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1407.npy.npy
804 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_942.npy.npy
805 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_310.npy.npy
806 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1331.npy.npy
807 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_513.npy.npy
808 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_501.npy.npy
809 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_894.npy.npy
810 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_930.npy.npy
811 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_491.npy.npy
812 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1797.npy.npy
813 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_169.npy.npy
814 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_476.npy.npy
815 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_977.npy.npy
816 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_46.npy.npy
817 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1815.npy.npy
818 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_777.npy.npy
819 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_944.npy.npy
820 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1441.npy.npy
821 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_973.npy.npy
822 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1798.npy.npy
823 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_881.npy.npy
824 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_850.npy.npy
825 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_915.npy.npy
826 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_853.npy.npy
827 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_787.npy.npy
828 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1376.npy.npy
829 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1320.npy.npy
830 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_6.npy.npy
831 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_956.npy.npy
832 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_55.npy.npy
833 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_328.npy.npy
834 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_855.npy.npy
835 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_784.npy.npy
836 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1445.npy.npy
837 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1803.npy.npy
838 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_949.npy.npy
839 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1329.npy.npy
840 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_884.npy.npy
841 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_403.npy.npy
842 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_138.npy.npy
843 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1345.npy.npy
844 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_68.npy.npy
845 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_389.npy.npy
846 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_445.npy.npy
847 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_934.npy.npy
848 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1282.npy.npy
849 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_301.npy.npy
850 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_936.npy.npy
851 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1439.npy.npy
852 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1283.npy.npy
853 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1781.npy.npy
854 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_478.npy.npy
855 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_828.npy.npy
856 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_733.npy.npy
857 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_365.npy.npy
858 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1271.npy.npy
859 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1299.npy.npy
860 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_418.npy.npy
861 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1363.npy.npy
862 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1457.npy.npy
863 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_3.npy.npy
864 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_317.npy.npy
865 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_315.npy.npy
866 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_475.npy.npy
867 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1454.npy.npy
868 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_76.npy.npy
869 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_193.npy.npy
870 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1268.npy.npy
871 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_337.npy.npy
872 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_976.npy.npy
873 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_908.npy.npy
874 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_48.npy.npy
875 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_124.npy.npy
876 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1332.npy.npy
877 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_26.npy.npy
878 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_896.npy.npy
879 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_910.npy.npy
880 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1387.npy.npy
881 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_439.npy.npy
882 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1367.npy.npy
883 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1226.npy.npy
884 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_145.npy.npy
885 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_167.npy.npy
886 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1448.npy.npy
887 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_354.npy.npy
888 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1390.npy.npy
889 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_70.npy.npy
890 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1273.npy.npy
891 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1288.npy.npy
892 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1405.npy.npy
893 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_201.npy.npy
894 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_982.npy.npy
895 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_829.npy.npy
896 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_906.npy.npy
897 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_64.npy.npy
898 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_304.npy.npy
899 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1825.npy.npy
900 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_161.npy.npy
901 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_741.npy.npy
902 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_924.npy.npy
903 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_113.npy.npy
904 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1432.npy.npy
905 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_399.npy.npy
906 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_4.npy.npy
907 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_454.npy.npy
908 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_814.npy.npy
909 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_972.npy.npy
910 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_861.npy.npy
911 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1774.npy.npy
912 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1368.npy.npy
913 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1315.npy.npy
914 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_199.npy.npy
915 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1794.npy.npy
916 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1274.npy.npy
917 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_89.npy.npy
918 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_381.npy.npy
919 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_153.npy.npy
920 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1380.npy.npy
921 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_81.npy.npy
922 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1385.npy.npy
923 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_440.npy.npy
924 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1816.npy.npy
925 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1418.npy.npy
926 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_904.npy.npy
927 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_823.npy.npy
928 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1379.npy.npy
929 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_799.npy.npy
930 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_732.npy.npy
931 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1285.npy.npy
932 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_308.npy.npy
933 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_154.npy.npy
934 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_11.npy.npy
935 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_438.npy.npy
936 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_309.npy.npy
937 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_415.npy.npy
938 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1365.npy.npy
939 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1247.npy.npy
940 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_856.npy.npy
941 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_453.npy.npy
942 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_971.npy.npy
943 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1820.npy.npy
944 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_431.npy.npy
945 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_471.npy.npy
946 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_197.npy.npy
947 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1776.npy.npy
948 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_409.npy.npy
949 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_327.npy.npy
950 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_66.npy.npy
951 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1234.npy.npy
952 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_771.npy.npy
953 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_35.npy.npy
954 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_132.npy.npy
955 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_974.npy.npy
956 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_871.npy.npy
957 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_334.npy.npy
958 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_78.npy.npy
959 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1312.npy.npy
960 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_745.npy.npy
961 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_79.npy.npy
962 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1392.npy.npy
963 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_730.npy.npy
964 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_63.npy.npy

@ -1,964 +0,0 @@
file_name
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_443.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_183.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_403.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_163.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_349.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_922.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_830.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_893.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_386.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1774.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1224.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_780.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_482.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_38.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1301.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_503.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_848.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_881.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_195.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1431.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_793.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1808.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_819.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_484.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1392.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1324.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_2.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_890.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_974.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_395.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_91.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_43.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_151.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1288.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_917.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_382.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_814.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1383.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1275.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_125.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1351.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1449.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_847.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_131.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_414.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_868.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1293.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_448.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_312.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_795.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1294.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_486.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_182.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1243.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1791.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1323.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_978.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1785.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_970.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_192.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_872.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_100.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1304.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1415.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1309.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1245.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1322.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1816.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1442.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1367.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1260.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1452.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_411.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_843.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1377.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1412.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_962.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_185.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_308.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_383.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_729.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_773.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_870.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_52.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_417.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1432.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1292.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_54.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1819.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1378.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1315.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_318.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_108.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1249.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_439.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_864.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_80.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1800.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_451.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1405.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_373.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_378.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1346.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1335.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_849.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1799.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_730.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_0.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_740.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_950.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_968.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_836.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_809.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1368.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1451.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1433.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_311.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_502.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_113.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1790.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1350.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_14.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_24.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_951.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1289.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_415.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_902.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_426.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1341.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1826.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_757.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1406.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_133.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_11.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_831.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_167.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1359.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_70.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_76.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_48.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_943.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_110.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_820.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_8.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_731.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_846.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_481.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1328.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_980.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1361.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_60.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_138.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1330.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_910.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_148.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_733.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1334.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_10.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1435.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1313.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_472.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_877.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_908.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_901.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1266.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_315.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_84.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_776.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1332.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1354.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_940.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_401.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1329.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1804.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_63.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_181.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_891.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_37.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_932.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_322.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1455.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_61.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1797.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1331.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1262.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_926.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_959.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_127.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_40.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_385.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_826.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_31.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1296.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_973.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_480.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_865.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_966.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_958.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_343.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_827.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_744.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_434.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_77.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_119.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_894.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_909.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_436.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_369.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_497.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_126.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_29.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_418.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1318.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_420.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_874.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_205.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_811.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_858.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_20.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1272.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_323.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_45.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_327.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_357.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_845.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_916.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_953.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1298.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1299.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_783.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1306.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_307.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_69.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1823.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_356.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_348.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_155.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_412.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_316.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_821.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_756.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1775.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_326.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_147.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_930.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1815.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1443.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1440.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_918.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_90.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_186.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1801.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_850.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_180.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_961.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_98.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_317.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_828.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1430.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1286.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_504.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1233.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_812.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_483.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1307.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_179.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_474.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_46.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_4.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1278.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1393.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_361.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_882.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_166.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_99.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_198.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_306.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1402.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_899.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_907.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_863.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1254.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_861.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_202.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_490.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_377.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_409.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1300.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_897.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1250.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_912.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1454.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1409.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_808.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_7.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1240.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_204.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1407.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_71.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_768.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_765.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_952.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1287.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_905.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_25.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_461.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1283.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_117.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_946.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1226.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_68.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_491.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_458.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_353.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_338.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1339.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_772.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_860.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_83.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1348.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_732.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_360.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_141.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_364.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1347.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_487.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_366.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_388.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1234.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_466.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_320.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_109.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1338.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_118.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1434.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_787.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_337.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_515.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1295.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_379.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1410.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_421.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_358.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_62.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1271.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1242.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_825.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_324.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_920.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1413.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_450.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1411.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_302.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1794.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_914.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_906.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1382.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1357.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_470.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_50.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1356.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_876.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_835.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1389.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_840.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1265.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_784.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_87.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_816.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_494.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1362.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_479.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_896.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_507.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1388.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_67.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_498.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_866.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1380.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1305.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_747.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_977.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_106.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_132.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_346.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1387.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_146.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_428.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_755.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_342.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_32.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_365.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_471.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1239.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_339.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1230.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_423.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_786.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1811.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_880.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_929.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_65.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1227.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_921.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_938.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1337.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_154.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1438.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_791.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1238.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_945.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1371.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_161.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_329.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1384.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_473.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_788.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_95.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_129.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_469.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_394.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_855.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_944.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1798.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1813.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_200.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1369.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_404.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_936.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1400.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_981.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_303.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_44.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_82.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_781.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_782.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_355.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_738.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_55.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1822.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_513.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_112.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_124.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_856.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_749.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1342.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_465.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1394.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1439.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_207.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_785.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_325.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1437.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1404.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_751.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1302.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_64.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_734.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_904.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_511.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_889.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_424.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1776.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_122.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1386.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1817.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_468.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1333.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1399.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_442.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_802.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_832.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_397.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1788.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_430.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_145.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_767.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1320.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1277.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1803.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_960.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_984.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_937.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_96.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1810.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_115.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_508.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_867.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_341.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_375.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1436.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_105.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_197.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_778.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_965.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1379.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1235.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_892.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_413.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_362.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_396.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_815.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_301.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_963.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1316.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1786.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_898.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_78.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_399.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_829.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_144.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1343.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1818.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_86.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_883.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1425.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1241.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_967.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1358.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_759.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_805.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_330.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_432.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_89.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1448.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_387.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_851.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1228.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_381.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_380.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_114.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_56.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_16.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_485.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1787.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_26.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1418.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1268.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1267.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_931.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1420.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_763.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_478.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_752.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_168.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_107.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_505.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_956.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1336.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_496.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_332.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1276.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_199.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1772.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_463.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_139.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_390.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_728.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_495.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_367.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_822.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1773.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1261.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_878.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1229.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_790.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_433.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1258.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_441.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_939.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_328.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_493.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1403.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_467.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1809.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_879.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1423.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_903.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_979.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_873.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1802.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_392.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1363.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_823.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_152.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_975.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1447.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1280.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_331.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1821.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1327.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_304.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_352.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_19.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_319.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1303.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1284.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_875.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1398.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_410.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1456.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_169.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1370.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_22.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1257.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_350.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_347.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_871.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1419.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_794.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_72.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1353.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_81.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_427.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1256.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_102.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1395.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1312.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_862.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1344.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_806.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_93.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_143.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_810.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_735.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_23.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_919.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1795.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_345.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1248.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1269.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_184.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1780.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_39.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1251.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_47.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_770.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1824.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_727.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_391.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_985.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1784.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_475.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1807.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_976.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_85.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_813.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_21.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_398.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_746.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_120.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_771.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1263.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_736.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_111.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_887.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_158.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_18.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_393.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_512.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1317.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1390.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_969.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_745.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1308.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_17.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_49.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_196.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_59.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_447.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_964.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1397.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_134.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1427.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_789.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_454.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1225.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1340.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_305.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_431.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_748.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_954.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_800.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1781.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_79.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1777.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1273.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_807.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_462.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_101.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_775.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_933.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_499.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1792.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_123.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1385.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1806.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_971.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_492.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_41.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_799.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_74.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_66.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_948.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1376.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1457.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_798.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_947.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_949.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_309.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1424.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_28.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_750.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1396.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_340.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_9.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1453.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1365.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_359.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_488.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_455.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_335.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1325.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_869.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_453.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_927.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1319.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_444.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_983.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_333.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_178.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_165.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_310.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_164.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_501.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_446.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_376.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1231.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_818.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_895.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1391.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_506.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1416.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_162.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1375.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_384.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_27.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_838.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1779.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_452.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_737.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_853.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_884.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_854.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1783.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_739.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_193.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_187.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1279.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_476.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1812.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_935.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1326.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_34.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_30.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1429.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_754.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_792.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1252.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_885.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_94.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_58.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_456.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_500.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_859.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_489.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1311.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_766.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_344.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_140.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_834.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1796.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_206.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_801.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_201.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_363.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_15.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_191.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_389.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_408.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1366.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1414.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_422.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1782.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_762.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_955.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_130.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_435.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_924.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_440.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_934.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1445.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_160.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_6.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_128.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_97.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1450.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1349.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1247.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_760.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_841.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_203.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_459.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1820.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_370.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_445.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_769.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_817.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1829.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1274.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_402.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1444.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1352.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_844.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_925.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_742.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_804.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_354.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_753.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_464.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1236.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1441.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_368.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_336.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1793.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1253.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_774.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_406.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_351.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1814.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_797.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_35.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1381.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_371.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_407.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1373.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1259.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1401.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1255.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_824.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_194.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_941.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_923.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1408.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_915.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1428.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1310.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_833.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_157.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_457.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_13.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_57.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_886.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1446.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_116.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_972.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_321.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_156.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1372.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_314.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_839.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_416.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_12.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_928.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_313.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_372.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_438.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_104.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_419.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_425.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_137.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1426.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_477.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1291.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_449.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1321.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_88.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_842.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_857.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_53.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1270.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_374.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_837.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_405.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_779.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_913.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_852.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_777.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_460.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_51.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1778.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1360.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_957.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_153.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_42.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_136.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1825.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_803.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_510.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_150.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1789.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_982.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1290.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_73.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_911.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1417.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_741.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_437.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_900.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_888.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_36.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_400.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_92.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1232.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1285.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1422.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_942.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1281.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_159.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1364.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1421.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1282.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_761.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1244.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_758.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_75.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1827.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_103.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_764.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_5.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_3.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1246.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_334.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_429.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_796.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1264.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_509.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1237.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1297.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_142.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1374.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1355.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1314.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_33.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1828.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_135.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_514.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_121.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_149.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1345.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1805.npy.npy
/mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_743.npy.npy
1 file_name
2 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_443.npy.npy
3 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_183.npy.npy
4 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_403.npy.npy
5 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_163.npy.npy
6 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_349.npy.npy
7 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_922.npy.npy
8 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_830.npy.npy
9 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_893.npy.npy
10 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_386.npy.npy
11 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1774.npy.npy
12 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1224.npy.npy
13 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_780.npy.npy
14 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_482.npy.npy
15 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_38.npy.npy
16 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1301.npy.npy
17 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_503.npy.npy
18 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_848.npy.npy
19 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_881.npy.npy
20 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_195.npy.npy
21 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1431.npy.npy
22 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_793.npy.npy
23 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1808.npy.npy
24 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_819.npy.npy
25 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_484.npy.npy
26 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1392.npy.npy
27 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1324.npy.npy
28 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_2.npy.npy
29 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_890.npy.npy
30 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_974.npy.npy
31 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_395.npy.npy
32 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_91.npy.npy
33 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_43.npy.npy
34 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_151.npy.npy
35 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1288.npy.npy
36 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_917.npy.npy
37 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_382.npy.npy
38 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_814.npy.npy
39 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1383.npy.npy
40 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1275.npy.npy
41 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_125.npy.npy
42 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1351.npy.npy
43 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1449.npy.npy
44 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_847.npy.npy
45 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_131.npy.npy
46 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_414.npy.npy
47 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_868.npy.npy
48 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1293.npy.npy
49 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_448.npy.npy
50 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_312.npy.npy
51 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_795.npy.npy
52 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1294.npy.npy
53 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_486.npy.npy
54 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_182.npy.npy
55 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1243.npy.npy
56 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1791.npy.npy
57 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1323.npy.npy
58 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_978.npy.npy
59 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1785.npy.npy
60 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_970.npy.npy
61 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_192.npy.npy
62 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_872.npy.npy
63 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_100.npy.npy
64 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1304.npy.npy
65 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1415.npy.npy
66 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1309.npy.npy
67 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1245.npy.npy
68 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1322.npy.npy
69 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1816.npy.npy
70 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1442.npy.npy
71 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1367.npy.npy
72 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1260.npy.npy
73 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1452.npy.npy
74 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_411.npy.npy
75 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_843.npy.npy
76 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1377.npy.npy
77 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1412.npy.npy
78 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_962.npy.npy
79 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_185.npy.npy
80 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_308.npy.npy
81 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_383.npy.npy
82 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_729.npy.npy
83 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_773.npy.npy
84 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_870.npy.npy
85 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_52.npy.npy
86 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_417.npy.npy
87 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1432.npy.npy
88 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1292.npy.npy
89 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_54.npy.npy
90 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1819.npy.npy
91 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1378.npy.npy
92 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1315.npy.npy
93 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_318.npy.npy
94 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_108.npy.npy
95 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1249.npy.npy
96 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_439.npy.npy
97 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_864.npy.npy
98 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_80.npy.npy
99 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1800.npy.npy
100 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_451.npy.npy
101 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1405.npy.npy
102 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_373.npy.npy
103 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_378.npy.npy
104 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1346.npy.npy
105 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1335.npy.npy
106 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_849.npy.npy
107 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1799.npy.npy
108 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_730.npy.npy
109 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_0.npy.npy
110 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_740.npy.npy
111 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_950.npy.npy
112 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_968.npy.npy
113 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_836.npy.npy
114 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_809.npy.npy
115 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1368.npy.npy
116 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1451.npy.npy
117 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1433.npy.npy
118 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_311.npy.npy
119 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_502.npy.npy
120 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_113.npy.npy
121 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1790.npy.npy
122 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1350.npy.npy
123 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_14.npy.npy
124 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_24.npy.npy
125 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_951.npy.npy
126 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1289.npy.npy
127 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_415.npy.npy
128 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_902.npy.npy
129 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_426.npy.npy
130 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1341.npy.npy
131 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1826.npy.npy
132 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_757.npy.npy
133 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1406.npy.npy
134 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_133.npy.npy
135 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_11.npy.npy
136 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_831.npy.npy
137 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_167.npy.npy
138 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1359.npy.npy
139 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_70.npy.npy
140 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_76.npy.npy
141 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_48.npy.npy
142 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_943.npy.npy
143 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_110.npy.npy
144 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_820.npy.npy
145 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_8.npy.npy
146 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_731.npy.npy
147 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_846.npy.npy
148 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_481.npy.npy
149 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1328.npy.npy
150 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_980.npy.npy
151 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1361.npy.npy
152 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_60.npy.npy
153 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_138.npy.npy
154 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1330.npy.npy
155 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_910.npy.npy
156 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_148.npy.npy
157 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_733.npy.npy
158 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1334.npy.npy
159 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_10.npy.npy
160 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1435.npy.npy
161 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1313.npy.npy
162 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_472.npy.npy
163 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_877.npy.npy
164 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_908.npy.npy
165 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_901.npy.npy
166 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1266.npy.npy
167 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_315.npy.npy
168 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_84.npy.npy
169 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_776.npy.npy
170 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1332.npy.npy
171 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1354.npy.npy
172 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_940.npy.npy
173 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_401.npy.npy
174 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1329.npy.npy
175 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1804.npy.npy
176 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_63.npy.npy
177 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_181.npy.npy
178 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_891.npy.npy
179 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_37.npy.npy
180 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_932.npy.npy
181 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_322.npy.npy
182 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1455.npy.npy
183 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_61.npy.npy
184 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1797.npy.npy
185 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1331.npy.npy
186 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1262.npy.npy
187 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_926.npy.npy
188 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_959.npy.npy
189 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_127.npy.npy
190 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_40.npy.npy
191 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_385.npy.npy
192 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_826.npy.npy
193 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_31.npy.npy
194 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1296.npy.npy
195 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_973.npy.npy
196 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_480.npy.npy
197 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_865.npy.npy
198 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_966.npy.npy
199 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_958.npy.npy
200 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_343.npy.npy
201 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_827.npy.npy
202 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_744.npy.npy
203 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_434.npy.npy
204 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_77.npy.npy
205 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_119.npy.npy
206 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_894.npy.npy
207 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_909.npy.npy
208 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_436.npy.npy
209 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_369.npy.npy
210 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_497.npy.npy
211 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_126.npy.npy
212 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_29.npy.npy
213 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_418.npy.npy
214 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1318.npy.npy
215 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_420.npy.npy
216 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_874.npy.npy
217 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_205.npy.npy
218 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_811.npy.npy
219 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_858.npy.npy
220 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_20.npy.npy
221 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1272.npy.npy
222 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_323.npy.npy
223 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_45.npy.npy
224 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_327.npy.npy
225 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_357.npy.npy
226 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_845.npy.npy
227 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_916.npy.npy
228 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_953.npy.npy
229 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1298.npy.npy
230 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1299.npy.npy
231 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_783.npy.npy
232 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1306.npy.npy
233 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_307.npy.npy
234 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_69.npy.npy
235 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1823.npy.npy
236 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_356.npy.npy
237 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_348.npy.npy
238 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_155.npy.npy
239 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_412.npy.npy
240 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_316.npy.npy
241 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_821.npy.npy
242 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_756.npy.npy
243 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1775.npy.npy
244 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_326.npy.npy
245 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_147.npy.npy
246 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_930.npy.npy
247 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1815.npy.npy
248 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1443.npy.npy
249 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1440.npy.npy
250 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_918.npy.npy
251 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_90.npy.npy
252 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_186.npy.npy
253 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1801.npy.npy
254 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_850.npy.npy
255 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_180.npy.npy
256 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_961.npy.npy
257 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_98.npy.npy
258 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_317.npy.npy
259 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_828.npy.npy
260 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1430.npy.npy
261 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1286.npy.npy
262 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_504.npy.npy
263 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1233.npy.npy
264 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_812.npy.npy
265 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_483.npy.npy
266 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1307.npy.npy
267 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_179.npy.npy
268 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_474.npy.npy
269 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_46.npy.npy
270 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_4.npy.npy
271 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1278.npy.npy
272 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1393.npy.npy
273 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_361.npy.npy
274 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_882.npy.npy
275 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_166.npy.npy
276 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_99.npy.npy
277 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_198.npy.npy
278 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_306.npy.npy
279 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1402.npy.npy
280 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_899.npy.npy
281 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_907.npy.npy
282 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_863.npy.npy
283 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1254.npy.npy
284 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_861.npy.npy
285 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_202.npy.npy
286 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_490.npy.npy
287 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_377.npy.npy
288 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_409.npy.npy
289 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1300.npy.npy
290 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_897.npy.npy
291 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1250.npy.npy
292 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_912.npy.npy
293 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1454.npy.npy
294 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1409.npy.npy
295 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_808.npy.npy
296 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_7.npy.npy
297 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1240.npy.npy
298 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_204.npy.npy
299 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1407.npy.npy
300 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_71.npy.npy
301 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_768.npy.npy
302 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_765.npy.npy
303 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_952.npy.npy
304 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1287.npy.npy
305 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_905.npy.npy
306 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_25.npy.npy
307 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_461.npy.npy
308 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1283.npy.npy
309 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_117.npy.npy
310 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_946.npy.npy
311 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1226.npy.npy
312 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_68.npy.npy
313 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_491.npy.npy
314 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_458.npy.npy
315 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_353.npy.npy
316 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_338.npy.npy
317 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1339.npy.npy
318 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_772.npy.npy
319 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_860.npy.npy
320 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_83.npy.npy
321 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1348.npy.npy
322 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_732.npy.npy
323 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_360.npy.npy
324 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_141.npy.npy
325 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_364.npy.npy
326 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1347.npy.npy
327 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_487.npy.npy
328 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_366.npy.npy
329 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_388.npy.npy
330 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1234.npy.npy
331 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_466.npy.npy
332 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_320.npy.npy
333 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_109.npy.npy
334 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1338.npy.npy
335 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_118.npy.npy
336 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1434.npy.npy
337 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_787.npy.npy
338 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_337.npy.npy
339 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_515.npy.npy
340 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1295.npy.npy
341 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_379.npy.npy
342 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1410.npy.npy
343 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_421.npy.npy
344 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_358.npy.npy
345 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_62.npy.npy
346 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1271.npy.npy
347 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1242.npy.npy
348 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_825.npy.npy
349 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_324.npy.npy
350 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_920.npy.npy
351 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1413.npy.npy
352 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_450.npy.npy
353 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1411.npy.npy
354 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_302.npy.npy
355 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1794.npy.npy
356 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_914.npy.npy
357 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_906.npy.npy
358 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1382.npy.npy
359 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1357.npy.npy
360 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_470.npy.npy
361 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_50.npy.npy
362 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1356.npy.npy
363 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_876.npy.npy
364 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_835.npy.npy
365 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1389.npy.npy
366 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_840.npy.npy
367 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1265.npy.npy
368 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_784.npy.npy
369 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_87.npy.npy
370 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_816.npy.npy
371 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_494.npy.npy
372 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1362.npy.npy
373 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_479.npy.npy
374 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_896.npy.npy
375 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_507.npy.npy
376 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1388.npy.npy
377 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_67.npy.npy
378 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_498.npy.npy
379 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_866.npy.npy
380 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1380.npy.npy
381 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1305.npy.npy
382 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_747.npy.npy
383 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_977.npy.npy
384 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_106.npy.npy
385 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_132.npy.npy
386 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_346.npy.npy
387 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1387.npy.npy
388 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_146.npy.npy
389 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_428.npy.npy
390 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_755.npy.npy
391 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_342.npy.npy
392 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_32.npy.npy
393 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_365.npy.npy
394 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_471.npy.npy
395 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1239.npy.npy
396 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_339.npy.npy
397 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1230.npy.npy
398 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_423.npy.npy
399 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_786.npy.npy
400 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1811.npy.npy
401 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_880.npy.npy
402 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_929.npy.npy
403 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_65.npy.npy
404 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1227.npy.npy
405 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_921.npy.npy
406 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_938.npy.npy
407 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1337.npy.npy
408 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_154.npy.npy
409 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1438.npy.npy
410 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_791.npy.npy
411 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1238.npy.npy
412 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_945.npy.npy
413 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1371.npy.npy
414 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_161.npy.npy
415 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_329.npy.npy
416 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1384.npy.npy
417 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_473.npy.npy
418 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_788.npy.npy
419 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_95.npy.npy
420 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_129.npy.npy
421 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_469.npy.npy
422 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_394.npy.npy
423 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_855.npy.npy
424 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_944.npy.npy
425 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1798.npy.npy
426 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1813.npy.npy
427 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_200.npy.npy
428 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1369.npy.npy
429 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_404.npy.npy
430 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_936.npy.npy
431 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1400.npy.npy
432 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_981.npy.npy
433 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_303.npy.npy
434 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_44.npy.npy
435 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_82.npy.npy
436 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_781.npy.npy
437 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_782.npy.npy
438 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_355.npy.npy
439 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_738.npy.npy
440 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_55.npy.npy
441 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1822.npy.npy
442 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_513.npy.npy
443 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_112.npy.npy
444 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_124.npy.npy
445 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_856.npy.npy
446 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_749.npy.npy
447 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1342.npy.npy
448 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_465.npy.npy
449 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1394.npy.npy
450 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1439.npy.npy
451 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_207.npy.npy
452 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_785.npy.npy
453 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_325.npy.npy
454 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1437.npy.npy
455 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1404.npy.npy
456 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_751.npy.npy
457 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1302.npy.npy
458 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_64.npy.npy
459 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_734.npy.npy
460 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_904.npy.npy
461 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_511.npy.npy
462 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_889.npy.npy
463 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_424.npy.npy
464 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1776.npy.npy
465 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_122.npy.npy
466 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1386.npy.npy
467 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1817.npy.npy
468 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_468.npy.npy
469 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1333.npy.npy
470 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1399.npy.npy
471 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_442.npy.npy
472 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_802.npy.npy
473 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_832.npy.npy
474 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_397.npy.npy
475 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1788.npy.npy
476 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_430.npy.npy
477 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_145.npy.npy
478 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_767.npy.npy
479 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1320.npy.npy
480 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1277.npy.npy
481 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1803.npy.npy
482 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_960.npy.npy
483 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_984.npy.npy
484 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_937.npy.npy
485 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_96.npy.npy
486 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1810.npy.npy
487 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_115.npy.npy
488 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_508.npy.npy
489 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_867.npy.npy
490 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_341.npy.npy
491 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_375.npy.npy
492 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1436.npy.npy
493 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_105.npy.npy
494 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_197.npy.npy
495 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_778.npy.npy
496 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_965.npy.npy
497 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1379.npy.npy
498 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1235.npy.npy
499 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_892.npy.npy
500 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_413.npy.npy
501 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_362.npy.npy
502 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_396.npy.npy
503 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_815.npy.npy
504 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_301.npy.npy
505 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_963.npy.npy
506 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1316.npy.npy
507 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1786.npy.npy
508 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_898.npy.npy
509 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1.npy.npy
510 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_78.npy.npy
511 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_399.npy.npy
512 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_829.npy.npy
513 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_144.npy.npy
514 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1343.npy.npy
515 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1818.npy.npy
516 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_86.npy.npy
517 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_883.npy.npy
518 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1425.npy.npy
519 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1241.npy.npy
520 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_967.npy.npy
521 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1358.npy.npy
522 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_759.npy.npy
523 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_805.npy.npy
524 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_330.npy.npy
525 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_432.npy.npy
526 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_89.npy.npy
527 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1448.npy.npy
528 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_387.npy.npy
529 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_851.npy.npy
530 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1228.npy.npy
531 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_381.npy.npy
532 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_380.npy.npy
533 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_114.npy.npy
534 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_56.npy.npy
535 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_16.npy.npy
536 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_485.npy.npy
537 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1787.npy.npy
538 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_26.npy.npy
539 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1418.npy.npy
540 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1268.npy.npy
541 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1267.npy.npy
542 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_931.npy.npy
543 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1420.npy.npy
544 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_763.npy.npy
545 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_478.npy.npy
546 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_752.npy.npy
547 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_168.npy.npy
548 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_107.npy.npy
549 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_505.npy.npy
550 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_956.npy.npy
551 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1336.npy.npy
552 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_496.npy.npy
553 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_332.npy.npy
554 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1276.npy.npy
555 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_199.npy.npy
556 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1772.npy.npy
557 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_463.npy.npy
558 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_139.npy.npy
559 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_390.npy.npy
560 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_728.npy.npy
561 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_495.npy.npy
562 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_367.npy.npy
563 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_822.npy.npy
564 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1773.npy.npy
565 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1261.npy.npy
566 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_878.npy.npy
567 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1229.npy.npy
568 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_790.npy.npy
569 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_433.npy.npy
570 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1258.npy.npy
571 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_441.npy.npy
572 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_939.npy.npy
573 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_328.npy.npy
574 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_493.npy.npy
575 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1403.npy.npy
576 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_467.npy.npy
577 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1809.npy.npy
578 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_879.npy.npy
579 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1423.npy.npy
580 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_903.npy.npy
581 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_979.npy.npy
582 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_873.npy.npy
583 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1802.npy.npy
584 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_392.npy.npy
585 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1363.npy.npy
586 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_823.npy.npy
587 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_152.npy.npy
588 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_975.npy.npy
589 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1447.npy.npy
590 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1280.npy.npy
591 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_331.npy.npy
592 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1821.npy.npy
593 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1327.npy.npy
594 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_304.npy.npy
595 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_352.npy.npy
596 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_19.npy.npy
597 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_319.npy.npy
598 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1303.npy.npy
599 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1284.npy.npy
600 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_875.npy.npy
601 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1398.npy.npy
602 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_410.npy.npy
603 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1456.npy.npy
604 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_169.npy.npy
605 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1370.npy.npy
606 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_22.npy.npy
607 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1257.npy.npy
608 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_350.npy.npy
609 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_347.npy.npy
610 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_871.npy.npy
611 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1419.npy.npy
612 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_794.npy.npy
613 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_72.npy.npy
614 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1353.npy.npy
615 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_81.npy.npy
616 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_427.npy.npy
617 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1256.npy.npy
618 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_102.npy.npy
619 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1395.npy.npy
620 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1312.npy.npy
621 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_862.npy.npy
622 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1344.npy.npy
623 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_806.npy.npy
624 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_93.npy.npy
625 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_143.npy.npy
626 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_810.npy.npy
627 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_735.npy.npy
628 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_23.npy.npy
629 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_919.npy.npy
630 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1795.npy.npy
631 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_345.npy.npy
632 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1248.npy.npy
633 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1269.npy.npy
634 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_184.npy.npy
635 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1780.npy.npy
636 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_39.npy.npy
637 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1251.npy.npy
638 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_47.npy.npy
639 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_770.npy.npy
640 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1824.npy.npy
641 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_727.npy.npy
642 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_391.npy.npy
643 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_985.npy.npy
644 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1784.npy.npy
645 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_475.npy.npy
646 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1807.npy.npy
647 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_976.npy.npy
648 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_85.npy.npy
649 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_813.npy.npy
650 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_21.npy.npy
651 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_398.npy.npy
652 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_746.npy.npy
653 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_120.npy.npy
654 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_771.npy.npy
655 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1263.npy.npy
656 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_736.npy.npy
657 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_111.npy.npy
658 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_887.npy.npy
659 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_158.npy.npy
660 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_18.npy.npy
661 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_393.npy.npy
662 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_512.npy.npy
663 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1317.npy.npy
664 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1390.npy.npy
665 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_969.npy.npy
666 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_745.npy.npy
667 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1308.npy.npy
668 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_17.npy.npy
669 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_49.npy.npy
670 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_196.npy.npy
671 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_59.npy.npy
672 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_447.npy.npy
673 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_964.npy.npy
674 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1397.npy.npy
675 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_134.npy.npy
676 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1427.npy.npy
677 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_789.npy.npy
678 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_454.npy.npy
679 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1225.npy.npy
680 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1340.npy.npy
681 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_305.npy.npy
682 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_431.npy.npy
683 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_748.npy.npy
684 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_954.npy.npy
685 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_800.npy.npy
686 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1781.npy.npy
687 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_79.npy.npy
688 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1777.npy.npy
689 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1273.npy.npy
690 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_807.npy.npy
691 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_462.npy.npy
692 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_101.npy.npy
693 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_775.npy.npy
694 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_933.npy.npy
695 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_499.npy.npy
696 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1792.npy.npy
697 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_123.npy.npy
698 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1385.npy.npy
699 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1806.npy.npy
700 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_971.npy.npy
701 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_492.npy.npy
702 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_41.npy.npy
703 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_799.npy.npy
704 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_74.npy.npy
705 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_66.npy.npy
706 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_948.npy.npy
707 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1376.npy.npy
708 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1457.npy.npy
709 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_798.npy.npy
710 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_947.npy.npy
711 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_949.npy.npy
712 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_309.npy.npy
713 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1424.npy.npy
714 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_28.npy.npy
715 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_750.npy.npy
716 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1396.npy.npy
717 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_340.npy.npy
718 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_9.npy.npy
719 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1453.npy.npy
720 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1365.npy.npy
721 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_359.npy.npy
722 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_488.npy.npy
723 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_455.npy.npy
724 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_335.npy.npy
725 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1325.npy.npy
726 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_869.npy.npy
727 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_453.npy.npy
728 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_927.npy.npy
729 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1319.npy.npy
730 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_444.npy.npy
731 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_983.npy.npy
732 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_333.npy.npy
733 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_178.npy.npy
734 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_165.npy.npy
735 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_310.npy.npy
736 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_164.npy.npy
737 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_501.npy.npy
738 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_446.npy.npy
739 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_376.npy.npy
740 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1231.npy.npy
741 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_818.npy.npy
742 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_895.npy.npy
743 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1391.npy.npy
744 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_506.npy.npy
745 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1416.npy.npy
746 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_162.npy.npy
747 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1375.npy.npy
748 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_384.npy.npy
749 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_27.npy.npy
750 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_838.npy.npy
751 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1779.npy.npy
752 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_452.npy.npy
753 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_737.npy.npy
754 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_853.npy.npy
755 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_884.npy.npy
756 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_854.npy.npy
757 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1783.npy.npy
758 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_739.npy.npy
759 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_193.npy.npy
760 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_187.npy.npy
761 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1279.npy.npy
762 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_476.npy.npy
763 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1812.npy.npy
764 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_935.npy.npy
765 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1326.npy.npy
766 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_34.npy.npy
767 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_30.npy.npy
768 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1429.npy.npy
769 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_754.npy.npy
770 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_792.npy.npy
771 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1252.npy.npy
772 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_885.npy.npy
773 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_94.npy.npy
774 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_58.npy.npy
775 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_456.npy.npy
776 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_500.npy.npy
777 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_859.npy.npy
778 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_489.npy.npy
779 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1311.npy.npy
780 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_766.npy.npy
781 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_344.npy.npy
782 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_140.npy.npy
783 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_834.npy.npy
784 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1796.npy.npy
785 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_206.npy.npy
786 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_801.npy.npy
787 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_201.npy.npy
788 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_363.npy.npy
789 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_15.npy.npy
790 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_191.npy.npy
791 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_389.npy.npy
792 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_408.npy.npy
793 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1366.npy.npy
794 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1414.npy.npy
795 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_422.npy.npy
796 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1782.npy.npy
797 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_762.npy.npy
798 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_955.npy.npy
799 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_130.npy.npy
800 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_435.npy.npy
801 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_924.npy.npy
802 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_440.npy.npy
803 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_934.npy.npy
804 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1445.npy.npy
805 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_160.npy.npy
806 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_6.npy.npy
807 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_128.npy.npy
808 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_97.npy.npy
809 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1450.npy.npy
810 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1349.npy.npy
811 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1247.npy.npy
812 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_760.npy.npy
813 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_841.npy.npy
814 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_203.npy.npy
815 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_459.npy.npy
816 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1820.npy.npy
817 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_370.npy.npy
818 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_445.npy.npy
819 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_769.npy.npy
820 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_817.npy.npy
821 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1829.npy.npy
822 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1274.npy.npy
823 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_402.npy.npy
824 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1444.npy.npy
825 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1352.npy.npy
826 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_844.npy.npy
827 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_925.npy.npy
828 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_742.npy.npy
829 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_804.npy.npy
830 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_354.npy.npy
831 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_753.npy.npy
832 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_464.npy.npy
833 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1236.npy.npy
834 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1441.npy.npy
835 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_368.npy.npy
836 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_336.npy.npy
837 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1793.npy.npy
838 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1253.npy.npy
839 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_774.npy.npy
840 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_406.npy.npy
841 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_351.npy.npy
842 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1814.npy.npy
843 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_797.npy.npy
844 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_35.npy.npy
845 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1381.npy.npy
846 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_371.npy.npy
847 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_407.npy.npy
848 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1373.npy.npy
849 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1259.npy.npy
850 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1401.npy.npy
851 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1255.npy.npy
852 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_824.npy.npy
853 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_194.npy.npy
854 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_941.npy.npy
855 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_923.npy.npy
856 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1408.npy.npy
857 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_915.npy.npy
858 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1428.npy.npy
859 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1310.npy.npy
860 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_833.npy.npy
861 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_157.npy.npy
862 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_457.npy.npy
863 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_13.npy.npy
864 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_57.npy.npy
865 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_886.npy.npy
866 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1446.npy.npy
867 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_116.npy.npy
868 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_972.npy.npy
869 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_321.npy.npy
870 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_156.npy.npy
871 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1372.npy.npy
872 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_314.npy.npy
873 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_839.npy.npy
874 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_416.npy.npy
875 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_12.npy.npy
876 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_928.npy.npy
877 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_313.npy.npy
878 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_372.npy.npy
879 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_438.npy.npy
880 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_104.npy.npy
881 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_419.npy.npy
882 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_425.npy.npy
883 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_137.npy.npy
884 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1426.npy.npy
885 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_477.npy.npy
886 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1291.npy.npy
887 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_449.npy.npy
888 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1321.npy.npy
889 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_88.npy.npy
890 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_842.npy.npy
891 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_857.npy.npy
892 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_53.npy.npy
893 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1270.npy.npy
894 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_374.npy.npy
895 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_837.npy.npy
896 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_405.npy.npy
897 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_779.npy.npy
898 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_913.npy.npy
899 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_852.npy.npy
900 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_777.npy.npy
901 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_460.npy.npy
902 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_51.npy.npy
903 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1778.npy.npy
904 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1360.npy.npy
905 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_957.npy.npy
906 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_153.npy.npy
907 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_42.npy.npy
908 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_136.npy.npy
909 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1825.npy.npy
910 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_803.npy.npy
911 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_510.npy.npy
912 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_150.npy.npy
913 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1789.npy.npy
914 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_982.npy.npy
915 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1290.npy.npy
916 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_73.npy.npy
917 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_911.npy.npy
918 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1417.npy.npy
919 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_741.npy.npy
920 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_437.npy.npy
921 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_900.npy.npy
922 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_888.npy.npy
923 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_36.npy.npy
924 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_400.npy.npy
925 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_92.npy.npy
926 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1232.npy.npy
927 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1285.npy.npy
928 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1422.npy.npy
929 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_942.npy.npy
930 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1281.npy.npy
931 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_159.npy.npy
932 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1364.npy.npy
933 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1421.npy.npy
934 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1282.npy.npy
935 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_761.npy.npy
936 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1244.npy.npy
937 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_758.npy.npy
938 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_75.npy.npy
939 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1827.npy.npy
940 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_103.npy.npy
941 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_764.npy.npy
942 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_5.npy.npy
943 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_3.npy.npy
944 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1246.npy.npy
945 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_334.npy.npy
946 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_429.npy.npy
947 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_796.npy.npy
948 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1264.npy.npy
949 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_509.npy.npy
950 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1237.npy.npy
951 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1297.npy.npy
952 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_142.npy.npy
953 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1374.npy.npy
954 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1355.npy.npy
955 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1314.npy.npy
956 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_33.npy.npy
957 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1828.npy.npy
958 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_135.npy.npy
959 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_514.npy.npy
960 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_121.npy.npy
961 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_149.npy.npy
962 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1345.npy.npy
963 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_1805.npy.npy
964 /mnt/nvme1/dataset_img/drone/1200/HackA5_1.2_743.npy.npy

@ -1,58 +0,0 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"id": "537ea5d0-1d6c-423e-9417-171b70a76c66",
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import pandas as pd\n",
"\n",
"path = '//192.168.11.63/data/DATASETS/Energomash/915_learning'\n",
"pd_columns = ['file_name']\n",
"df = pd.DataFrame(columns=pd_columns)\n",
"\n",
"p = 0\n",
"for i in os.walk(path):\n",
" p+=1\n",
" if p != 1:\n",
" for j in i[2]:\n",
" row = pd.DataFrame({pd_columns[0]: [str(str(i[0]) + '\\\\' + str(j)).replace('\\\\', '/')]})\n",
" df = pd.concat([df, row], ignore_index=True)\n",
"\n",
"df.to_csv(path + '\\dataset.csv', index=False)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8f6e1ff8",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

Binary file not shown.

@ -1,91 +0,0 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "689613d2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"80.58750000000002\n",
"(array([8.97705408, 4.95 , 0. ]), array([-8.97705408, 4.95 , 0. ]))\n"
]
}
],
"source": [
"import numpy \n",
"from math import sqrt as square\n",
"from numpy import sqrt, dot, cross \n",
"from numpy.linalg import norm \n",
"\n",
"#rssi = [rssi, max_rssi, min_rssi, gamma]\n",
"\n",
"def dist(rssi):\n",
" rssi = list(map(float, rssi))\n",
" return square(abs(rssi[0]-rssi[1]))*rssi[3]/square(abs(rssi[0]-rssi[2]))\n",
"\n",
"def sol(x1,x2,x3,rssi1,rssi2,rssi3):\n",
" r1 = dist(rssi1)\n",
" r2 = dist(rssi2)\n",
" r3 = dist(rssi3)\n",
" x1=numpy.array(x1)\n",
" x2=numpy.array(x2)\n",
" x3=numpy.array(x3)\n",
" temp1 = x2-x1 \n",
" e_x = temp1/norm(temp1) \n",
" temp2 = x3-x1 \n",
" i = dot(e_x,temp2) \n",
" temp3 = temp2 - i*e_x \n",
" e_y = temp3/norm(temp3) \n",
" e_z = cross(e_x,e_y) \n",
" d = norm(x2-x1) \n",
" j = dot(e_y,temp2) \n",
" x = (r1*r1 - r2*r2 + d*d) / (2*d) \n",
" y = (r1*r1 - r3*r3 -2*i*x + i*i + j*j) / (2*j) \n",
" temp4 = r1*r1 - x*x - y*y \n",
" print(temp4)\n",
" if temp4<0: \n",
" return \"Нет пересечения!\"\n",
" z = sqrt(temp4) \n",
" p_12_a = x1 + x*e_x + y*e_y + z*e_z \n",
" p_12_b = x1 + x*e_x + y*e_y - z*e_z \n",
" return p_12_a,p_12_b\n",
"\n",
"\n",
"print(sol([0,0,1],[0,0,-1],[0,10,0],[50,100,0,10.3],[50,100,0,10.3],[50,100,0,10.3]))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0a68f35a",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

@ -1,57 +0,0 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "f18afe4b",
"metadata": {},
"outputs": [],
"source": [
"import numpy \n",
"from math import sqrt as square\n",
"from numpy import sqrt, dot, cross \n",
"from numpy.linalg import norm \n",
"\n",
"#rssi = [rssi, max_rssi, min_rssi, gamma]\n",
"\n",
"def dist(rssi):\n",
" rssi = list(map(float, rssi))\n",
" return square(abs(rssi[0]-rssi[1]))*rssi[3]/square(abs(rssi[0]-rssi[2]))\n",
"\n",
"def sol(x1,x2,x3,rssi1,rssi2,rssi3):\n",
" r1 = dist(rssi1)\n",
" r2 = dist(rssi2)\n",
" r3 = dist(rssi3)\n",
" x1=numpy.array(x1)\n",
" x2=numpy.array(x2)\n",
" x3=numpy.array(x3)\n",
" \n",
" return sector.\n",
"\n",
"\n",
"print(sol([0,0,1],[0,0,-1],[0,10,0],[50,100,0,10.3],[50,100,0,10.3],[50,100,0,10.3]))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Loading…
Cancel
Save