You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
450 lines
54 KiB
Plaintext
450 lines
54 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"id": "4fdb98fc-65bb-467e-be0c-168fee9b0fca",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"cuda:0\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<contextlib.ExitStack at 0x74e910b61ac0>"
|
|
]
|
|
},
|
|
"execution_count": 11,
|
|
"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": 12,
|
|
"id": "4848b066-2e09-4c1c-b8fa-8e3fa84d907a",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"s = T.Spectrogram(nperseg=1024)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"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": null,
|
|
"id": "448da74a-e0ae-44d8-9877-8dd1f257a24f",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"selected_freq=915\n",
|
|
"\n",
|
|
"path_to_binaries = f'/mnt/nvme1/dataset/noise2/{selected_freq}'\n",
|
|
"path_to_pictures = f'/mnt/nvme1/dataset_img/noise2/{selected_freq}_jpg'"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"id": "ac4945a8-29c4-4da4-945f-08658953e3e5",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from tqdm import tqdm"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"id": "6f226f86-5d72-4573-8af6-750128b70263",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"drone: 100%|██████████| 935/935 [13:33<00:00, 1.15it/s]"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Dir: drone 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.makedirs(path_to_pictures,exist_ok=True)\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",
|
|
" sig2pic_with_spec(path_to_data=filepath, filename=file, specT=s, resize=size)\n",
|
|
"\n",
|
|
" files = os.listdir(filepath)\n",
|
|
" k = max(1, int(len(files) * 0.3))\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",
|
|
"\n",
|
|
" except Exception as e:\n",
|
|
" print(f\"error {e}\")\n",
|
|
" \n",
|
|
"\n",
|
|
" print('Dir: ', subdir , ' finished!')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"id": "58ff5fbd",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"array([2.2366853e+08, 3.4833497e-15, 1.5767864e-19, 2.2228396e-15,\n",
|
|
" 1.7177136e+19, 1.5767864e-19, 2.2228527e-15, 1.5767847e-19,\n",
|
|
" 2.5893285e-12, 1.3306611e+37, 1.3563156e-19, 1.3563156e-19,\n",
|
|
" 1.3563156e-19, 1.3563156e-19, 1.3563156e-19, 1.3563156e-19,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02,\n",
|
|
" 2.5500000e+02, 2.5500000e+02, 2.5500000e+02, 2.5500000e+02],\n",
|
|
" dtype=float32)"
|
|
]
|
|
},
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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RoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEgmaYDctm1bfPrTn47CwsLYb7/94nOf+1xUVFTsdvsvf/nLcdRRR8WgQYPiHe94R3zlK1+J0tLSJtvlcrldPu66666UbwUAAAAAaId+KXf+6U9/OjZu3BgzZ86M2tramDRpUpx//vlx5513Nrv9hg0bYsOGDfGjH/0oRo8eHa+//np84QtfiA0bNsTvfve7Jtv+6le/iokTJzZ+vt9++6V8KwAAAABAO+Ty+Xw+xY4XL14co0ePjueeey5OPPHEiIiYMWNGfPzjH49169bFqFGjWrWfe+65Jz7zmc9EZWVl9Ov3Ri/N5XJx3333xRlnnNGu2crKymLo0KFRWloahYWF7doHAAAAAPRWbelryS7BnjNnTuy3336N8TEiYvz48dGnT5+YO3duq/fztzfxt/j4N1/60pfiwAMPjJNOOimmT58eu+uo1dXVUVZW1uQDAAAAAEgv2SXYRUVFcfDBBzc9WL9+sf/++0dRUVGr9rFly5a4/PLL4/zzz2/y+GWXXRYf/ehHY/DgwfHwww/HF7/4xaioqIivfOUrze7nyiuvjO9973vteyMAAAAAQLu1+QzIb33rW80uAvPmjyVLluz1YGVlZXHaaafF6NGj47vf/W6T5y6++OL4p3/6p3jPe94TF110UXzzm9+MH/7why3ua+rUqVFaWtr4sXbt2r2eDwAAAADYszafAfn1r389zj333N1u8653vStGjBgRmzdvbvJ4XV1dbNu2LUaMGLHb15eXl8fEiRNj3333jfvuuy/69++/2+3Hjh0bl19+eVRXV0dBQcEuzxcUFDT7OAAAAACQVpsD5EEHHRQHHXTQHrcbN25clJSUxPz58+OEE06IiIhHH300GhoaYuzYsS2+rqysLCZMmBAFBQXxhz/8IQYOHLjHYy1cuDCGDRsmMgIAAABAF5PsHpDHHHNMTJw4Mc4777yYNm1a1NbWxuTJk+Oss85qXAF7/fr1ccopp8Rtt90WJ510UpSVlcWpp54aO3bsiNtvv73JgjEHHXRQ9O3bN/74xz/Gpk2b4n3ve18MHDgwZs6cGT/4wQ/iP//zP1O9FQAAAACgnZIFyIiIO+64IyZPnhynnHJK9OnTJz75yU/G9ddf3/h8bW1tLF26NHbs2BEREQsWLGhcIfuII45osq9Vq1bFoYceGv37948bb7wxvva1r0U+n48jjjgirr322jjvvPNSvhUAAAAAoB1y+Xw+n/UQna2srCyGDh0apaWlUVhYmPU4AAAAANCttKWvtXkVbAAAAACA1hIgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgGQESAAAAAEhGgAQAAAAAkhEgAQAAAIBkBEgAAAAAIBkBEgAAAABIRoAEAAAAAJIRIAEAAACAZARIAAAAACAZARIAAAAASEaABAAAAACSESABAAAAgGQESAAAAAAgmaQBctu2bfHpT386CgsLY7/99ovPfe5zUVFRsdvXnHzyyZHL5Zp8fOELX2iyzZo1a+K0006LwYMHx8EHHxzf+MY3oq6uLuVbAQAAAADaoV/KnX/605+OjRs3xsyZM6O2tjYmTZoU559/ftx55527fd15550Xl112WePngwcPbvxzfX19nHbaaTFixIh45plnYuPGjXH22WdH//794wc/+EGy9wIAAAAAtF0un8/nU+x48eLFMXr06HjuuefixBNPjIiIGTNmxMc//vFYt25djBo1qtnXnXzyyTFmzJi47rrrmn3+wQcfjH/+53+ODRs2xPDhwyMiYtq0aXHRRRdFcXFxDBgwYI+zlZWVxdChQ6O0tDQKCwvb9wYBAAAAoJdqS19Ldgn2nDlzYr/99muMjxER48ePjz59+sTcuXN3+9o77rgjDjzwwHj3u98dU6dOjR07djTZ77HHHtsYHyMiJkyYEGVlZfHKK680u7/q6uooKytr8gEAAAAApJfsEuyioqI4+OCDmx6sX7/Yf//9o6ioqMXX/fu//3u8853vjFGjRsWiRYvioosuiqVLl8a9997buN83x8eIaPy8pf1eeeWV8b3vfW9v3g4AAAAA0A5tDpDf+ta34uqrr97tNosXL273QOeff37jn4899tgYOXJknHLKKbFixYo4/PDD27XPqVOnxpQpUxo/Lysri0MOOaTdMwIAAAAArdPmAPn1r389zj333N1u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cgwYMCAiIu65554444wz4q677oquXbvu9ZpmzZpFZWVl0bFZs2bFeeedF23atCk6Xl5evtdaAAAAAKBxyfYr2IsXL47y8vJCfIyIqKqqiqZNm8aSJUv26xrLli2LmpqaGDVq1F7nxo4dGx07doyBAwfGww8/HCml/3mdnTt3Rn19fdEDAAAAAMgv2ycga2tro3PnzsVfrKQk2rdvH7W1tft1jYceeih69+4dQ4YMKTr+s5/9LL773e9G69at409/+lNcfvnlsW3btrjiiiv2eZ3JkyfHLbfc8sneCAAAAADwiR3wJyCvv/76/3mjmA8ef/3rXz/1xnbs2BGPPfbYPj/9eOONN8Ypp5wS/fr1i+uuuy4mTpwYd9555/+81qRJk2LLli2FxzvvvPOp9wcAAAAAfLwD/gTkhAkT4uKLL/7INT179ozKysrYtGlT0fHdu3fH5s2b9+tvN/7ud7+L7du3x4UXXvixawcNGhS33npr7Ny5M0pLS/c6X1paus/jAAAAAEBeBxwgO3XqFJ06dfrYdYMHD466urpYtmxZ9O/fPyIiFixYEA0NDTFo0KCPff1DDz0UZ5555n59rZqammjXrp3ICAAAAACNTLa/Adm7d+8YPnx4jB49Ou6///7YtWtXjBs3LkaOHFm4A/a7774bQ4cOjd/85jcxcODAwmvfeuutWLRoUcyZM2ev6z7zzDOxcePGOPnkk6Nly5Yxb968uP322+Oaa67J9VYAAAAAgE8oW4CMiJg+fXqMGzcuhg4dGk2bNo1zzjknpk6dWji/a9euWLNmTWzfvr3odQ8//HAceeSRcdppp+11zebNm8e9994bV111VaSU4phjjom77747Ro8enfOtAAAAAACfQJOUUjrUmzjY6uvro23btrFly5YoKys71NsBAAAAgMPKgfS1A74LNgAAAADA/hIgAQAAAIBsBEgAAAAAIBsBEgAAAADIRoAEAAAAALIRIAEAAACAbARIAAAAACAbARIAAAAAyEaABAAAAACyESABAAAAgGwESAAAAAAgGwESAAAAAMhGgAQAAAAAshEgAQAAAIBsBEgAAAAAIBsBEgAAAADIRoAEAAAAALIRIAEAAACAbARIAAAAACAbARIAAAAAyEaABAAAAACyESABAAAAgGwESAAAAAAgGwESAAAAAMhGgAQAAAAAshEgAQAAAIBsBEgAAAAAIBsBEgAAAADIRoAEAAAAALIRIAEAAACAbARIAAAAACAbARIAAAAAyEaABAAAAACyESABAAAAgGwESAAAAAAgGwESAAAAAMhGgAQAAAAAshEgAQAAAIBsBEgAAAAAIBsBEgAAAADIRoAEAAAAALIRIAEAAACAbARIAAAAACAbARIAAAAAyEaABAAAAACyESABAAAAgGwESAAAAAAgGwESAAAAAMhGgAQAAAAAshEgAQAAAIBsBEgAAAAAIBsBEgAAAADIRoAEAAAAALIRIAEAAACAbARIAAAAACAbARIAAAAAyEaABAAAAACyESABAAAAgGwESAAAAAAgGwESAAAAAMhGgAQAAAAAshEgAQAAAIBsBEgAAAAAIBsBEgAAAADIRoAEAAAAALIRIAEAAACAbARIAAAAACAbARIAAAAAyEaABAAAAACyESABAAAAgGwESAAAAAAgGwESAAAAAMhGgAQAAAAAshEgAQAAAIBsBEgAAAAAIBsBEgAAAADIRoAEAAAAALIRIAEAAACAbARIAAAAACAbARIAAAAAyEaABAAAAACyESABAAAAgGwESAAAAAAgGwESAAAAAMhGgAQAAAAAshEgAQAAAIBsBEgAAAAAIBsBEgAAAADIRoAEAAAAALIRIAEAAACAbARIAAAAACAbARIAAAAAyEaABAAAAACyESABAAAAgGwESAAAAAAgGwESAAAAAMhGgAQAAAAAshEgAQAAAIBsBEgAAAAAIBsBEgAAAADIRoAEAAAAALIRIAEAAACAbARIAAAAACAbARIAAAAAyEaABAAAAACyESABAAAAgGwESAAAAAAgGwESAAAAAMhGgAQAAAAAshEgAQAAAIBsBEgAAAAAIBsBEgAAAADIRoAEAAAAALIRIAEAAACAbARIAAAAACAbARIAAAAAyEaABAAAAACyESABAAAAgGwESAAAAAAgGwESAAAAAMhGgAQAAAAAshEgAQAAAIBsBEgAAAAAIBsBEgAAAADIRoAEAAAAALIRIAEAAACAbARIAAAAACAbARIAAAAAyEaABAAAAACyESABAAAAgGwESAAAAAAgGwESAAAAAMhGgAQAAAAAshEgAQAAAIBsBEgAAAAAIBsBEgAAAADIRoAEAAAAALIRIAEAAACAbARIAAAAACAbARIAAAAAyEaABAAAAACyESABAAAAgGwESAAA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",
|
|
"text/plain": [
|
|
"<Figure size 1600x1600 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"filename=\"/home/sibscience-4/from_ssh/DroneDetector/HackA5.npy\"\n",
|
|
"filename=\"/mnt/nvme1/dataset/drone/2400/2026-04-25_13-23-11/A5_2.45_drone_100_1700_147.npy\"\n",
|
|
"with open(filename, 'rb') as file:\n",
|
|
" tmp = np.frombuffer(file.read(), dtype=np.complex64)\n",
|
|
" signal = tmp\n",
|
|
"\n",
|
|
"%matplotlib inline\n",
|
|
"signal\n",
|
|
"specT = T.Spectrogram(nperseg=1024)\n",
|
|
"figsize=(16,16)\n",
|
|
"dpi=16\n",
|
|
"resize = None\n",
|
|
"\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",
|
|
"\n",
|
|
"fig2\n",
|
|
"\n",
|
|
"plt.axes(ylim=(-1, 1))\n",
|
|
"\n",
|
|
"plt.plot(real)\n",
|
|
"\n",
|
|
"real[:100]\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 30,
|
|
"id": "c7eea9ad",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"array([2.2366853e+08+1.2387478e-40j, 3.4833497e-15+4.4898648e+21j,\n",
|
|
" 1.5767864e-19+2.1442303e-07j, 2.2228396e-15+7.6830766e+31j,\n",
|
|
" 1.7177136e+19+6.7425655e+22j, 1.5767864e-19+1.8727951e+31j,\n",
|
|
" 2.2228527e-15+2.7904159e+29j, 1.5767847e-19+1.4585893e-19j,\n",
|
|
" 2.5893285e-12+2.7000278e-06j, 1.3306611e+37+1.3563156e-19j,\n",
|
|
" 1.3563156e-19+1.3563156e-19j, 1.3563156e-19+1.3563156e-19j,\n",
|
|
" 1.3563156e-19+1.3563156e-19j, 1.3563156e-19+1.3563156e-19j,\n",
|
|
" 1.3563156e-19+1.3563156e-19j, 1.3563156e-19+7.7097618e-33j,\n",
|
|
" 0.0000000e+00+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+1.8900000e+02j, 0.0000000e+00+0.0000000e+00j,\n",
|
|
" 0.0000000e+00+0.0000000e+00j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+1.8600000e+02j, 0.0000000e+00+0.0000000e+00j,\n",
|
|
" 0.0000000e+00+0.0000000e+00j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.4700000e+02+0.0000000e+00j,\n",
|
|
" 0.0000000e+00+0.0000000e+00j, 0.0000000e+00+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 1.7900000e+02+0.0000000e+00j,\n",
|
|
" 0.0000000e+00+0.0000000e+00j, 9.7000000e+01+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j,\n",
|
|
" 2.5500000e+02+2.5500000e+02j, 2.5500000e+02+2.5500000e+02j],\n",
|
|
" dtype=complex64)"
|
|
]
|
|
},
|
|
"execution_count": 30,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"signal[:100]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 26,
|
|
"id": "ea2676be",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Agg\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(matplotlib.get_backend())"
|
|
]
|
|
}
|
|
],
|
|
"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
|
|
}
|