diff --git a/.gitignore b/.gitignore index 31e8f80..7f66769 100644 --- a/.gitignore +++ b/.gitignore @@ -190,4 +190,5 @@ runtime/ /train_scripts/models -logs/nn_results_*.csv \ No newline at end of file +logs/nn_results_*.csv +.codex \ No newline at end of file diff --git a/NN_server/Models/ensemble_1200_v44.py b/NN_server/Models/ensemble_1200_v44.py index 11a7239..aa1b561 100644 --- a/NN_server/Models/ensemble_1200_v44.py +++ b/NN_server/Models/ensemble_1200_v44.py @@ -10,7 +10,7 @@ import os import re -def _render_plot(values, figsize=(16, 16), dpi=16): +def _render_signal_channel(values, figsize=(16, 16), dpi=16, resize=(256, 256)): import matplotlib.pyplot as plt fig = plt.figure(figsize=figsize) @@ -30,6 +30,34 @@ def _render_plot(values, figsize=(16, 16), dpi=16): if img is None: raise RuntimeError("failed to decode plot image") + img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) + if resize is not None: + img = cv2.resize(img, resize) + + plt.clf() + plt.cla() + plt.close() + plt.close(fig) + + return img + + +def _render_training_png(image): + import matplotlib.pyplot as plt + + fig = plt.figure() + plt.imshow(image) + + buf = io.BytesIO() + fig.savefig(buf, format="png") + buf.seek(0) + img_arr = np.frombuffer(buf.getvalue(), dtype=np.uint8) + buf.close() + + img = cv2.imdecode(img_arr, 1) + if img is None: + raise RuntimeError("failed to decode training-style image") + plt.clf() plt.cla() plt.close() @@ -85,8 +113,8 @@ def pre_func_ensemble(data=None, src="", ind_inference=0): imag = np.asarray(data[1], dtype=np.float32) signal = real + 1j * imag - img_real = _render_plot(signal.real) - img_mag = _render_plot(np.abs(signal)) + img_real = _render_training_png(_render_signal_channel(signal.real)) + img_mag = _render_training_png(_render_signal_channel(np.abs(signal))) cv2.destroyAllWindows() gc.collect() diff --git a/NN_server/Models/ensemble_2400_v44.py b/NN_server/Models/ensemble_2400_v44.py index 11a7239..aa1b561 100644 --- a/NN_server/Models/ensemble_2400_v44.py +++ b/NN_server/Models/ensemble_2400_v44.py @@ -10,7 +10,7 @@ import os import re -def _render_plot(values, figsize=(16, 16), dpi=16): +def _render_signal_channel(values, figsize=(16, 16), dpi=16, resize=(256, 256)): import matplotlib.pyplot as plt fig = plt.figure(figsize=figsize) @@ -30,6 +30,34 @@ def _render_plot(values, figsize=(16, 16), dpi=16): if img is None: raise RuntimeError("failed to decode plot image") + img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) + if resize is not None: + img = cv2.resize(img, resize) + + plt.clf() + plt.cla() + plt.close() + plt.close(fig) + + return img + + +def _render_training_png(image): + import matplotlib.pyplot as plt + + fig = plt.figure() + plt.imshow(image) + + buf = io.BytesIO() + fig.savefig(buf, format="png") + buf.seek(0) + img_arr = np.frombuffer(buf.getvalue(), dtype=np.uint8) + buf.close() + + img = cv2.imdecode(img_arr, 1) + if img is None: + raise RuntimeError("failed to decode training-style image") + plt.clf() plt.cla() plt.close() @@ -85,8 +113,8 @@ def pre_func_ensemble(data=None, src="", ind_inference=0): imag = np.asarray(data[1], dtype=np.float32) signal = real + 1j * imag - img_real = _render_plot(signal.real) - img_mag = _render_plot(np.abs(signal)) + img_real = _render_training_png(_render_signal_channel(signal.real)) + img_mag = _render_training_png(_render_signal_channel(np.abs(signal))) cv2.destroyAllWindows() gc.collect() diff --git a/README.md b/README.md index 61f3937..d78eea4 100644 --- a/README.md +++ b/README.md @@ -210,4 +210,13 @@ docker compose -f deploy/docker/docker-compose.yml logs --timestamps dronedetect sudo hackrf_spiflash -w hackrf_one_usb.bin ``` -./.venv-sdr/bin/python scripts_nn/data_saver_headless.py --serial 000 --freq 4500000000 --save-dir /home/sibscience-4/Dataset/3300 --file-tag DJI_3_ --samp-rate 20000000 --split-size 400000 --delay 0.1 --rf-gain 12 --if-gain 30 --bb-gain 36 \ No newline at end of file +./.venv-sdr/bin/python scripts_nn/data_saver_headless.py --serial 000 --freq 4500000000 --save-dir /home/sibscience-4/Dataset/3300 --file-tag DJI_3_ --samp-rate 20000000 --split-size 400000 --delay 0.1 --rf-gain 12 --if-gain 30 --bb-gain 36 + +### Парсинг логов +``` bash +.venv-train/bin/python scripts/capture_nn_results.py \ + --output logs/nn_results_live_6gb.csv \ + --format csv \ + --max-bytes 6442450944 \ + --tail 0 +``` \ No newline at end of file