Herramientas para el entrenamiento de modelos para la detección de estelas en imágenes del firmamento.
Vídeo de la noche del 13 al 14 de febrero del 2024
video2024-02-13To2024-02-14.mp4
Vídeo procesado con un theshold del 0.40
video2024-02-13To2024-02-14-detected.mp4
Para probar el modelo usando gradio
import os, cv2, gradio;
TRACKING=True;
BASE="."; # donde esté situado el modelo
model_path="best.pt";
def detect_onvideo(filename):
import PIL;
from ultralytics import YOLO;
model = YOLO(model_path);
assert os.path.isfile(filename), f"El archivo '{filename}' no existe";
cap = cv2.VideoCapture(filename);
try:
assert cap.isOpened(), f"Error al abrir el archivo de video: {filename}";
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH));
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT));
fps = cap.get(cv2.CAP_PROP_FPS);
codec_in = int(cap.get(cv2.CAP_PROP_FOURCC));
codec_out = ''.join([chr((codec_in >> 8 * i) & 0xFF) for i in range(4)]);
tempname=os.path.join(BASE,"temp_video.avi");
out = cv2.VideoWriter(tempname, cv2.VideoWriter_fourcc(*"XVID"), fps//2, (frame_width, frame_height), True);
try:
ok, frame = cap.read();
while ok:
if not TRACKING: results = model(frame, stream=False, verbose=False, conf=0.40);
else: results = model.track(frame, persist=True, verbose=False, conf=0.40);
annotated_frame = results[0].plot();
out.write(annotated_frame);
ok, frame = cap.read();
finally:
out.release();
return tempname;
finally:
cap.release();
intf = gradio.Interface(fn=detect_onvideo, inputs="video", outputs="video");
intf.launch(debug=True)