Final Automatica
parent
b9bfb985e2
commit
339b2b1615
@ -0,0 +1,122 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -Eeuo pipefail
|
||||||
|
|
||||||
|
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
VENV_PATH="${PROJECT_ROOT}/.venv-train"
|
||||||
|
PYTHON_BIN="${PYTHON_BIN:-python3}"
|
||||||
|
KERNEL_NAME="${KERNEL_NAME:-dronedetector-train}"
|
||||||
|
KERNEL_DISPLAY="${KERNEL_DISPLAY:-DroneDetector Train}"
|
||||||
|
|
||||||
|
log() {
|
||||||
|
printf '[install_all_train] %s\n' "$*"
|
||||||
|
}
|
||||||
|
|
||||||
|
die() {
|
||||||
|
printf '[install_all_train] ERROR: %s\n' "$*" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
run_as_root() {
|
||||||
|
if [[ "${EUID}" -eq 0 ]]; then
|
||||||
|
"$@"
|
||||||
|
elif command -v sudo >/dev/null 2>&1; then
|
||||||
|
sudo "$@"
|
||||||
|
else
|
||||||
|
die "Root privileges are required to install host packages."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
preflight() {
|
||||||
|
[[ -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}/torchsig/pyproject.toml" ]] || die "Missing local torchsig package"
|
||||||
|
command -v "${PYTHON_BIN}" >/dev/null 2>&1 || die "${PYTHON_BIN} not found"
|
||||||
|
}
|
||||||
|
|
||||||
|
install_host_deps() {
|
||||||
|
if ! command -v apt-get >/dev/null 2>&1; then
|
||||||
|
log "apt-get not found; skipping host package installation"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "Installing host packages"
|
||||||
|
run_as_root apt-get update
|
||||||
|
run_as_root env DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
||||||
|
python3 \
|
||||||
|
python3-pip \
|
||||||
|
python3-venv \
|
||||||
|
python3-dev \
|
||||||
|
build-essential \
|
||||||
|
pkg-config \
|
||||||
|
libgl1 \
|
||||||
|
libglib2.0-0 \
|
||||||
|
libsm6 \
|
||||||
|
libxext6 \
|
||||||
|
libxrender-dev
|
||||||
|
}
|
||||||
|
|
||||||
|
setup_venv() {
|
||||||
|
log "Creating/updating ${VENV_PATH}"
|
||||||
|
if [[ ! -d "${VENV_PATH}" ]]; then
|
||||||
|
"${PYTHON_BIN}" -m venv "${VENV_PATH}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# shellcheck disable=SC1090
|
||||||
|
source "${VENV_PATH}/bin/activate"
|
||||||
|
python -m pip install --upgrade pip setuptools wheel
|
||||||
|
}
|
||||||
|
|
||||||
|
install_python_deps() {
|
||||||
|
log "Installing CUDA-enabled torch stack"
|
||||||
|
python -m pip install -r "${PROJECT_ROOT}/deploy/requirements/nn_gpu_pinned.txt"
|
||||||
|
|
||||||
|
log "Installing train notebook dependencies"
|
||||||
|
python -m pip install -r "${PROJECT_ROOT}/train_scripts/requirements-train.txt"
|
||||||
|
|
||||||
|
log "Installing local torchsig from repo"
|
||||||
|
python -m pip install -e "${PROJECT_ROOT}/torchsig" --no-deps
|
||||||
|
|
||||||
|
log "Registering Jupyter kernel ${KERNEL_NAME}"
|
||||||
|
python -m ipykernel install --user --name "${KERNEL_NAME}" --display-name "${KERNEL_DISPLAY}"
|
||||||
|
}
|
||||||
|
|
||||||
|
verify_install() {
|
||||||
|
log "Verifying imports"
|
||||||
|
python - <<'PY'
|
||||||
|
import cv2
|
||||||
|
import ipykernel
|
||||||
|
import matplotlib
|
||||||
|
import mlconfig
|
||||||
|
import numpy
|
||||||
|
import pandas
|
||||||
|
import scipy
|
||||||
|
import sklearn
|
||||||
|
import torch
|
||||||
|
import torchvision
|
||||||
|
import torchsig
|
||||||
|
|
||||||
|
print('python_ok', True)
|
||||||
|
print('torch', torch.__version__)
|
||||||
|
print('torchvision', torchvision.__version__)
|
||||||
|
print('cuda_available', torch.cuda.is_available())
|
||||||
|
print('torch_cuda', torch.version.cuda)
|
||||||
|
print('torchsig', getattr(torchsig, '__version__', 'unknown'))
|
||||||
|
PY
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
preflight
|
||||||
|
|
||||||
|
if [[ "${1:-}" != "--skip-apt" ]]; then
|
||||||
|
install_host_deps
|
||||||
|
else
|
||||||
|
log "Skipping host package installation (--skip-apt)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
setup_venv
|
||||||
|
install_python_deps
|
||||||
|
verify_install
|
||||||
|
log "SUCCESS: .venv-train is ready"
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
@ -0,0 +1,241 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-3.0
|
||||||
|
#
|
||||||
|
# GNU Radio Python Flow Graph
|
||||||
|
# Title: data_saver
|
||||||
|
# GNU Radio version: 3.10.12.0
|
||||||
|
|
||||||
|
from PyQt5 import Qt
|
||||||
|
from gnuradio import qtgui
|
||||||
|
import data_saver_epy_block_0 as epy_block_0 # embedded python block
|
||||||
|
import osmosdr
|
||||||
|
import time
|
||||||
|
import sip
|
||||||
|
import threading
|
||||||
|
from gnuradio import gr
|
||||||
|
from gnuradio.filter import firdes
|
||||||
|
from gnuradio.fft import window
|
||||||
|
import sys
|
||||||
|
import signal
|
||||||
|
from argparse import ArgumentParser
|
||||||
|
from gnuradio.eng_arg import eng_float, intx
|
||||||
|
from gnuradio import eng_notation
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class data_saver(gr.top_block, Qt.QWidget):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
gr.top_block.__init__(self, "data_saver", catch_exceptions=True)
|
||||||
|
Qt.QWidget.__init__(self)
|
||||||
|
self.setWindowTitle("data_saver")
|
||||||
|
qtgui.util.check_set_qss()
|
||||||
|
try:
|
||||||
|
self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
|
||||||
|
except BaseException as exc:
|
||||||
|
print(f"Qt GUI: Could not set Icon: {str(exc)}", file=sys.stderr)
|
||||||
|
self.top_scroll_layout = Qt.QVBoxLayout()
|
||||||
|
self.setLayout(self.top_scroll_layout)
|
||||||
|
self.top_scroll = Qt.QScrollArea()
|
||||||
|
self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
|
||||||
|
self.top_scroll_layout.addWidget(self.top_scroll)
|
||||||
|
self.top_scroll.setWidgetResizable(True)
|
||||||
|
self.top_widget = Qt.QWidget()
|
||||||
|
self.top_scroll.setWidget(self.top_widget)
|
||||||
|
self.top_layout = Qt.QVBoxLayout(self.top_widget)
|
||||||
|
self.top_grid_layout = Qt.QGridLayout()
|
||||||
|
self.top_layout.addLayout(self.top_grid_layout)
|
||||||
|
|
||||||
|
self.settings = Qt.QSettings("gnuradio/flowgraphs", "data_saver")
|
||||||
|
|
||||||
|
try:
|
||||||
|
geometry = self.settings.value("geometry")
|
||||||
|
if geometry:
|
||||||
|
self.restoreGeometry(geometry)
|
||||||
|
except BaseException as exc:
|
||||||
|
print(f"Qt GUI: Could not restore geometry: {str(exc)}", file=sys.stderr)
|
||||||
|
self.flowgraph_started = threading.Event()
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
# Variables
|
||||||
|
##################################################
|
||||||
|
self.samp_rate = samp_rate = 20e6
|
||||||
|
self.freq = freq = 1.160e9
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
# Blocks
|
||||||
|
##################################################
|
||||||
|
|
||||||
|
self.qtgui_waterfall_sink_x_0 = qtgui.waterfall_sink_c(
|
||||||
|
32768, #size
|
||||||
|
window.WIN_HAMMING, #wintype
|
||||||
|
freq, #fc
|
||||||
|
samp_rate, #bw
|
||||||
|
"", #name
|
||||||
|
1, #number of inputs
|
||||||
|
None # parent
|
||||||
|
)
|
||||||
|
self.qtgui_waterfall_sink_x_0.set_update_time(0.10)
|
||||||
|
self.qtgui_waterfall_sink_x_0.enable_grid(False)
|
||||||
|
self.qtgui_waterfall_sink_x_0.enable_axis_labels(True)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
labels = ['', '', '', '', '',
|
||||||
|
'', '', '', '', '']
|
||||||
|
colors = [0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0]
|
||||||
|
alphas = [1.0, 1.0, 1.0, 1.0, 1.0,
|
||||||
|
1.0, 1.0, 1.0, 1.0, 1.0]
|
||||||
|
|
||||||
|
for i in range(1):
|
||||||
|
if len(labels[i]) == 0:
|
||||||
|
self.qtgui_waterfall_sink_x_0.set_line_label(i, "Data {0}".format(i))
|
||||||
|
else:
|
||||||
|
self.qtgui_waterfall_sink_x_0.set_line_label(i, labels[i])
|
||||||
|
self.qtgui_waterfall_sink_x_0.set_color_map(i, colors[i])
|
||||||
|
self.qtgui_waterfall_sink_x_0.set_line_alpha(i, alphas[i])
|
||||||
|
|
||||||
|
self.qtgui_waterfall_sink_x_0.set_intensity_range(-140, 10)
|
||||||
|
|
||||||
|
self._qtgui_waterfall_sink_x_0_win = sip.wrapinstance(self.qtgui_waterfall_sink_x_0.qwidget(), Qt.QWidget)
|
||||||
|
|
||||||
|
self.top_layout.addWidget(self._qtgui_waterfall_sink_x_0_win)
|
||||||
|
self.qtgui_time_sink_x_0_1 = qtgui.time_sink_c(
|
||||||
|
1000000, #size
|
||||||
|
samp_rate, #samp_rate
|
||||||
|
"", #name
|
||||||
|
1, #number of inputs
|
||||||
|
None # parent
|
||||||
|
)
|
||||||
|
self.qtgui_time_sink_x_0_1.set_update_time(0.01)
|
||||||
|
self.qtgui_time_sink_x_0_1.set_y_axis(-2, 2)
|
||||||
|
|
||||||
|
self.qtgui_time_sink_x_0_1.set_y_label('Amplitude', "")
|
||||||
|
|
||||||
|
self.qtgui_time_sink_x_0_1.enable_tags(True)
|
||||||
|
self.qtgui_time_sink_x_0_1.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "")
|
||||||
|
self.qtgui_time_sink_x_0_1.enable_autoscale(False)
|
||||||
|
self.qtgui_time_sink_x_0_1.enable_grid(False)
|
||||||
|
self.qtgui_time_sink_x_0_1.enable_axis_labels(True)
|
||||||
|
self.qtgui_time_sink_x_0_1.enable_control_panel(False)
|
||||||
|
self.qtgui_time_sink_x_0_1.enable_stem_plot(False)
|
||||||
|
|
||||||
|
|
||||||
|
labels = ['', '', '', '', '',
|
||||||
|
'', '', '', '', '']
|
||||||
|
widths = [1, 1, 1, 1, 1,
|
||||||
|
1, 1, 1, 1, 1]
|
||||||
|
colors = ['blue', 'red', 'green', 'black', 'cyan',
|
||||||
|
'magenta', 'yellow', 'dark red', 'dark green', 'dark blue']
|
||||||
|
alphas = [1.0, 1.0, 1.0, 1.0, 1.0,
|
||||||
|
1.0, 1.0, 1.0, 1.0, 1.0]
|
||||||
|
styles = [1, 1, 1, 1, 1,
|
||||||
|
1, 1, 1, 1, 1]
|
||||||
|
markers = [-1, -1, -1, -1, -1,
|
||||||
|
-1, -1, -1, -1, -1]
|
||||||
|
|
||||||
|
|
||||||
|
for i in range(2):
|
||||||
|
if len(labels[i]) == 0:
|
||||||
|
if (i % 2 == 0):
|
||||||
|
self.qtgui_time_sink_x_0_1.set_line_label(i, "Re{{Data {0}}}".format(i/2))
|
||||||
|
else:
|
||||||
|
self.qtgui_time_sink_x_0_1.set_line_label(i, "Im{{Data {0}}}".format(i/2))
|
||||||
|
else:
|
||||||
|
self.qtgui_time_sink_x_0_1.set_line_label(i, labels[i])
|
||||||
|
self.qtgui_time_sink_x_0_1.set_line_width(i, widths[i])
|
||||||
|
self.qtgui_time_sink_x_0_1.set_line_color(i, colors[i])
|
||||||
|
self.qtgui_time_sink_x_0_1.set_line_style(i, styles[i])
|
||||||
|
self.qtgui_time_sink_x_0_1.set_line_marker(i, markers[i])
|
||||||
|
self.qtgui_time_sink_x_0_1.set_line_alpha(i, alphas[i])
|
||||||
|
|
||||||
|
self._qtgui_time_sink_x_0_1_win = sip.wrapinstance(self.qtgui_time_sink_x_0_1.qwidget(), Qt.QWidget)
|
||||||
|
self.top_layout.addWidget(self._qtgui_time_sink_x_0_1_win)
|
||||||
|
self.hack_serial=input()
|
||||||
|
self.osmosdr_source_1 = osmosdr.source(
|
||||||
|
args="numchan=" + str(1) + " " + 'hackrf='+self.hack_serial
|
||||||
|
)
|
||||||
|
self.osmosdr_source_1.set_time_unknown_pps(osmosdr.time_spec_t())
|
||||||
|
self.osmosdr_source_1.set_sample_rate(samp_rate)
|
||||||
|
self.osmosdr_source_1.set_center_freq(freq, 0)
|
||||||
|
self.osmosdr_source_1.set_freq_corr(0, 0)
|
||||||
|
self.osmosdr_source_1.set_dc_offset_mode(0, 0)
|
||||||
|
self.osmosdr_source_1.set_iq_balance_mode(0, 0)
|
||||||
|
self.osmosdr_source_1.set_gain_mode(False, 0)
|
||||||
|
self.osmosdr_source_1.set_gain(12, 0)
|
||||||
|
self.osmosdr_source_1.set_if_gain(30, 0)
|
||||||
|
self.osmosdr_source_1.set_bb_gain(36, 0)
|
||||||
|
self.osmosdr_source_1.set_antenna('', 0)
|
||||||
|
self.osmosdr_source_1.set_bandwidth(0, 0)
|
||||||
|
self.epy_block_0 = epy_block_0.Simsi_Sink(SaveDir='home/sibscience-4/Dataset/1160', FileTag='DJI_3', SplitSize=400000, Delay=0.1)
|
||||||
|
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
# Connections
|
||||||
|
##################################################
|
||||||
|
self.connect((self.osmosdr_source_1, 0), (self.epy_block_0, 0))
|
||||||
|
self.connect((self.osmosdr_source_1, 0), (self.qtgui_time_sink_x_0_1, 0))
|
||||||
|
self.connect((self.osmosdr_source_1, 0), (self.qtgui_waterfall_sink_x_0, 0))
|
||||||
|
|
||||||
|
|
||||||
|
def closeEvent(self, event):
|
||||||
|
self.settings = Qt.QSettings("gnuradio/flowgraphs", "data_saver")
|
||||||
|
self.settings.setValue("geometry", self.saveGeometry())
|
||||||
|
self.stop()
|
||||||
|
self.wait()
|
||||||
|
|
||||||
|
event.accept()
|
||||||
|
|
||||||
|
def get_samp_rate(self):
|
||||||
|
return self.samp_rate
|
||||||
|
|
||||||
|
def set_samp_rate(self, samp_rate):
|
||||||
|
self.samp_rate = samp_rate
|
||||||
|
self.osmosdr_source_1.set_sample_rate(self.samp_rate)
|
||||||
|
self.qtgui_time_sink_x_0_1.set_samp_rate(self.samp_rate)
|
||||||
|
self.qtgui_waterfall_sink_x_0.set_frequency_range(self.freq, self.samp_rate)
|
||||||
|
|
||||||
|
def get_freq(self):
|
||||||
|
return self.freq
|
||||||
|
|
||||||
|
def set_freq(self, freq):
|
||||||
|
self.freq = freq
|
||||||
|
self.osmosdr_source_1.set_center_freq(self.freq, 0)
|
||||||
|
self.qtgui_waterfall_sink_x_0.set_frequency_range(self.freq, self.samp_rate)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def main(top_block_cls=data_saver, options=None):
|
||||||
|
|
||||||
|
qapp = Qt.QApplication(sys.argv)
|
||||||
|
|
||||||
|
tb = top_block_cls()
|
||||||
|
|
||||||
|
tb.start()
|
||||||
|
tb.flowgraph_started.set()
|
||||||
|
|
||||||
|
tb.show()
|
||||||
|
|
||||||
|
def sig_handler(sig=None, frame=None):
|
||||||
|
tb.stop()
|
||||||
|
tb.wait()
|
||||||
|
|
||||||
|
Qt.QApplication.quit()
|
||||||
|
|
||||||
|
signal.signal(signal.SIGINT, sig_handler)
|
||||||
|
signal.signal(signal.SIGTERM, sig_handler)
|
||||||
|
|
||||||
|
timer = Qt.QTimer()
|
||||||
|
timer.start(500)
|
||||||
|
timer.timeout.connect(lambda: None)
|
||||||
|
|
||||||
|
qapp.exec_()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
@ -0,0 +1,76 @@
|
|||||||
|
"""
|
||||||
|
Embedded Python Blocks:
|
||||||
|
|
||||||
|
Each time this file is saved, GRC will instantiate the first class it finds
|
||||||
|
to get ports and parameters of your block. The arguments to __init__ will
|
||||||
|
be the parameters. All of them are required to have default values!
|
||||||
|
"""
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
from gnuradio import gr
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import sys
|
||||||
|
import gc
|
||||||
|
|
||||||
|
class Simsi_Sink(gr.sync_block): # other base classes are basic_block, decim_block, interp_block
|
||||||
|
"""Embedded Python Block example - a simple multiply const"""
|
||||||
|
|
||||||
|
def __init__(self, SaveDir="./signal", FileTag="fragment_", SplitSize=1000000, Delay=2): # only default arguments here
|
||||||
|
"""arguments to this function show up as parameters in GRC"""
|
||||||
|
gr.sync_block.__init__(
|
||||||
|
self,
|
||||||
|
name='Simsi_Sink', # will show up in GRC
|
||||||
|
in_sig=[np.complex64],
|
||||||
|
out_sig=None#[np.complex64]
|
||||||
|
)
|
||||||
|
self.Delay = Delay
|
||||||
|
self.FileTag = FileTag
|
||||||
|
self.SplitSize = SplitSize
|
||||||
|
|
||||||
|
self.SaveDir = SaveDir
|
||||||
|
if not os.path.exists(self.SaveDir) and self.SaveDir == "./signal":
|
||||||
|
os.mkdir("signal")
|
||||||
|
|
||||||
|
self.it = 0
|
||||||
|
self.Signal = np.array([], dtype=np.float32)
|
||||||
|
self.data_dir = SaveDir
|
||||||
|
|
||||||
|
self.last_file_path = self.data_dir + "/" + self.FileTag + str(self.it)
|
||||||
|
self.last_fd = open(self.last_file_path, "wb")
|
||||||
|
self.last_file_len = 0
|
||||||
|
|
||||||
|
|
||||||
|
self.reading_in_progress_file_path = self.data_dir + "/reading_in_progress"
|
||||||
|
self.reading_in_progress_file_fd = open(self.reading_in_progress_file_path, "wb")
|
||||||
|
|
||||||
|
print(self.Signal)
|
||||||
|
print(self.data_dir)
|
||||||
|
# if an attribute with the same name as a parameter is found,
|
||||||
|
# a callback is registered (properties work, too).
|
||||||
|
|
||||||
|
def work(self, input_items, output_items):
|
||||||
|
"""example: multiply with constant"""
|
||||||
|
length = len(input_items[0])
|
||||||
|
self.last_file_len += length
|
||||||
|
|
||||||
|
if self.last_file_len > self.SplitSize:
|
||||||
|
print("Saving file: " + str(self.last_file_path))
|
||||||
|
length = length - (self.last_file_len - self.SplitSize)
|
||||||
|
self.last_fd.write(input_items[0][0:length].copy())
|
||||||
|
self.it += 1
|
||||||
|
self.last_file_len = 0
|
||||||
|
self.last_file_path = self.data_dir + '/' + self.FileTag + str(self.it)
|
||||||
|
self.last_fd.close()
|
||||||
|
self.reading_in_progress_file_fd.close()
|
||||||
|
os.remove(self.reading_in_progress_file_path)
|
||||||
|
time.sleep(self.Delay)
|
||||||
|
self.reading_in_progress_file_fd = open(self.reading_in_progress_file_path, "wb")
|
||||||
|
self.last_fd = open(self.last_file_path, "wb")
|
||||||
|
|
||||||
|
else:
|
||||||
|
self.last_fd.write(input_items[0].copy())
|
||||||
|
|
||||||
|
|
||||||
|
return len(input_items[0])
|
||||||
@ -0,0 +1,237 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import signal
|
||||||
|
import argparse
|
||||||
|
import threading
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
from gnuradio import gr
|
||||||
|
import osmosdr
|
||||||
|
|
||||||
|
|
||||||
|
class SimsiSink(gr.sync_block):
|
||||||
|
def __init__(self, save_dir="./signal", file_tag="fragment_", split_size=1000000, delay=0.0):
|
||||||
|
gr.sync_block.__init__(
|
||||||
|
self,
|
||||||
|
name="Simsi_Sink",
|
||||||
|
in_sig=[np.complex64],
|
||||||
|
out_sig=None,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.save_dir = str(save_dir)
|
||||||
|
self.file_tag = str(file_tag)
|
||||||
|
self.split_size = int(split_size)
|
||||||
|
self.delay = float(delay)
|
||||||
|
|
||||||
|
os.makedirs(self.save_dir, exist_ok=True)
|
||||||
|
|
||||||
|
self.file_index = 0
|
||||||
|
self.current_len = 0
|
||||||
|
self.current_fd = None
|
||||||
|
|
||||||
|
self.in_progress_path = os.path.join(self.save_dir, "reading_in_progress")
|
||||||
|
self.in_progress_fd = None
|
||||||
|
|
||||||
|
self._open_next_file()
|
||||||
|
|
||||||
|
def _touch_in_progress(self):
|
||||||
|
if self.in_progress_fd is not None:
|
||||||
|
try:
|
||||||
|
self.in_progress_fd.close()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
self.in_progress_fd = open(self.in_progress_path, "wb")
|
||||||
|
|
||||||
|
def _remove_in_progress(self):
|
||||||
|
if self.in_progress_fd is not None:
|
||||||
|
try:
|
||||||
|
self.in_progress_fd.close()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
self.in_progress_fd = None
|
||||||
|
|
||||||
|
if os.path.exists(self.in_progress_path):
|
||||||
|
try:
|
||||||
|
os.remove(self.in_progress_path)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def _current_file_path(self):
|
||||||
|
return os.path.join(self.save_dir, f"{self.file_tag}{self.file_index}")
|
||||||
|
|
||||||
|
def _open_next_file(self):
|
||||||
|
self._touch_in_progress()
|
||||||
|
path = self._current_file_path()
|
||||||
|
self.current_fd = open(path, "wb")
|
||||||
|
self.current_len = 0
|
||||||
|
print(f"Opened file: {path}", flush=True)
|
||||||
|
|
||||||
|
def _rotate_file(self):
|
||||||
|
path = self._current_file_path()
|
||||||
|
print(f"Saving file: {path}", flush=True)
|
||||||
|
|
||||||
|
if self.current_fd is not None:
|
||||||
|
self.current_fd.close()
|
||||||
|
self.current_fd = None
|
||||||
|
|
||||||
|
self._remove_in_progress()
|
||||||
|
|
||||||
|
if self.delay > 0:
|
||||||
|
time.sleep(self.delay)
|
||||||
|
|
||||||
|
self.file_index += 1
|
||||||
|
self._open_next_file()
|
||||||
|
|
||||||
|
def work(self, input_items, output_items):
|
||||||
|
data = input_items[0]
|
||||||
|
offset = 0
|
||||||
|
total = len(data)
|
||||||
|
|
||||||
|
while offset < total:
|
||||||
|
remaining = self.split_size - self.current_len
|
||||||
|
chunk = min(remaining, total - offset)
|
||||||
|
|
||||||
|
self.current_fd.write(data[offset:offset + chunk].copy())
|
||||||
|
self.current_len += chunk
|
||||||
|
offset += chunk
|
||||||
|
|
||||||
|
if self.current_len >= self.split_size:
|
||||||
|
self._rotate_file()
|
||||||
|
|
||||||
|
return len(data)
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
try:
|
||||||
|
if self.current_fd is not None:
|
||||||
|
self.current_fd.close()
|
||||||
|
self.current_fd = None
|
||||||
|
finally:
|
||||||
|
self._remove_in_progress()
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
class DataSaver(gr.top_block):
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
serial: str,
|
||||||
|
freq: float,
|
||||||
|
save_dir: str,
|
||||||
|
file_tag: str,
|
||||||
|
samp_rate: float,
|
||||||
|
split_size: int,
|
||||||
|
delay: float,
|
||||||
|
rf_gain: float,
|
||||||
|
if_gain: float,
|
||||||
|
bb_gain: float,
|
||||||
|
):
|
||||||
|
super().__init__("data_saver_headless", catch_exceptions=True)
|
||||||
|
|
||||||
|
self.serial = serial
|
||||||
|
self.freq = float(freq)
|
||||||
|
self.save_dir = save_dir
|
||||||
|
self.file_tag = file_tag
|
||||||
|
self.samp_rate = float(samp_rate)
|
||||||
|
self.split_size = int(split_size)
|
||||||
|
self.delay = float(delay)
|
||||||
|
self.rf_gain = float(rf_gain)
|
||||||
|
self.if_gain = float(if_gain)
|
||||||
|
self.bb_gain = float(bb_gain)
|
||||||
|
|
||||||
|
dev_args = f"numchan=1 hackrf={self.serial}"
|
||||||
|
|
||||||
|
self.source = osmosdr.source(args=dev_args)
|
||||||
|
self.source.set_time_unknown_pps(osmosdr.time_spec_t())
|
||||||
|
self.source.set_sample_rate(self.samp_rate)
|
||||||
|
self.source.set_center_freq(self.freq, 0)
|
||||||
|
self.source.set_freq_corr(0, 0)
|
||||||
|
self.source.set_dc_offset_mode(0, 0)
|
||||||
|
self.source.set_iq_balance_mode(0, 0)
|
||||||
|
self.source.set_gain_mode(False, 0)
|
||||||
|
self.source.set_gain(self.rf_gain, 0)
|
||||||
|
self.source.set_if_gain(self.if_gain, 0)
|
||||||
|
self.source.set_bb_gain(self.bb_gain, 0)
|
||||||
|
self.source.set_antenna("", 0)
|
||||||
|
self.source.set_bandwidth(0, 0)
|
||||||
|
|
||||||
|
self.sink = SimsiSink(
|
||||||
|
save_dir=self.save_dir,
|
||||||
|
file_tag=self.file_tag,
|
||||||
|
split_size=self.split_size,
|
||||||
|
delay=self.delay,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.connect((self.source, 0), (self.sink, 0))
|
||||||
|
|
||||||
|
|
||||||
|
def parse_args():
|
||||||
|
parser = argparse.ArgumentParser(description="Headless GNU Radio IQ saver for HackRF")
|
||||||
|
|
||||||
|
parser.add_argument("--serial", required=True, help="HackRF serial number")
|
||||||
|
parser.add_argument("--freq", type=float, required=True, help="Center frequency in Hz")
|
||||||
|
parser.add_argument("--save-dir", required=True, help="Directory for output IQ files")
|
||||||
|
parser.add_argument("--file-tag", default="fragment_", help="Prefix for output files")
|
||||||
|
|
||||||
|
parser.add_argument("--samp-rate", type=float, default=20e6, help="Sample rate in S/s")
|
||||||
|
parser.add_argument("--split-size", type=int, default=400000, help="Max complex samples per file")
|
||||||
|
parser.add_argument("--delay", type=float, default=0.1, help="Delay between files in seconds")
|
||||||
|
|
||||||
|
parser.add_argument("--rf-gain", type=float, default=12, help="HackRF RF gain")
|
||||||
|
parser.add_argument("--if-gain", type=float, default=30, help="HackRF IF gain")
|
||||||
|
parser.add_argument("--bb-gain", type=float, default=36, help="HackRF BB gain")
|
||||||
|
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
args = parse_args()
|
||||||
|
|
||||||
|
tb = DataSaver(
|
||||||
|
serial=args.serial,
|
||||||
|
freq=args.freq,
|
||||||
|
save_dir=args.save_dir,
|
||||||
|
file_tag=args.file_tag,
|
||||||
|
samp_rate=args.samp_rate,
|
||||||
|
split_size=args.split_size,
|
||||||
|
delay=args.delay,
|
||||||
|
rf_gain=args.rf_gain,
|
||||||
|
if_gain=args.if_gain,
|
||||||
|
bb_gain=args.bb_gain,
|
||||||
|
)
|
||||||
|
|
||||||
|
stop_event = threading.Event()
|
||||||
|
|
||||||
|
def handle_signal(sig, frame):
|
||||||
|
print(f"Received signal {sig}, stopping...", flush=True)
|
||||||
|
stop_event.set()
|
||||||
|
tb.stop()
|
||||||
|
tb.wait()
|
||||||
|
|
||||||
|
signal.signal(signal.SIGINT, handle_signal)
|
||||||
|
signal.signal(signal.SIGTERM, handle_signal)
|
||||||
|
|
||||||
|
print("Starting flowgraph...", flush=True)
|
||||||
|
print(f" serial: {args.serial}", flush=True)
|
||||||
|
print(f" freq: {args.freq}", flush=True)
|
||||||
|
print(f" save_dir: {args.save_dir}", flush=True)
|
||||||
|
print(f" file_tag: {args.file_tag}", flush=True)
|
||||||
|
print(f" samp_rate: {args.samp_rate}", flush=True)
|
||||||
|
print(f" split_size: {args.split_size}", flush=True)
|
||||||
|
print(f" gains: rf={args.rf_gain} if={args.if_gain} bb={args.bb_gain}", flush=True)
|
||||||
|
|
||||||
|
tb.start()
|
||||||
|
|
||||||
|
try:
|
||||||
|
while not stop_event.is_set():
|
||||||
|
time.sleep(0.5)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
handle_signal(signal.SIGINT, None)
|
||||||
|
|
||||||
|
print("Stopped.", flush=True)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@ -0,0 +1,575 @@
|
|||||||
|
options:
|
||||||
|
parameters:
|
||||||
|
author: ''
|
||||||
|
catch_exceptions: 'True'
|
||||||
|
category: '[GRC Hier Blocks]'
|
||||||
|
cmake_opt: ''
|
||||||
|
comment: ''
|
||||||
|
copyright: ''
|
||||||
|
description: 'Headless IQ saver for HackRF over SSH'
|
||||||
|
gen_cmake: 'On'
|
||||||
|
gen_linking: dynamic
|
||||||
|
generate_options: no_gui
|
||||||
|
hier_block_src_path: '.:'
|
||||||
|
id: data_saver
|
||||||
|
max_nouts: '0'
|
||||||
|
output_language: python
|
||||||
|
placement: (0,0)
|
||||||
|
qt_qss_theme: ''
|
||||||
|
realtime_scheduling: ''
|
||||||
|
run: 'True'
|
||||||
|
run_command: '{python} -u {filename}'
|
||||||
|
run_options: prompt
|
||||||
|
sizing_mode: fixed
|
||||||
|
thread_safe_setters: ''
|
||||||
|
title: data_saver
|
||||||
|
window_size: ''
|
||||||
|
states:
|
||||||
|
bus_sink: false
|
||||||
|
bus_source: false
|
||||||
|
bus_structure: null
|
||||||
|
coordinate: [8, 8]
|
||||||
|
rotation: 0
|
||||||
|
state: enabled
|
||||||
|
|
||||||
|
blocks:
|
||||||
|
- name: serial
|
||||||
|
id: parameter
|
||||||
|
parameters:
|
||||||
|
category: Parameters
|
||||||
|
comment: 'HackRF serial'
|
||||||
|
hide: none
|
||||||
|
label: serial
|
||||||
|
short_id: s
|
||||||
|
type: string
|
||||||
|
value: '00000000000000000000000000000000'
|
||||||
|
states:
|
||||||
|
coordinate: [48, 48]
|
||||||
|
rotation: 0
|
||||||
|
state: enabled
|
||||||
|
|
||||||
|
- name: freq
|
||||||
|
id: parameter
|
||||||
|
parameters:
|
||||||
|
category: Parameters
|
||||||
|
comment: 'Center frequency in Hz'
|
||||||
|
hide: none
|
||||||
|
label: freq
|
||||||
|
short_id: f
|
||||||
|
type: real
|
||||||
|
value: '1.160e9'
|
||||||
|
states:
|
||||||
|
coordinate: [48, 96]
|
||||||
|
rotation: 0
|
||||||
|
state: enabled
|
||||||
|
|
||||||
|
- name: save_dir
|
||||||
|
id: parameter
|
||||||
|
parameters:
|
||||||
|
category: Parameters
|
||||||
|
comment: 'Directory for IQ files'
|
||||||
|
hide: none
|
||||||
|
label: save_dir
|
||||||
|
short_id: o
|
||||||
|
type: string
|
||||||
|
value: '/tmp/data_saver'
|
||||||
|
states:
|
||||||
|
coordinate: [48, 144]
|
||||||
|
rotation: 0
|
||||||
|
state: enabled
|
||||||
|
|
||||||
|
- name: file_tag
|
||||||
|
id: parameter
|
||||||
|
parameters:
|
||||||
|
category: Parameters
|
||||||
|
comment: 'File prefix'
|
||||||
|
hide: none
|
||||||
|
label: file_tag
|
||||||
|
short_id: t
|
||||||
|
type: string
|
||||||
|
value: 'fragment_'
|
||||||
|
states:
|
||||||
|
coordinate: [48, 192]
|
||||||
|
rotation: 0
|
||||||
|
state: enabled
|
||||||
|
|
||||||
|
- name: samp_rate
|
||||||
|
id: parameter
|
||||||
|
parameters:
|
||||||
|
category: Parameters
|
||||||
|
comment: 'Sample rate in S/s'
|
||||||
|
hide: none
|
||||||
|
label: samp_rate
|
||||||
|
short_id: r
|
||||||
|
type: real
|
||||||
|
value: '20e6'
|
||||||
|
states:
|
||||||
|
coordinate: [48, 240]
|
||||||
|
rotation: 0
|
||||||
|
state: enabled
|
||||||
|
|
||||||
|
- name: split_size
|
||||||
|
id: parameter
|
||||||
|
parameters:
|
||||||
|
category: Parameters
|
||||||
|
comment: 'Max complex samples per file'
|
||||||
|
hide: none
|
||||||
|
label: split_size
|
||||||
|
short_id: n
|
||||||
|
type: intx
|
||||||
|
value: '400000'
|
||||||
|
states:
|
||||||
|
coordinate: [48, 288]
|
||||||
|
rotation: 0
|
||||||
|
state: enabled
|
||||||
|
|
||||||
|
- name: delay
|
||||||
|
id: parameter
|
||||||
|
parameters:
|
||||||
|
category: Parameters
|
||||||
|
comment: 'Delay between files in seconds'
|
||||||
|
hide: none
|
||||||
|
label: delay
|
||||||
|
short_id: d
|
||||||
|
type: real
|
||||||
|
value: '0.1'
|
||||||
|
states:
|
||||||
|
coordinate: [48, 336]
|
||||||
|
rotation: 0
|
||||||
|
state: enabled
|
||||||
|
|
||||||
|
- name: rf_gain
|
||||||
|
id: parameter
|
||||||
|
parameters:
|
||||||
|
category: Parameters
|
||||||
|
comment: 'HackRF RF gain'
|
||||||
|
hide: none
|
||||||
|
label: rf_gain
|
||||||
|
short_id: g
|
||||||
|
type: real
|
||||||
|
value: '12'
|
||||||
|
states:
|
||||||
|
coordinate: [48, 384]
|
||||||
|
rotation: 0
|
||||||
|
state: enabled
|
||||||
|
|
||||||
|
- name: if_gain
|
||||||
|
id: parameter
|
||||||
|
parameters:
|
||||||
|
category: Parameters
|
||||||
|
comment: 'HackRF IF gain'
|
||||||
|
hide: none
|
||||||
|
label: if_gain
|
||||||
|
short_id: i
|
||||||
|
type: real
|
||||||
|
value: '30'
|
||||||
|
states:
|
||||||
|
coordinate: [48, 432]
|
||||||
|
rotation: 0
|
||||||
|
state: enabled
|
||||||
|
|
||||||
|
- name: bb_gain
|
||||||
|
id: parameter
|
||||||
|
parameters:
|
||||||
|
category: Parameters
|
||||||
|
comment: 'HackRF baseband gain'
|
||||||
|
hide: none
|
||||||
|
label: bb_gain
|
||||||
|
short_id: b
|
||||||
|
type: real
|
||||||
|
value: '36'
|
||||||
|
states:
|
||||||
|
coordinate: [48, 480]
|
||||||
|
rotation: 0
|
||||||
|
state: enabled
|
||||||
|
|
||||||
|
- name: dev_args
|
||||||
|
id: variable
|
||||||
|
parameters:
|
||||||
|
comment: ''
|
||||||
|
value: '"hackrf=" + str(serial)'
|
||||||
|
states:
|
||||||
|
coordinate: [48, 540]
|
||||||
|
rotation: 0
|
||||||
|
state: enabled
|
||||||
|
|
||||||
|
- name: epy_block_0
|
||||||
|
id: epy_block
|
||||||
|
parameters:
|
||||||
|
Delay: delay
|
||||||
|
FileTag: file_tag
|
||||||
|
SaveDir: save_dir
|
||||||
|
SplitSize: split_size
|
||||||
|
_source_code: "\"\"\"\nEmbedded Python Blocks:\n\nHeadless IQ writer with file splitting.\n\"\"\"\n\nimport numpy as np\nfrom gnuradio import gr\nimport os\nimport time\n\n\nclass Simsi_Sink(gr.sync_block):\n def __init__(self, SaveDir=\"./signal\", FileTag=\"fragment_\", SplitSize=1000000, Delay=0.0):\n gr.sync_block.__init__(\n self,\n name='Simsi_Sink',\n in_sig=[np.complex64],\n out_sig=None\n )\n\n self.Delay = float(Delay)\n self.FileTag = str(FileTag)\n self.SplitSize = int(SplitSize)\n self.SaveDir = str(SaveDir)\n\n os.makedirs(self.SaveDir, exist_ok=True)\n\n self.it = 0\n self.last_file_len = 0\n self.last_fd = None\n\n self.reading_in_progress_file_path = os.path.join(self.SaveDir, 'reading_in_progress')\n self.reading_in_progress_file_fd = None\n\n self._open_next_file()\n\n def _touch_in_progress(self):\n if self.reading_in_progress_file_fd is not None:\n try:\n self.reading_in_progress_file_fd.close()\n except Exception:\n pass\n self.reading_in_progress_file_fd = open(self.reading_in_progress_file_path, 'wb')\n\n def _remove_in_progress(self):\n if self.reading_in_progress_file_fd is not None:\n try:\n self.reading_in_progress_file_fd.close()\n except Exception:\n pass\n self.reading_in_progress_file_fd = None\n if os.path.exists(self.reading_in_progress_file_path):\n try:\n os.remove(self.reading_in_progress_file_path)\n except Exception:\n pass\n\n def _open_next_file(self):\n self._touch_in_progress()\n self.last_file_path = os.path.join(self.SaveDir, f\"{self.FileTag}{self.it}\")\n self.last_fd = open(self.last_file_path, 'wb')\n self.last_file_len = 0\n print(f\"Opened file: {self.last_file_path}\", flush=True)\n\n def _rotate_file(self):\n if self.last_fd is not None:\n self.last_fd.close()\n self.last_fd = None\n self._remove_in_progress()\n if self.Delay > 0:\n time.sleep(self.Delay)\n self.it += 1\n self._open_next_file()\n\n def stop(self):\n try:\n if self.last_fd is not None:\n self.last_fd.close()\n self.last_fd = None\n finally:\n self._remove_in_progress()\n return True\n\n def work(self, input_items, output_items):\n data = input_items[0]\n offset = 0\n total = len(data)\n\n while offset < total:\n remaining = self.SplitSize - self.last_file_len\n chunk = min(remaining, total - offset)\n\n self.last_fd.write(data[offset:offset + chunk].copy())\n self.last_file_len += chunk\n offset += chunk\n\n if self.last_file_len >= self.SplitSize:\n print(f\"Saving file: {self.last_file_path}\", flush=True)\n self._rotate_file()\n\n return len(data)\n"
|
||||||
|
affinity: ''
|
||||||
|
alias: ''
|
||||||
|
comment: ''
|
||||||
|
maxoutbuf: '0'
|
||||||
|
minoutbuf: '0'
|
||||||
|
states:
|
||||||
|
_io_cache: ('Simsi_Sink', 'Simsi_Sink', [('SaveDir', "'./signal'"), ('FileTag', "'fragment_'"), ('SplitSize', '1000000'), ('Delay', '0.0')], [('0', 'complex', 1)], [], 'Headless IQ writer with file splitting.', ['Delay', 'FileTag', 'SaveDir', 'SplitSize'])
|
||||||
|
coordinate: [688, 208]
|
||||||
|
rotation: 0
|
||||||
|
state: enabled
|
||||||
|
|
||||||
|
- name: osmosdr_source_0
|
||||||
|
id: osmosdr_source
|
||||||
|
parameters:
|
||||||
|
affinity: ''
|
||||||
|
alias: ''
|
||||||
|
ant0: ''
|
||||||
|
ant1: ''
|
||||||
|
ant10: ''
|
||||||
|
ant11: ''
|
||||||
|
ant12: ''
|
||||||
|
ant13: ''
|
||||||
|
ant14: ''
|
||||||
|
ant15: ''
|
||||||
|
ant16: ''
|
||||||
|
ant17: ''
|
||||||
|
ant18: ''
|
||||||
|
ant19: ''
|
||||||
|
ant2: ''
|
||||||
|
ant20: ''
|
||||||
|
ant21: ''
|
||||||
|
ant22: ''
|
||||||
|
ant23: ''
|
||||||
|
ant24: ''
|
||||||
|
ant25: ''
|
||||||
|
ant26: ''
|
||||||
|
ant27: ''
|
||||||
|
ant28: ''
|
||||||
|
ant29: ''
|
||||||
|
ant3: ''
|
||||||
|
ant30: ''
|
||||||
|
ant31: ''
|
||||||
|
ant4: ''
|
||||||
|
ant5: ''
|
||||||
|
ant6: ''
|
||||||
|
ant7: ''
|
||||||
|
ant8: ''
|
||||||
|
ant9: ''
|
||||||
|
args: dev_args
|
||||||
|
bb_gain0: bb_gain
|
||||||
|
bb_gain1: '20'
|
||||||
|
bb_gain10: '20'
|
||||||
|
bb_gain11: '20'
|
||||||
|
bb_gain12: '20'
|
||||||
|
bb_gain13: '20'
|
||||||
|
bb_gain14: '20'
|
||||||
|
bb_gain15: '20'
|
||||||
|
bb_gain16: '20'
|
||||||
|
bb_gain17: '20'
|
||||||
|
bb_gain18: '20'
|
||||||
|
bb_gain19: '20'
|
||||||
|
bb_gain2: '20'
|
||||||
|
bb_gain20: '20'
|
||||||
|
bb_gain21: '20'
|
||||||
|
bb_gain22: '20'
|
||||||
|
bb_gain23: '20'
|
||||||
|
bb_gain24: '20'
|
||||||
|
bb_gain25: '20'
|
||||||
|
bb_gain26: '20'
|
||||||
|
bb_gain27: '20'
|
||||||
|
bb_gain28: '20'
|
||||||
|
bb_gain29: '20'
|
||||||
|
bb_gain3: '20'
|
||||||
|
bb_gain30: '20'
|
||||||
|
bb_gain31: '20'
|
||||||
|
bb_gain4: '20'
|
||||||
|
bb_gain5: '20'
|
||||||
|
bb_gain6: '20'
|
||||||
|
bb_gain7: '20'
|
||||||
|
bb_gain8: '20'
|
||||||
|
bb_gain9: '20'
|
||||||
|
bw0: '0'
|
||||||
|
bw1: '0'
|
||||||
|
bw10: '0'
|
||||||
|
bw11: '0'
|
||||||
|
bw12: '0'
|
||||||
|
bw13: '0'
|
||||||
|
bw14: '0'
|
||||||
|
bw15: '0'
|
||||||
|
bw16: '0'
|
||||||
|
bw17: '0'
|
||||||
|
bw18: '0'
|
||||||
|
bw19: '0'
|
||||||
|
bw2: '0'
|
||||||
|
bw20: '0'
|
||||||
|
bw21: '0'
|
||||||
|
bw22: '0'
|
||||||
|
bw23: '0'
|
||||||
|
bw24: '0'
|
||||||
|
bw25: '0'
|
||||||
|
bw26: '0'
|
||||||
|
bw27: '0'
|
||||||
|
bw28: '0'
|
||||||
|
bw29: '0'
|
||||||
|
bw3: '0'
|
||||||
|
bw30: '0'
|
||||||
|
bw31: '0'
|
||||||
|
bw4: '0'
|
||||||
|
bw5: '0'
|
||||||
|
bw6: '0'
|
||||||
|
bw7: '0'
|
||||||
|
bw8: '0'
|
||||||
|
bw9: '0'
|
||||||
|
clock_source0: ''
|
||||||
|
clock_source1: ''
|
||||||
|
clock_source2: ''
|
||||||
|
clock_source3: ''
|
||||||
|
clock_source4: ''
|
||||||
|
clock_source5: ''
|
||||||
|
clock_source6: ''
|
||||||
|
clock_source7: ''
|
||||||
|
comment: ''
|
||||||
|
corr0: '0'
|
||||||
|
corr1: '0'
|
||||||
|
corr10: '0'
|
||||||
|
corr11: '0'
|
||||||
|
corr12: '0'
|
||||||
|
corr13: '0'
|
||||||
|
corr14: '0'
|
||||||
|
corr15: '0'
|
||||||
|
corr16: '0'
|
||||||
|
corr17: '0'
|
||||||
|
corr18: '0'
|
||||||
|
corr19: '0'
|
||||||
|
corr2: '0'
|
||||||
|
corr20: '0'
|
||||||
|
corr21: '0'
|
||||||
|
corr22: '0'
|
||||||
|
corr23: '0'
|
||||||
|
corr24: '0'
|
||||||
|
corr25: '0'
|
||||||
|
corr26: '0'
|
||||||
|
corr27: '0'
|
||||||
|
corr28: '0'
|
||||||
|
corr29: '0'
|
||||||
|
corr3: '0'
|
||||||
|
corr30: '0'
|
||||||
|
corr31: '0'
|
||||||
|
corr4: '0'
|
||||||
|
corr5: '0'
|
||||||
|
corr6: '0'
|
||||||
|
corr7: '0'
|
||||||
|
corr8: '0'
|
||||||
|
corr9: '0'
|
||||||
|
dc_offset_mode0: '0'
|
||||||
|
dc_offset_mode1: '0'
|
||||||
|
dc_offset_mode10: '0'
|
||||||
|
dc_offset_mode11: '0'
|
||||||
|
dc_offset_mode12: '0'
|
||||||
|
dc_offset_mode13: '0'
|
||||||
|
dc_offset_mode14: '0'
|
||||||
|
dc_offset_mode15: '0'
|
||||||
|
dc_offset_mode16: '0'
|
||||||
|
dc_offset_mode17: '0'
|
||||||
|
dc_offset_mode18: '0'
|
||||||
|
dc_offset_mode19: '0'
|
||||||
|
dc_offset_mode2: '0'
|
||||||
|
dc_offset_mode20: '0'
|
||||||
|
dc_offset_mode21: '0'
|
||||||
|
dc_offset_mode22: '0'
|
||||||
|
dc_offset_mode23: '0'
|
||||||
|
dc_offset_mode24: '0'
|
||||||
|
dc_offset_mode25: '0'
|
||||||
|
dc_offset_mode26: '0'
|
||||||
|
dc_offset_mode27: '0'
|
||||||
|
dc_offset_mode28: '0'
|
||||||
|
dc_offset_mode29: '0'
|
||||||
|
dc_offset_mode3: '0'
|
||||||
|
dc_offset_mode30: '0'
|
||||||
|
dc_offset_mode31: '0'
|
||||||
|
dc_offset_mode4: '0'
|
||||||
|
dc_offset_mode5: '0'
|
||||||
|
dc_offset_mode6: '0'
|
||||||
|
dc_offset_mode7: '0'
|
||||||
|
dc_offset_mode8: '0'
|
||||||
|
dc_offset_mode9: '0'
|
||||||
|
freq0: freq
|
||||||
|
freq1: 100e6
|
||||||
|
freq10: 100e6
|
||||||
|
freq11: 100e6
|
||||||
|
freq12: 100e6
|
||||||
|
freq13: 100e6
|
||||||
|
freq14: 100e6
|
||||||
|
freq15: 100e6
|
||||||
|
freq16: 100e6
|
||||||
|
freq17: 100e6
|
||||||
|
freq18: 100e6
|
||||||
|
freq19: 100e6
|
||||||
|
freq2: 100e6
|
||||||
|
freq20: 100e6
|
||||||
|
freq21: 100e6
|
||||||
|
freq22: 100e6
|
||||||
|
freq23: 100e6
|
||||||
|
freq24: 100e6
|
||||||
|
freq25: 100e6
|
||||||
|
freq26: 100e6
|
||||||
|
freq27: 100e6
|
||||||
|
freq28: 100e6
|
||||||
|
freq29: 100e6
|
||||||
|
freq3: 100e6
|
||||||
|
freq30: 100e6
|
||||||
|
freq31: 100e6
|
||||||
|
freq4: 100e6
|
||||||
|
freq5: 100e6
|
||||||
|
freq6: 100e6
|
||||||
|
freq7: 100e6
|
||||||
|
freq8: 100e6
|
||||||
|
freq9: 100e6
|
||||||
|
gain0: rf_gain
|
||||||
|
gain1: '10'
|
||||||
|
gain10: '10'
|
||||||
|
gain11: '10'
|
||||||
|
gain12: '10'
|
||||||
|
gain13: '10'
|
||||||
|
gain14: '10'
|
||||||
|
gain15: '10'
|
||||||
|
gain16: '10'
|
||||||
|
gain17: '10'
|
||||||
|
gain18: '10'
|
||||||
|
gain19: '10'
|
||||||
|
gain2: '10'
|
||||||
|
gain20: '10'
|
||||||
|
gain21: '10'
|
||||||
|
gain22: '10'
|
||||||
|
gain23: '10'
|
||||||
|
gain24: '10'
|
||||||
|
gain25: '10'
|
||||||
|
gain26: '10'
|
||||||
|
gain27: '10'
|
||||||
|
gain28: '10'
|
||||||
|
gain29: '10'
|
||||||
|
gain3: '10'
|
||||||
|
gain30: '10'
|
||||||
|
gain31: '10'
|
||||||
|
gain4: '10'
|
||||||
|
gain5: '10'
|
||||||
|
gain6: '10'
|
||||||
|
gain7: '10'
|
||||||
|
gain8: '10'
|
||||||
|
gain9: '10'
|
||||||
|
gain_mode0: 'False'
|
||||||
|
gain_mode1: 'False'
|
||||||
|
gain_mode10: 'False'
|
||||||
|
gain_mode11: 'False'
|
||||||
|
gain_mode12: 'False'
|
||||||
|
gain_mode13: 'False'
|
||||||
|
gain_mode14: 'False'
|
||||||
|
gain_mode15: 'False'
|
||||||
|
gain_mode16: 'False'
|
||||||
|
gain_mode17: 'False'
|
||||||
|
gain_mode18: 'False'
|
||||||
|
gain_mode19: 'False'
|
||||||
|
gain_mode2: 'False'
|
||||||
|
gain_mode20: 'False'
|
||||||
|
gain_mode21: 'False'
|
||||||
|
gain_mode22: 'False'
|
||||||
|
gain_mode23: 'False'
|
||||||
|
gain_mode24: 'False'
|
||||||
|
gain_mode25: 'False'
|
||||||
|
gain_mode26: 'False'
|
||||||
|
gain_mode27: 'False'
|
||||||
|
gain_mode28: 'False'
|
||||||
|
gain_mode29: 'False'
|
||||||
|
gain_mode3: 'False'
|
||||||
|
gain_mode30: 'False'
|
||||||
|
gain_mode31: 'False'
|
||||||
|
gain_mode4: 'False'
|
||||||
|
gain_mode5: 'False'
|
||||||
|
gain_mode6: 'False'
|
||||||
|
gain_mode7: 'False'
|
||||||
|
gain_mode8: 'False'
|
||||||
|
gain_mode9: 'False'
|
||||||
|
if_gain0: if_gain
|
||||||
|
if_gain1: '20'
|
||||||
|
if_gain10: '20'
|
||||||
|
if_gain11: '20'
|
||||||
|
if_gain12: '20'
|
||||||
|
if_gain13: '20'
|
||||||
|
if_gain14: '20'
|
||||||
|
if_gain15: '20'
|
||||||
|
if_gain16: '20'
|
||||||
|
if_gain17: '20'
|
||||||
|
if_gain18: '20'
|
||||||
|
if_gain19: '20'
|
||||||
|
if_gain2: '20'
|
||||||
|
if_gain20: '20'
|
||||||
|
if_gain21: '20'
|
||||||
|
if_gain22: '20'
|
||||||
|
if_gain23: '20'
|
||||||
|
if_gain24: '20'
|
||||||
|
if_gain25: '20'
|
||||||
|
if_gain26: '20'
|
||||||
|
if_gain27: '20'
|
||||||
|
if_gain28: '20'
|
||||||
|
if_gain29: '20'
|
||||||
|
if_gain3: '20'
|
||||||
|
if_gain30: '20'
|
||||||
|
if_gain31: '20'
|
||||||
|
if_gain4: '20'
|
||||||
|
if_gain5: '20'
|
||||||
|
if_gain6: '20'
|
||||||
|
if_gain7: '20'
|
||||||
|
if_gain8: '20'
|
||||||
|
if_gain9: '20'
|
||||||
|
iq_balance_mode0: '0'
|
||||||
|
iq_balance_mode1: '0'
|
||||||
|
iq_balance_mode10: '0'
|
||||||
|
iq_balance_mode11: '0'
|
||||||
|
iq_balance_mode12: '0'
|
||||||
|
iq_balance_mode13: '0'
|
||||||
|
iq_balance_mode14: '0'
|
||||||
|
iq_balance_mode15: '0'
|
||||||
|
iq_balance_mode16: '0'
|
||||||
|
iq_balance_mode17: '0'
|
||||||
|
iq_balance_mode18: '0'
|
||||||
|
iq_balance_mode19: '0'
|
||||||
|
iq_balance_mode2: '0'
|
||||||
|
iq_balance_mode20: '0'
|
||||||
|
iq_balance_mode21: '0'
|
||||||
|
iq_balance_mode22: '0'
|
||||||
|
iq_balance_mode23: '0'
|
||||||
|
iq_balance_mode24: '0'
|
||||||
|
iq_balance_mode25: '0'
|
||||||
|
iq_balance_mode26: '0'
|
||||||
|
iq_balance_mode27: '0'
|
||||||
|
iq_balance_mode28: '0'
|
||||||
|
iq_balance_mode29: '0'
|
||||||
|
iq_balance_mode3: '0'
|
||||||
|
iq_balance_mode30: '0'
|
||||||
|
iq_balance_mode31: '0'
|
||||||
|
iq_balance_mode4: '0'
|
||||||
|
iq_balance_mode5: '0'
|
||||||
|
iq_balance_mode6: '0'
|
||||||
|
iq_balance_mode7: '0'
|
||||||
|
iq_balance_mode8: '0'
|
||||||
|
iq_balance_mode9: '0'
|
||||||
|
maxoutbuf: '0'
|
||||||
|
minoutbuf: '0'
|
||||||
|
nchan: '1'
|
||||||
|
num_mboards: '1'
|
||||||
|
sample_rate: samp_rate
|
||||||
|
sync: sync
|
||||||
|
time_source0: ''
|
||||||
|
time_source1: ''
|
||||||
|
time_source2: ''
|
||||||
|
time_source3: ''
|
||||||
|
time_source4: ''
|
||||||
|
time_source5: ''
|
||||||
|
time_source6: ''
|
||||||
|
time_source7: ''
|
||||||
|
type: fc32
|
||||||
|
states:
|
||||||
|
coordinate: [288, 208]
|
||||||
|
rotation: 0
|
||||||
|
state: enabled
|
||||||
|
|
||||||
|
connections:
|
||||||
|
- [osmosdr_source_0, '0', epy_block_0, '0']
|
||||||
|
|
||||||
|
metadata:
|
||||||
|
file_format: 1
|
||||||
|
grc_version: 3.10.9.2
|
||||||
@ -0,0 +1,150 @@
|
|||||||
|
import os
|
||||||
|
import datetime
|
||||||
|
import time
|
||||||
|
from common.runtime import load_root_env, as_bool
|
||||||
|
from smb.SMBConnection import SMBConnection
|
||||||
|
from utils.datas_processing import pack_elems, agregator, send_data, send_telemetry, save_data, remote_save_data
|
||||||
|
from utils.jammer_state_flag import is_jammer_active
|
||||||
|
from core.sig_n_medi_collect import Signal, SignalsArray
|
||||||
|
from core.multichannelswitcher import MultiChannel
|
||||||
|
|
||||||
|
load_root_env(__file__)
|
||||||
|
|
||||||
|
debug_flag = as_bool(os.getenv('debug_flag', '0'))
|
||||||
|
send_to_module_flag = as_bool(os.getenv('send_to_module_flag', '0'))
|
||||||
|
save_data_flag = as_bool(os.getenv('save_data_flag', '0'))
|
||||||
|
module_name = os.getenv('module_name')
|
||||||
|
elems_to_save = os.getenv('elems_to_save')
|
||||||
|
file_types_to_save = os.getenv('file_types_to_save')
|
||||||
|
localhost = os.getenv('lochost')
|
||||||
|
localport = os.getenv('locport')
|
||||||
|
f_step = [*map(float, os.getenv('f_step_1200').split())]
|
||||||
|
f_bases = [*map(float, os.getenv('f_bases_1200').split())]
|
||||||
|
f_roofs = [*map(float, os.getenv('f_roofs_1200').split())]
|
||||||
|
signal_length = int(os.getenv('signal_length_1200'))
|
||||||
|
buffer_columns_size = int(os.getenv('buffer_columns_size_1200'))
|
||||||
|
num_of_thinning_iter = int(os.getenv('num_of_thinning_iter_1200'))
|
||||||
|
multiply_factor = float(os.getenv('multiply_factor_1200'))
|
||||||
|
num_for_alarm = int(os.getenv('num_for_alarm_1200'))
|
||||||
|
c_freq = os.getenv('c_freq_1200', '1200')
|
||||||
|
path_to_save_medians = os.getenv('path_to_save_medians')
|
||||||
|
path_to_save_alarms = os.getenv('path_to_save_alarms')
|
||||||
|
smb_host = os.getenv('smb_host')
|
||||||
|
smb_port = os.getenv('smb_port')
|
||||||
|
smb_user = os.getenv('smb_user')
|
||||||
|
smb_pass = os.getenv('smb_pass')
|
||||||
|
shared_folder = os.getenv('shared_folder')
|
||||||
|
the_pc_name = os.getenv('the_pc_name')
|
||||||
|
remote_pc_name = os.getenv('remote_pc_name')
|
||||||
|
smb_domain = os.getenv('smb_domain')
|
||||||
|
freq_endpoint = os.getenv('freq_endpoint')
|
||||||
|
telemetry_enabled = as_bool(os.getenv('telemetry_enabled', '1'))
|
||||||
|
telemetry_host = os.getenv('telemetry_host', '127.0.0.1')
|
||||||
|
telemetry_port = os.getenv('telemetry_port', '5020')
|
||||||
|
telemetry_endpoint = os.getenv('telemetry_endpoint', 'telemetry')
|
||||||
|
telemetry_timeout_sec = float(os.getenv('telemetry_timeout_sec', '0.30'))
|
||||||
|
|
||||||
|
elems_to_save = elems_to_save.split(',')
|
||||||
|
file_types_to_save = file_types_to_save.split(',')
|
||||||
|
|
||||||
|
tmp_signal = Signal()
|
||||||
|
tmp_sigs_array = SignalsArray()
|
||||||
|
multi_channel = MultiChannel(f_step, f_bases, f_roofs)
|
||||||
|
f = multi_channel.init_f()
|
||||||
|
multi_channel.fill_DB(
|
||||||
|
buffer_columns_size,
|
||||||
|
num_of_thinning_iter,
|
||||||
|
multiply_factor,
|
||||||
|
num_for_alarm,
|
||||||
|
c_freq,
|
||||||
|
)
|
||||||
|
|
||||||
|
if debug_flag:
|
||||||
|
conn = SMBConnection(smb_user, smb_pass, the_pc_name, remote_pc_name, use_ntlm_v2=True)
|
||||||
|
conn.connect(smb_host, 139)
|
||||||
|
filelist = conn.listPath(shared_folder, '/')
|
||||||
|
print(filelist)
|
||||||
|
|
||||||
|
|
||||||
|
def work(lvl):
|
||||||
|
f = multi_channel.get_cur_channel()
|
||||||
|
freq = c_freq
|
||||||
|
median = tmp_signal.fill_signal(lvl, signal_length)
|
||||||
|
packet_ts = tmp_signal.get_last_packet_ts()
|
||||||
|
|
||||||
|
if median:
|
||||||
|
try:
|
||||||
|
num_chs, circle_buffer = multi_channel.check_f(f)
|
||||||
|
cur_channel, sigs_array, sigs_ts_array = tmp_sigs_array.fill_sig_arr(median, packet_ts=packet_ts, num_chs=num_chs)
|
||||||
|
|
||||||
|
if sigs_array:
|
||||||
|
print('Значения на {0}: {1}'.format(freq, sigs_array))
|
||||||
|
print('Пороги: ', circle_buffer.get_medians())
|
||||||
|
alarm = circle_buffer.check_alarm(sigs_array)
|
||||||
|
|
||||||
|
if alarm:
|
||||||
|
print('----ALARM---- ', freq)
|
||||||
|
multi_channel.db_alarms_zeros(circle_buffer)
|
||||||
|
elif not is_jammer_active():
|
||||||
|
circle_buffer.update(sigs_array, packet_timestamps=sigs_ts_array)
|
||||||
|
|
||||||
|
if telemetry_enabled:
|
||||||
|
try:
|
||||||
|
max_idx = max(range(len(sigs_array)), key=lambda idx: sigs_array[idx])
|
||||||
|
dbfs_current = float(sigs_array[max_idx])
|
||||||
|
dbfs_threshold = circle_buffer.get_threshold(max_idx)
|
||||||
|
channel_thresholds = circle_buffer.get_thresholds()
|
||||||
|
alarm_channels = circle_buffer.get_last_alarm_channels() if alarm else []
|
||||||
|
|
||||||
|
send_telemetry(
|
||||||
|
data={
|
||||||
|
'freq': str(freq),
|
||||||
|
'ts': time.time(),
|
||||||
|
'dbfs_current': dbfs_current,
|
||||||
|
'dbfs_threshold': dbfs_threshold,
|
||||||
|
'alarm': bool(alarm),
|
||||||
|
'channel_idx': int(max_idx),
|
||||||
|
'channels_total': int(len(sigs_array)),
|
||||||
|
'channel_values': [float(v) for v in sigs_array],
|
||||||
|
'channel_thresholds': channel_thresholds,
|
||||||
|
'alarm_channels': alarm_channels,
|
||||||
|
},
|
||||||
|
host=telemetry_host,
|
||||||
|
port=telemetry_port,
|
||||||
|
endpoint=telemetry_endpoint,
|
||||||
|
timeout_sec=telemetry_timeout_sec,
|
||||||
|
)
|
||||||
|
except Exception as exc:
|
||||||
|
if debug_flag:
|
||||||
|
print(f'telemetry send failed: {exc}')
|
||||||
|
|
||||||
|
if send_to_module_flag:
|
||||||
|
send_data(agregator(freq, alarm), localhost, localport, freq_endpoint)
|
||||||
|
|
||||||
|
if save_data_flag:
|
||||||
|
if not circle_buffer.check_init() and circle_buffer.current_column - 1 == 0:
|
||||||
|
save_data(path_to_save_medians, freq, 'DateTime', 'ALARM', 'max signal', list(range(num_chs)), list(range(num_chs)))
|
||||||
|
if circle_buffer.check_init():
|
||||||
|
save_data(path_to_save_medians, freq, datetime.datetime.now(), alarm, max(sigs_array), sigs_array, circle_buffer.get_medians())
|
||||||
|
|
||||||
|
if debug_flag:
|
||||||
|
single_alarm = circle_buffer.check_single_alarm(median, cur_channel)
|
||||||
|
print(cur_channel, single_alarm)
|
||||||
|
if single_alarm:
|
||||||
|
data = pack_elems(elems_to_save, file_types_to_save, tmp_signal.get_signal())
|
||||||
|
print('SAVE CURRENT SIGNAL SROCHNO TI MENYA SLISHISH?!?!?!?')
|
||||||
|
try:
|
||||||
|
remote_save_data(conn, data, module_name, freq, shared_folder, path_to_save_alarms)
|
||||||
|
except Exception as e:
|
||||||
|
print(f'Ошибка: {e}')
|
||||||
|
else:
|
||||||
|
print('VSE OKI DOKI SIGNAL SOKHRANYAT NE NUZHNO!!!')
|
||||||
|
|
||||||
|
f = multi_channel.change_channel()
|
||||||
|
except Exception as e:
|
||||||
|
print(str(e))
|
||||||
|
print('.', end='')
|
||||||
|
|
||||||
|
tmp_signal.clear()
|
||||||
|
|
||||||
|
return f
|
||||||
@ -0,0 +1,150 @@
|
|||||||
|
import os
|
||||||
|
import datetime
|
||||||
|
import time
|
||||||
|
from common.runtime import load_root_env, as_bool
|
||||||
|
from smb.SMBConnection import SMBConnection
|
||||||
|
from utils.datas_processing import pack_elems, agregator, send_data, send_telemetry, save_data, remote_save_data
|
||||||
|
from utils.jammer_state_flag import is_jammer_active
|
||||||
|
from core.sig_n_medi_collect import Signal, SignalsArray
|
||||||
|
from core.multichannelswitcher import MultiChannel
|
||||||
|
|
||||||
|
load_root_env(__file__)
|
||||||
|
|
||||||
|
debug_flag = as_bool(os.getenv('debug_flag', '0'))
|
||||||
|
send_to_module_flag = as_bool(os.getenv('send_to_module_flag', '0'))
|
||||||
|
save_data_flag = as_bool(os.getenv('save_data_flag', '0'))
|
||||||
|
module_name = os.getenv('module_name')
|
||||||
|
elems_to_save = os.getenv('elems_to_save')
|
||||||
|
file_types_to_save = os.getenv('file_types_to_save')
|
||||||
|
localhost = os.getenv('lochost')
|
||||||
|
localport = os.getenv('locport')
|
||||||
|
f_step = [*map(float, os.getenv('f_step_2400').split())]
|
||||||
|
f_bases = [*map(float, os.getenv('f_bases_2400').split())]
|
||||||
|
f_roofs = [*map(float, os.getenv('f_roofs_2400').split())]
|
||||||
|
signal_length = int(os.getenv('signal_length_2400'))
|
||||||
|
buffer_columns_size = int(os.getenv('buffer_columns_size_2400'))
|
||||||
|
num_of_thinning_iter = int(os.getenv('num_of_thinning_iter_2400'))
|
||||||
|
multiply_factor = float(os.getenv('multiply_factor_2400'))
|
||||||
|
num_for_alarm = int(os.getenv('num_for_alarm_2400'))
|
||||||
|
c_freq = os.getenv('c_freq_2400', '2400')
|
||||||
|
path_to_save_medians = os.getenv('path_to_save_medians')
|
||||||
|
path_to_save_alarms = os.getenv('path_to_save_alarms')
|
||||||
|
smb_host = os.getenv('smb_host')
|
||||||
|
smb_port = os.getenv('smb_port')
|
||||||
|
smb_user = os.getenv('smb_user')
|
||||||
|
smb_pass = os.getenv('smb_pass')
|
||||||
|
shared_folder = os.getenv('shared_folder')
|
||||||
|
the_pc_name = os.getenv('the_pc_name')
|
||||||
|
remote_pc_name = os.getenv('remote_pc_name')
|
||||||
|
smb_domain = os.getenv('smb_domain')
|
||||||
|
freq_endpoint = os.getenv('freq_endpoint')
|
||||||
|
telemetry_enabled = as_bool(os.getenv('telemetry_enabled', '1'))
|
||||||
|
telemetry_host = os.getenv('telemetry_host', '127.0.0.1')
|
||||||
|
telemetry_port = os.getenv('telemetry_port', '5020')
|
||||||
|
telemetry_endpoint = os.getenv('telemetry_endpoint', 'telemetry')
|
||||||
|
telemetry_timeout_sec = float(os.getenv('telemetry_timeout_sec', '0.30'))
|
||||||
|
|
||||||
|
elems_to_save = elems_to_save.split(',')
|
||||||
|
file_types_to_save = file_types_to_save.split(',')
|
||||||
|
|
||||||
|
tmp_signal = Signal()
|
||||||
|
tmp_sigs_array = SignalsArray()
|
||||||
|
multi_channel = MultiChannel(f_step, f_bases, f_roofs)
|
||||||
|
f = multi_channel.init_f()
|
||||||
|
multi_channel.fill_DB(
|
||||||
|
buffer_columns_size,
|
||||||
|
num_of_thinning_iter,
|
||||||
|
multiply_factor,
|
||||||
|
num_for_alarm,
|
||||||
|
c_freq,
|
||||||
|
)
|
||||||
|
|
||||||
|
if debug_flag:
|
||||||
|
conn = SMBConnection(smb_user, smb_pass, the_pc_name, remote_pc_name, use_ntlm_v2=True)
|
||||||
|
conn.connect(smb_host, 139)
|
||||||
|
filelist = conn.listPath(shared_folder, '/')
|
||||||
|
print(filelist)
|
||||||
|
|
||||||
|
|
||||||
|
def work(lvl):
|
||||||
|
f = multi_channel.get_cur_channel()
|
||||||
|
freq = c_freq
|
||||||
|
median = tmp_signal.fill_signal(lvl, signal_length)
|
||||||
|
packet_ts = tmp_signal.get_last_packet_ts()
|
||||||
|
|
||||||
|
if median:
|
||||||
|
try:
|
||||||
|
num_chs, circle_buffer = multi_channel.check_f(f)
|
||||||
|
cur_channel, sigs_array, sigs_ts_array = tmp_sigs_array.fill_sig_arr(median, packet_ts=packet_ts, num_chs=num_chs)
|
||||||
|
|
||||||
|
if sigs_array:
|
||||||
|
print('Значения на {0}: {1}'.format(freq, sigs_array))
|
||||||
|
print('Пороги: ', circle_buffer.get_medians())
|
||||||
|
alarm = circle_buffer.check_alarm(sigs_array)
|
||||||
|
|
||||||
|
if alarm:
|
||||||
|
print('----ALARM---- ', freq)
|
||||||
|
multi_channel.db_alarms_zeros(circle_buffer)
|
||||||
|
elif not is_jammer_active():
|
||||||
|
circle_buffer.update(sigs_array, packet_timestamps=sigs_ts_array)
|
||||||
|
|
||||||
|
if telemetry_enabled:
|
||||||
|
try:
|
||||||
|
max_idx = max(range(len(sigs_array)), key=lambda idx: sigs_array[idx])
|
||||||
|
dbfs_current = float(sigs_array[max_idx])
|
||||||
|
dbfs_threshold = circle_buffer.get_threshold(max_idx)
|
||||||
|
channel_thresholds = circle_buffer.get_thresholds()
|
||||||
|
alarm_channels = circle_buffer.get_last_alarm_channels() if alarm else []
|
||||||
|
|
||||||
|
send_telemetry(
|
||||||
|
data={
|
||||||
|
'freq': str(freq),
|
||||||
|
'ts': time.time(),
|
||||||
|
'dbfs_current': dbfs_current,
|
||||||
|
'dbfs_threshold': dbfs_threshold,
|
||||||
|
'alarm': bool(alarm),
|
||||||
|
'channel_idx': int(max_idx),
|
||||||
|
'channels_total': int(len(sigs_array)),
|
||||||
|
'channel_values': [float(v) for v in sigs_array],
|
||||||
|
'channel_thresholds': channel_thresholds,
|
||||||
|
'alarm_channels': alarm_channels,
|
||||||
|
},
|
||||||
|
host=telemetry_host,
|
||||||
|
port=telemetry_port,
|
||||||
|
endpoint=telemetry_endpoint,
|
||||||
|
timeout_sec=telemetry_timeout_sec,
|
||||||
|
)
|
||||||
|
except Exception as exc:
|
||||||
|
if debug_flag:
|
||||||
|
print(f'telemetry send failed: {exc}')
|
||||||
|
|
||||||
|
if send_to_module_flag:
|
||||||
|
send_data(agregator(freq, alarm), localhost, localport, freq_endpoint)
|
||||||
|
|
||||||
|
if save_data_flag:
|
||||||
|
if not circle_buffer.check_init() and circle_buffer.current_column - 1 == 0:
|
||||||
|
save_data(path_to_save_medians, freq, 'DateTime', 'ALARM', 'max signal', list(range(num_chs)), list(range(num_chs)))
|
||||||
|
if circle_buffer.check_init():
|
||||||
|
save_data(path_to_save_medians, freq, datetime.datetime.now(), alarm, max(sigs_array), sigs_array, circle_buffer.get_medians())
|
||||||
|
|
||||||
|
if debug_flag:
|
||||||
|
single_alarm = circle_buffer.check_single_alarm(median, cur_channel)
|
||||||
|
print(cur_channel, single_alarm)
|
||||||
|
if single_alarm:
|
||||||
|
data = pack_elems(elems_to_save, file_types_to_save, tmp_signal.get_signal())
|
||||||
|
print('SAVE CURRENT SIGNAL SROCHNO TI MENYA SLISHISH?!?!?!?')
|
||||||
|
try:
|
||||||
|
remote_save_data(conn, data, module_name, freq, shared_folder, path_to_save_alarms)
|
||||||
|
except Exception as e:
|
||||||
|
print(f'Ошибка: {e}')
|
||||||
|
else:
|
||||||
|
print('VSE OKI DOKI SIGNAL SOKHRANYAT NE NUZHNO!!!')
|
||||||
|
|
||||||
|
f = multi_channel.change_channel()
|
||||||
|
except Exception as e:
|
||||||
|
print(str(e))
|
||||||
|
print('.', end='')
|
||||||
|
|
||||||
|
tmp_signal.clear()
|
||||||
|
|
||||||
|
return f
|
||||||
@ -0,0 +1,153 @@
|
|||||||
|
import os
|
||||||
|
import datetime
|
||||||
|
import time
|
||||||
|
from common.runtime import load_root_env, as_bool
|
||||||
|
from smb.SMBConnection import SMBConnection
|
||||||
|
from utils.datas_processing import pack_elems, agregator, send_data, send_telemetry, save_data, remote_save_data
|
||||||
|
from utils.jammer_state_flag import is_jammer_active
|
||||||
|
from core.sig_n_medi_collect import Signal, SignalsArray
|
||||||
|
from core.multichannelswitcher import MultiChannel
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.NOTSET)
|
||||||
|
|
||||||
|
load_root_env(__file__)
|
||||||
|
|
||||||
|
debug_flag = as_bool(os.getenv('debug_flag', '0'))
|
||||||
|
send_to_module_flag = as_bool(os.getenv('send_to_module_flag', '0'))
|
||||||
|
save_data_flag = as_bool(os.getenv('save_data_flag', '0'))
|
||||||
|
module_name = os.getenv('module_name')
|
||||||
|
elems_to_save = os.getenv('elems_to_save')
|
||||||
|
file_types_to_save = os.getenv('file_types_to_save')
|
||||||
|
localhost = os.getenv('lochost')
|
||||||
|
localport = os.getenv('locport')
|
||||||
|
f_step = [*map(float, os.getenv('f_step_915').split())]
|
||||||
|
f_bases = [*map(float, os.getenv('f_bases_915').split())]
|
||||||
|
f_roofs = [*map(float, os.getenv('f_roofs_915').split())]
|
||||||
|
signal_length = int(os.getenv('signal_length_915'))
|
||||||
|
buffer_columns_size = int(os.getenv('buffer_columns_size_915'))
|
||||||
|
num_of_thinning_iter = int(os.getenv('num_of_thinning_iter_915'))
|
||||||
|
multiply_factor = float(os.getenv('multiply_factor_915'))
|
||||||
|
num_for_alarm = int(os.getenv('num_for_alarm_915'))
|
||||||
|
c_freq = os.getenv('c_freq_915', '915')
|
||||||
|
path_to_save_medians = os.getenv('path_to_save_medians')
|
||||||
|
path_to_save_alarms = os.getenv('path_to_save_alarms')
|
||||||
|
smb_host = os.getenv('smb_host')
|
||||||
|
smb_port = os.getenv('smb_port')
|
||||||
|
smb_user = os.getenv('smb_user')
|
||||||
|
smb_pass = os.getenv('smb_pass')
|
||||||
|
shared_folder = os.getenv('shared_folder')
|
||||||
|
the_pc_name = os.getenv('the_pc_name')
|
||||||
|
remote_pc_name = os.getenv('remote_pc_name')
|
||||||
|
smb_domain = os.getenv('smb_domain')
|
||||||
|
freq_endpoint = os.getenv('freq_endpoint')
|
||||||
|
telemetry_enabled = as_bool(os.getenv('telemetry_enabled', '1'))
|
||||||
|
telemetry_host = os.getenv('telemetry_host', '127.0.0.1')
|
||||||
|
telemetry_port = os.getenv('telemetry_port', '5020')
|
||||||
|
telemetry_endpoint = os.getenv('telemetry_endpoint', 'telemetry')
|
||||||
|
telemetry_timeout_sec = float(os.getenv('telemetry_timeout_sec', '0.30'))
|
||||||
|
|
||||||
|
elems_to_save = elems_to_save.split(',')
|
||||||
|
file_types_to_save = file_types_to_save.split(',')
|
||||||
|
|
||||||
|
tmp_signal = Signal()
|
||||||
|
tmp_sigs_array = SignalsArray()
|
||||||
|
multi_channel = MultiChannel(f_step, f_bases, f_roofs)
|
||||||
|
f = multi_channel.init_f()
|
||||||
|
multi_channel.fill_DB(
|
||||||
|
buffer_columns_size,
|
||||||
|
num_of_thinning_iter,
|
||||||
|
multiply_factor,
|
||||||
|
num_for_alarm,
|
||||||
|
c_freq,
|
||||||
|
)
|
||||||
|
|
||||||
|
if debug_flag:
|
||||||
|
conn = SMBConnection(smb_user, smb_pass, the_pc_name, remote_pc_name, use_ntlm_v2=True)
|
||||||
|
conn.connect(smb_host, 139)
|
||||||
|
filelist = conn.listPath(shared_folder, '/')
|
||||||
|
print(filelist)
|
||||||
|
|
||||||
|
|
||||||
|
def work(lvl):
|
||||||
|
f = multi_channel.get_cur_channel()
|
||||||
|
freq = c_freq
|
||||||
|
median = tmp_signal.fill_signal(lvl, signal_length)
|
||||||
|
packet_ts = tmp_signal.get_last_packet_ts()
|
||||||
|
|
||||||
|
if median:
|
||||||
|
try:
|
||||||
|
num_chs, circle_buffer = multi_channel.check_f(f)
|
||||||
|
cur_channel, sigs_array, sigs_ts_array = tmp_sigs_array.fill_sig_arr(median, packet_ts=packet_ts, num_chs=num_chs)
|
||||||
|
|
||||||
|
if sigs_array:
|
||||||
|
print('Значения на {0}: {1}'.format(freq, sigs_array))
|
||||||
|
print('Пороги: ', circle_buffer.get_medians())
|
||||||
|
alarm = circle_buffer.check_alarm(sigs_array)
|
||||||
|
|
||||||
|
if alarm:
|
||||||
|
print('----ALARM---- ', freq)
|
||||||
|
multi_channel.db_alarms_zeros(circle_buffer)
|
||||||
|
elif not is_jammer_active():
|
||||||
|
circle_buffer.update(sigs_array, packet_timestamps=sigs_ts_array)
|
||||||
|
|
||||||
|
if True:
|
||||||
|
try:
|
||||||
|
max_idx = max(range(len(sigs_array)), key=lambda idx: sigs_array[idx])
|
||||||
|
dbfs_current = float(sigs_array[max_idx])
|
||||||
|
dbfs_threshold = circle_buffer.get_threshold(max_idx)
|
||||||
|
channel_thresholds = circle_buffer.get_thresholds()
|
||||||
|
alarm_channels = circle_buffer.get_last_alarm_channels() if alarm else []
|
||||||
|
|
||||||
|
send_telemetry(
|
||||||
|
data={
|
||||||
|
'freq': str(freq),
|
||||||
|
'ts': time.time(),
|
||||||
|
'dbfs_current': dbfs_current,
|
||||||
|
'dbfs_threshold': dbfs_threshold,
|
||||||
|
'alarm': bool(alarm),
|
||||||
|
'channel_idx': int(max_idx),
|
||||||
|
'channels_total': int(len(sigs_array)),
|
||||||
|
'channel_values': [float(v) for v in sigs_array],
|
||||||
|
'channel_thresholds': channel_thresholds,
|
||||||
|
'alarm_channels': alarm_channels,
|
||||||
|
},
|
||||||
|
host=telemetry_host,
|
||||||
|
port=telemetry_port,
|
||||||
|
endpoint=telemetry_endpoint,
|
||||||
|
timeout_sec=telemetry_timeout_sec,
|
||||||
|
)
|
||||||
|
except Exception as exc:
|
||||||
|
if debug_flag:
|
||||||
|
print(f'telemetry send failed: {exc}')
|
||||||
|
|
||||||
|
if send_to_module_flag:
|
||||||
|
send_data(agregator(freq, alarm), localhost, localport, freq_endpoint)
|
||||||
|
|
||||||
|
if save_data_flag:
|
||||||
|
if not circle_buffer.check_init() and circle_buffer.current_column - 1 == 0:
|
||||||
|
save_data(path_to_save_medians, freq, 'DateTime', 'ALARM', 'max signal', list(range(num_chs)), list(range(num_chs)))
|
||||||
|
if circle_buffer.check_init():
|
||||||
|
save_data(path_to_save_medians, freq, datetime.datetime.now(), alarm, max(sigs_array), sigs_array, circle_buffer.get_medians())
|
||||||
|
|
||||||
|
if debug_flag:
|
||||||
|
single_alarm = circle_buffer.check_single_alarm(median, cur_channel)
|
||||||
|
print(cur_channel, single_alarm)
|
||||||
|
if single_alarm:
|
||||||
|
data = pack_elems(elems_to_save, file_types_to_save, tmp_signal.get_signal())
|
||||||
|
print('SAVE CURRENT SIGNAL SROCHNO TI MENYA SLISHISH?!?!?!?')
|
||||||
|
try:
|
||||||
|
remote_save_data(conn, data, module_name, freq, shared_folder, path_to_save_alarms)
|
||||||
|
except Exception as e:
|
||||||
|
print(f'Ошибка: {e}')
|
||||||
|
else:
|
||||||
|
print('VSE OKI DOKI SIGNAL SOKHRANYAT NE NUZHNO!!!')
|
||||||
|
|
||||||
|
f = multi_channel.change_channel()
|
||||||
|
except Exception as e:
|
||||||
|
print(str(e))
|
||||||
|
print('.', end='')
|
||||||
|
|
||||||
|
tmp_signal.clear()
|
||||||
|
|
||||||
|
return f
|
||||||
@ -0,0 +1,104 @@
|
|||||||
|
#!/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
|
||||||
|
import embedded_1200 as my_freq
|
||||||
|
|
||||||
|
from common.runtime import load_root_env, resolve_hackrf_index
|
||||||
|
|
||||||
|
|
||||||
|
load_root_env(__file__)
|
||||||
|
|
||||||
|
|
||||||
|
def get_hack_id():
|
||||||
|
return resolve_hackrf_index('hack_1200', 'src/main_1200.py')
|
||||||
|
|
||||||
|
|
||||||
|
class get_center_freq(gr.top_block):
|
||||||
|
def __init__(self):
|
||||||
|
gr.top_block.__init__(self, 'get_center_freq')
|
||||||
|
|
||||||
|
self.prob_freq = 0
|
||||||
|
self.samp_rate = 20e6
|
||||||
|
self.poll_rate = 10000
|
||||||
|
self.vector_len = 4096
|
||||||
|
self.center_freq = my_freq.work(self.prob_freq)
|
||||||
|
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_sample_rate(self.samp_rate)
|
||||||
|
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_gain(24, 0)
|
||||||
|
self.rtlsdr_source_0.set_if_gain(24, 0)
|
||||||
|
self.rtlsdr_source_0.set_bb_gain(100, 0)
|
||||||
|
self.rtlsdr_source_0.set_antenna('', 0)
|
||||||
|
self.rtlsdr_source_0.set_bandwidth(0, 0)
|
||||||
|
self.rtlsdr_source_0.set_min_output_buffer(self.vector_len)
|
||||||
|
|
||||||
|
self.blocks_stream_to_vector_1 = blocks.stream_to_vector(gr.sizeof_gr_complex * 1, self.vector_len)
|
||||||
|
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 _prob_freq_probe():
|
||||||
|
while True:
|
||||||
|
val = self.probSigVec.level()
|
||||||
|
try:
|
||||||
|
self.set_prob_freq(val)
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
|
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.set_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
|
||||||
|
self.rtlsdr_source_0.set_center_freq(self.center_freq, 0)
|
||||||
|
|
||||||
|
|
||||||
|
def main(top_block_cls=get_center_freq, options=None):
|
||||||
|
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:
|
||||||
|
print('СЕРВИСНАЯ ИНФОРМАЦИЯ: ')
|
||||||
|
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()
|
||||||
@ -0,0 +1,104 @@
|
|||||||
|
#!/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
|
||||||
|
import embedded_2400 as my_freq
|
||||||
|
|
||||||
|
from common.runtime import load_root_env, resolve_hackrf_index
|
||||||
|
|
||||||
|
|
||||||
|
load_root_env(__file__)
|
||||||
|
|
||||||
|
|
||||||
|
def get_hack_id():
|
||||||
|
return resolve_hackrf_index('hack_2400', 'src/main_2400.py')
|
||||||
|
|
||||||
|
|
||||||
|
class get_center_freq(gr.top_block):
|
||||||
|
def __init__(self):
|
||||||
|
gr.top_block.__init__(self, 'get_center_freq')
|
||||||
|
|
||||||
|
self.prob_freq = 0
|
||||||
|
self.samp_rate = 20e6
|
||||||
|
self.poll_rate = 10000
|
||||||
|
self.vector_len = 4096
|
||||||
|
self.center_freq = my_freq.work(self.prob_freq)
|
||||||
|
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_sample_rate(self.samp_rate)
|
||||||
|
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_gain(24, 0)
|
||||||
|
self.rtlsdr_source_0.set_if_gain(24, 0)
|
||||||
|
self.rtlsdr_source_0.set_bb_gain(100, 0)
|
||||||
|
self.rtlsdr_source_0.set_antenna('', 0)
|
||||||
|
self.rtlsdr_source_0.set_bandwidth(0, 0)
|
||||||
|
self.rtlsdr_source_0.set_min_output_buffer(self.vector_len)
|
||||||
|
|
||||||
|
self.blocks_stream_to_vector_1 = blocks.stream_to_vector(gr.sizeof_gr_complex * 1, self.vector_len)
|
||||||
|
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 _prob_freq_probe():
|
||||||
|
while True:
|
||||||
|
val = self.probSigVec.level()
|
||||||
|
try:
|
||||||
|
self.set_prob_freq(val)
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
|
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.set_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
|
||||||
|
self.rtlsdr_source_0.set_center_freq(self.center_freq, 0)
|
||||||
|
|
||||||
|
|
||||||
|
def main(top_block_cls=get_center_freq, options=None):
|
||||||
|
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:
|
||||||
|
print('СЕРВИСНАЯ ИНФОРМАЦИЯ: ')
|
||||||
|
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()
|
||||||
@ -0,0 +1,104 @@
|
|||||||
|
#!/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
|
||||||
|
import embedded_915 as my_freq
|
||||||
|
|
||||||
|
from common.runtime import load_root_env, resolve_hackrf_index
|
||||||
|
|
||||||
|
|
||||||
|
load_root_env(__file__)
|
||||||
|
|
||||||
|
|
||||||
|
def get_hack_id():
|
||||||
|
return resolve_hackrf_index('hack_915', 'src/main_915.py')
|
||||||
|
|
||||||
|
|
||||||
|
class get_center_freq(gr.top_block):
|
||||||
|
def __init__(self):
|
||||||
|
gr.top_block.__init__(self, 'get_center_freq')
|
||||||
|
|
||||||
|
self.prob_freq = 0
|
||||||
|
self.samp_rate = 20e6
|
||||||
|
self.poll_rate = 10000
|
||||||
|
self.vector_len = 4096
|
||||||
|
self.center_freq = my_freq.work(self.prob_freq)
|
||||||
|
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_sample_rate(self.samp_rate)
|
||||||
|
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_gain(24, 0)
|
||||||
|
self.rtlsdr_source_0.set_if_gain(24, 0)
|
||||||
|
self.rtlsdr_source_0.set_bb_gain(100, 0)
|
||||||
|
self.rtlsdr_source_0.set_antenna('', 0)
|
||||||
|
self.rtlsdr_source_0.set_bandwidth(0, 0)
|
||||||
|
self.rtlsdr_source_0.set_min_output_buffer(self.vector_len)
|
||||||
|
|
||||||
|
self.blocks_stream_to_vector_1 = blocks.stream_to_vector(gr.sizeof_gr_complex * 1, self.vector_len)
|
||||||
|
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 _prob_freq_probe():
|
||||||
|
while True:
|
||||||
|
val = self.probSigVec.level()
|
||||||
|
try:
|
||||||
|
self.set_prob_freq(val)
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
|
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.set_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
|
||||||
|
self.rtlsdr_source_0.set_center_freq(self.center_freq, 0)
|
||||||
|
|
||||||
|
|
||||||
|
def main(top_block_cls=get_center_freq, options=None):
|
||||||
|
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:
|
||||||
|
print('СЕРВИСНАЯ ИНФОРМАЦИЯ: ')
|
||||||
|
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()
|
||||||
@ -0,0 +1,284 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
@ -0,0 +1,270 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
@ -0,0 +1,270 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
@ -0,0 +1,428 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,564 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 2,
|
||||||
|
"id": "4fdb98fc-65bb-467e-be0c-168fee9b0fca",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"cuda:0\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"<contextlib.ExitStack at 0x7d183e4bd220>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 2,
|
||||||
|
"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",
|
||||||
|
"from torchsig.transforms import functional as F\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": 3,
|
||||||
|
"id": "4848b066-2e09-4c1c-b8fa-8e3fa84d907a",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"s = T.Spectrogram(nperseg=1024)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 4,
|
||||||
|
"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",
|
||||||
|
"\n",
|
||||||
|
" #rint(\"vSE ok\")\n",
|
||||||
|
"\n",
|
||||||
|
" spectr = np.array(F.spectrogram(signal, fft_size=specT.fft_size, fft_stride=specT.fft_stride)[:, :figsize[0] * dpi])\n",
|
||||||
|
" #print(\"VSE OK\")\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": 12,
|
||||||
|
"id": "448da74a-e0ae-44d8-9877-8dd1f257a24f",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"selected_freq=750\n",
|
||||||
|
"\n",
|
||||||
|
"path_to_binaries = f'/mnt/nvme1/dataset/{selected_freq}'\n",
|
||||||
|
"path_to_pictures = f'/mnt/nvme1/dataset_img/noise/{selected_freq}_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": 13,
|
||||||
|
"id": "6f226f86-5d72-4573-8af6-750128b70263",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stderr",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"2026-03-25_16-59-25: 0%| | 0/40 [00:00<?, ?it/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",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Dir: 2026-03-26_03-59-26 finished!\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "stderr",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"size = (256,256)\n",
|
||||||
|
"\n",
|
||||||
|
"if not os.path.exists(path_to_pictures):\n",
|
||||||
|
" os.mkdir(path_to_pictures)\n",
|
||||||
|
"\n",
|
||||||
|
"for subdir in os.listdir(path_to_binaries):\n",
|
||||||
|
" filepath = path_to_binaries + '/' + subdir + '/'\n",
|
||||||
|
"\n",
|
||||||
|
" if not os.path.isdir(filepath):\n",
|
||||||
|
" continue\n",
|
||||||
|
"\n",
|
||||||
|
" files = os.listdir(filepath)\n",
|
||||||
|
" k = max(1, int(len(files) * 0.04))\n",
|
||||||
|
" files = random.sample(files, k)\n",
|
||||||
|
" for file in tqdm(files, desc=subdir):\n",
|
||||||
|
" full_input_path = filepath + file\n",
|
||||||
|
"\n",
|
||||||
|
" if not os.path.isfile(full_input_path):\n",
|
||||||
|
" continue\n",
|
||||||
|
"\n",
|
||||||
|
" if file in ('run.log', 'reading_in_progress'):\n",
|
||||||
|
" continue\n",
|
||||||
|
"\n",
|
||||||
|
" save_base = subdir + '__' + file\n",
|
||||||
|
"\n",
|
||||||
|
" savepath = path_to_pictures + '/' + save_base + '.npy'\n",
|
||||||
|
" savepath_real_png = path_to_pictures + '/' + save_base + '_real' + '.png'\n",
|
||||||
|
" savepath_imag_png = path_to_pictures + '/' + save_base + '_imag' + '.png'\n",
|
||||||
|
" savepath_spec_png = path_to_pictures + '/' + save_base + '_spec' + '.png'\n",
|
||||||
|
"\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",
|
||||||
|
"\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",
|
||||||
|
" np.save(savepath, img)\n",
|
||||||
|
"\n",
|
||||||
|
" except Exception:\n",
|
||||||
|
" continue\n",
|
||||||
|
"\n",
|
||||||
|
" print('Dir: ', subdir , ' finished!')"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "58ff5fbd",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": ".venv-train (3.12.3)",
|
||||||
|
"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
|
||||||
|
}
|
||||||
@ -0,0 +1,222 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
@ -0,0 +1,360 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
@ -0,0 +1,194 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
@ -0,0 +1,194 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
@ -0,0 +1,236 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
Для ящика на выставки:
|
||||||
|
aleksandr@192.168.3.85 19751975
|
||||||
|
aleksandr@192.168.3.86 19751975
|
||||||
|
|
||||||
|
Для ящика на Липецк:
|
||||||
|
aleksandr@192.168.3.85 19751975
|
||||||
|
aleksandr@192.168.3.86 19751975
|
||||||
@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
@ -0,0 +1,463 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,465 @@
|
|||||||
|
{
|
||||||
|
"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
@ -0,0 +1,465 @@
|
|||||||
|
{
|
||||||
|
"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
@ -0,0 +1,503 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
# Training params
|
||||||
|
epoch : 10
|
||||||
|
batch_size : 4
|
||||||
|
num_workers: 8
|
||||||
|
limit : 5
|
||||||
|
|
||||||
|
# Optimizer
|
||||||
|
optimizer :
|
||||||
|
name : torch.optim.Adam
|
||||||
|
lr : 0.0001
|
||||||
|
|
||||||
|
# Criterion
|
||||||
|
loss_function :
|
||||||
|
name : torch.nn.CrossEntropyLoss
|
||||||
|
|
||||||
|
# Scheduler
|
||||||
|
scheduler :
|
||||||
|
name : torch.optim.lr_scheduler.StepLR
|
||||||
|
gamma : 0.01
|
||||||
|
step_size : 10
|
||||||
@ -0,0 +1,964 @@
|
|||||||
|
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
|
||||||
|
@ -0,0 +1,964 @@
|
|||||||
|
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
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
file_name
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
file_name
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
file_name
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
file_name
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
file_name
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
file_name
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
file_name
|
||||||
|
@ -0,0 +1,964 @@
|
|||||||
|
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
|
||||||
|
@ -0,0 +1,58 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
# Base deps for notebooks in train_scripts/.
|
||||||
|
#
|
||||||
|
# Install order for this repo:
|
||||||
|
# python -m pip install -r deploy/requirements/nn_gpu_pinned.txt
|
||||||
|
# python -m pip install -r train_scripts/requirements-train.txt
|
||||||
|
# python -m pip install -e ./torchsig --no-deps
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Do not install `torchsig` from PyPI: the project uses the local repo copy.
|
||||||
|
# - Main NN service pins come from deploy/requirements/nn_common.txt.
|
||||||
|
# - For notebooks use GUI OpenCV, so this file uses `opencv-python`, not headless.
|
||||||
|
|
||||||
|
ipykernel
|
||||||
|
jupyterlab
|
||||||
|
numpy==2.1.3
|
||||||
|
matplotlib==3.10.0
|
||||||
|
tqdm==4.67.1
|
||||||
|
PyYAML==6.0.2
|
||||||
|
mlconfig==0.3.2
|
||||||
|
scikit-learn==1.6.0
|
||||||
|
opencv-python==4.10.0.84
|
||||||
|
pandas
|
||||||
|
Pillow
|
||||||
|
scipy
|
||||||
Binary file not shown.
@ -0,0 +1,91 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
"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…
Reference in New Issue