YACWC
This commit is contained in:
@@ -1,11 +1,25 @@
|
||||
import uvicorn.protocols.http.httptools_impl
|
||||
|
||||
# orig_data_received = uvicorn.protocols.http.httptools_impl.HttpToolsProtocol.data_received
|
||||
# def debug_data_received(self, data):
|
||||
# try:
|
||||
# print("RAW INVALID DATA RECEIVED: %r", data)
|
||||
# except Exception:
|
||||
# pass
|
||||
# return orig_data_received(self, data)
|
||||
# uvicorn.protocols.http.httptools_impl.HttpToolsProtocol.data_received = debug_data_received
|
||||
|
||||
from typing import Union, Optional, List
|
||||
from fastapi.exceptions import RequestValidationError
|
||||
from pydantic import BaseModel
|
||||
from fastapi import FastAPI, Request, Depends
|
||||
from CommonCode.settings import get_logger
|
||||
from CommonCode.video_meta import FTPVideo
|
||||
import logging
|
||||
from fastapi.responses import StreamingResponse
|
||||
from fastapi.responses import JSONResponse, StreamingResponse
|
||||
import os
|
||||
import numpy as np
|
||||
from fastapi import FastAPI, Request, status
|
||||
import sys
|
||||
import json
|
||||
import time
|
||||
@@ -20,15 +34,54 @@ session_manager = SessionManager(
|
||||
interface=RedisSessionInterface(redis.from_url("redis://localhost"))
|
||||
)
|
||||
|
||||
logger = get_logger(__name__,'/var/log/vector_search_logs/main_embed_scores', stdout=True, systemd=False, level = logging.INFO)
|
||||
r = redis.Redis(host='localhost', port=6379, db=15)
|
||||
logger = get_logger(
|
||||
__name__,
|
||||
"/var/log/vector_search_logs/main_embed_scores",
|
||||
stdout=True,
|
||||
systemd=False,
|
||||
level=logging.INFO,
|
||||
)
|
||||
r = redis.Redis(host="localhost", port=6379, db=15)
|
||||
|
||||
|
||||
@app.exception_handler(RequestValidationError)
|
||||
async def validation_exception_handler(request: Request, exc: RequestValidationError):
|
||||
exc_str = f"{exc}".replace("\n", " ").replace(" ", " ")
|
||||
logging.error(f"{request}: {exc_str}")
|
||||
content = {"status_code": 10422, "message": exc_str, "data": None}
|
||||
return JSONResponse(
|
||||
content=content, status_code=status.HTTP_422_UNPROCESSABLE_ENTITY
|
||||
)
|
||||
|
||||
|
||||
@app.get("/video_embeddings")
|
||||
def get_video_embeddings(video_path: str):
|
||||
llvec = ES.get_embeddings_for_a_file(video_path)
|
||||
if llvec is not None:
|
||||
llvec = dict(llvec)
|
||||
llvec["embeds"] = llvec["embeds"].tolist()
|
||||
llvec["frame_numbers"] = llvec["frame_numbers"].tolist()
|
||||
|
||||
return llvec
|
||||
|
||||
|
||||
@app.get("/prompt_embedding")
|
||||
def get_prompt_embedding(prompt: str):
|
||||
return ES.get_query_vector(prompt)
|
||||
|
||||
|
||||
@app.get("/match_scores")
|
||||
def get_clip_scores(video_path: str, prompt: str):
|
||||
results = ES.get_clip_scores(video_path, prompt)
|
||||
return results.T.tolist()
|
||||
|
||||
|
||||
class VideosPostRequest(BaseModel):
|
||||
query: str = "A cat and a human"
|
||||
threshold: float = 0.10
|
||||
c_dirs: Optional[List[str]] = None
|
||||
task_id: str = 'compute_log'
|
||||
task_id: str = "compute_log"
|
||||
|
||||
|
||||
@app.post("/videos.json")
|
||||
async def videos_json(
|
||||
@@ -58,30 +111,27 @@ async def videos_json(
|
||||
"/srv/ftp_tcc/leopards1/2025/09/08",
|
||||
"/srv/ftp_tcc/leopards1/2025/09/09",
|
||||
"/srv/ftp_tcc/leopards1/2025/09/10",
|
||||
"/srv/ftp_tcc/leopards1/2025/09/11",
|
||||
"/srv/ftp_tcc/leopards1/2025/09/11",
|
||||
]
|
||||
|
||||
|
||||
# print(','.join([str(x) for x in c_dirs]))
|
||||
# message = {'task':'SCHEDULED','when':[str(x) for x in c_dirs], 'time':time.time()}
|
||||
# r.rpush(task_id, json.dumps(message))?
|
||||
|
||||
|
||||
for x in c_dirs:
|
||||
message = {'task':'QUEUEING', 'when': str(x), 'time': time.time()}
|
||||
message = {"task": "QUEUEING", "when": str(x), "time": time.time()}
|
||||
r.rpush(task_id, json.dumps(message))
|
||||
|
||||
folder_scores = ES.calculate_embedding_score_in_folders(
|
||||
tuple(c_dirs), threshold=threshold, query=query, redis_key = task_id)
|
||||
tuple(c_dirs), threshold=threshold, query=query, redis_key=task_id
|
||||
)
|
||||
# if p_hits != ES.calculate_embedding_score_in_folders.cache_info().hits:
|
||||
# logger.info("FROM CACHE")
|
||||
# else:pp
|
||||
# logger.info("COMPUTED FROM SCRATCH")
|
||||
|
||||
|
||||
|
||||
folder_scores["breaks"] = ES.add_breaks_between_videos(folder_scores)
|
||||
folder_scores['videos'] = ES.collapse_scores_to_maxmin_avg(folder_scores)
|
||||
folder_scores["videos"] = ES.collapse_scores_to_maxmin_avg(folder_scores)
|
||||
return folder_scores
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user