init commit
This commit is contained in:
205
routes/projects.py
Normal file
205
routes/projects.py
Normal file
@@ -0,0 +1,205 @@
|
||||
from fastapi import APIRouter, Request, Form
|
||||
from fastapi.templating import Jinja2Templates
|
||||
from models.models import MODELS, runner
|
||||
from datasets.datasets import DATASETS
|
||||
from models.utils import save_result, load_results, predict_yolo
|
||||
from datasets.MC_NDCC import MC_NDCC
|
||||
import glob
|
||||
import os
|
||||
import time
|
||||
|
||||
|
||||
router = APIRouter(prefix="/projects", tags=["projects"])
|
||||
templates = Jinja2Templates(directory="templates")
|
||||
|
||||
@router.get("")
|
||||
async def get_projects(request: Request):
|
||||
return templates.TemplateResponse("projects.html", {"request": request, "title": "Projects"})
|
||||
|
||||
@router.get("/run-models")
|
||||
async def run_models(request: Request):
|
||||
results = load_results(limit = 20, results_file='templates/static/public/files/results.csv')
|
||||
|
||||
return templates.TemplateResponse("projects/run_models.html", {"request": request, "title": "Run Models", "models": MODELS, "datasets": DATASETS, "results": results})
|
||||
|
||||
@router.post("/run-models")
|
||||
async def run_models(request: Request,
|
||||
model: str = Form(...),
|
||||
dataset: str = Form(...),
|
||||
C1: float = Form(None),
|
||||
C2: float = Form(None),
|
||||
C3: float = Form(None),
|
||||
C4: float = Form(None),
|
||||
C5: float = Form(None),
|
||||
C6: float = Form(None),
|
||||
|
||||
):
|
||||
|
||||
params = None
|
||||
|
||||
if model == MODELS[0]:
|
||||
params = {'C': C1}
|
||||
elif model == MODELS[1]:
|
||||
params = {'C': C1}
|
||||
elif model == MODELS[2]:
|
||||
params = {'C': [C1, C2, C3, C4, C5, C6]}
|
||||
elif model == MODELS[3]:
|
||||
params = {'C': [C1, C2]}
|
||||
elif model == MODELS[4]:
|
||||
params = {'C': [C1, C2]}
|
||||
|
||||
|
||||
|
||||
result = runner(model, dataset, params)
|
||||
|
||||
save_result(result['model'], result['dataset'], result['accuracy'], result['params'], results_file='templates/static/public/files/results.csv')
|
||||
|
||||
results = load_results(limit = 20, results_file='templates/static/public/files/results.csv')
|
||||
|
||||
|
||||
|
||||
return templates.TemplateResponse("projects/run_models.html",
|
||||
{"request": request,
|
||||
"title": "Run Models",
|
||||
"models": MODELS,
|
||||
"datasets": DATASETS,
|
||||
"selected_model": model,
|
||||
"selected_dataset": dataset,
|
||||
"results": results
|
||||
})
|
||||
|
||||
|
||||
|
||||
@router.get("/generate-ndcc")
|
||||
async def generate_ndcc(request: Request):
|
||||
|
||||
return templates.TemplateResponse("projects/generate_ndcc.html",
|
||||
{"request": request,
|
||||
"centers": 1,
|
||||
"nos": 100,
|
||||
"nof": 10,
|
||||
"noc": 2,
|
||||
"title": "Generate NDCC Dataset"
|
||||
})
|
||||
|
||||
|
||||
@router.post("/generate-ndcc")
|
||||
async def generate_ndcc(request: Request,
|
||||
centers: int = Form(None),
|
||||
nos: int = Form(None),
|
||||
nof: int = Form(None),
|
||||
noc: int = Form(None)
|
||||
):
|
||||
|
||||
tmp_dir = "templates/static/public/files"
|
||||
|
||||
for f in glob.glob(os.path.join(tmp_dir, "NDCC_*.csv")):
|
||||
try:
|
||||
os.remove(f)
|
||||
except Exception as e:
|
||||
print(f"Could not remove {f}: {e}")
|
||||
|
||||
ndccObj = MC_NDCC(centers, nos, nof, noc)
|
||||
|
||||
|
||||
|
||||
dataset_name = f"NDCC_{nos}_{nof}_{noc}.csv"
|
||||
_ = ndccObj.get_csv(f"templates/static/public/files/NDCC_{nos}_{nof}_{noc}.csv")
|
||||
|
||||
print(dataset_name)
|
||||
|
||||
return templates.TemplateResponse("projects/generate_ndcc.html",
|
||||
{"request": request,
|
||||
"title": "Generate NDCC Dataset",
|
||||
"centers": centers,
|
||||
"nos": nos,
|
||||
"nof": nof,
|
||||
"noc": noc,
|
||||
"dataset_name": dataset_name,
|
||||
})
|
||||
|
||||
|
||||
|
||||
@router.get("/run-yolo")
|
||||
async def run_yolo(request: Request,
|
||||
):
|
||||
|
||||
images = [
|
||||
"RPf_00152.png",
|
||||
"RPf_00153.png",
|
||||
"RPf_00156.png",
|
||||
"RPf_00200.png",
|
||||
"RPf_00201.png",
|
||||
"RPf_00202.png",
|
||||
"RPf_00281.png",
|
||||
"RPf_00282.png",
|
||||
"RPf_00283.png",
|
||||
"RPf_00291.png",
|
||||
"RPf_00293.png",
|
||||
"RPf_00294.png",
|
||||
"RPf_00302.png",
|
||||
"RPf_00303.png",
|
||||
"RPf_00304.png",
|
||||
"RPf_00310.png",
|
||||
"RPf_00311.png",
|
||||
"RPf_00312.png",
|
||||
]
|
||||
|
||||
return templates.TemplateResponse("projects/run_yolo.html", {
|
||||
"request": request,
|
||||
"title": "Run Yolo",
|
||||
"images": images,
|
||||
"selected_image": images[0]
|
||||
|
||||
})
|
||||
|
||||
|
||||
@router.post("/run-yolo")
|
||||
async def run_yolo_post(
|
||||
request: Request,
|
||||
selected_image: str = Form(...),
|
||||
confidence: float = Form(...)
|
||||
):
|
||||
images = [
|
||||
"RPf_00152.png",
|
||||
"RPf_00153.png",
|
||||
"RPf_00156.png",
|
||||
"RPf_00200.png",
|
||||
"RPf_00201.png",
|
||||
"RPf_00202.png",
|
||||
"RPf_00281.png",
|
||||
"RPf_00282.png",
|
||||
"RPf_00283.png",
|
||||
"RPf_00291.png",
|
||||
"RPf_00293.png",
|
||||
"RPf_00294.png",
|
||||
"RPf_00302.png",
|
||||
"RPf_00303.png",
|
||||
"RPf_00304.png",
|
||||
"RPf_00310.png",
|
||||
"RPf_00311.png",
|
||||
"RPf_00312.png",
|
||||
]
|
||||
|
||||
# Run YOLO prediction
|
||||
file_path = "templates/static/public/files/repair/predicted/predicted_image.jpg"
|
||||
|
||||
if os.path.exists(file_path):
|
||||
os.remove(file_path)
|
||||
print("File removed.")
|
||||
else:
|
||||
print("File does not exist.")
|
||||
|
||||
_ = predict_yolo(selected_image, confidence)
|
||||
|
||||
# Add cache-busting query string (timestamp)
|
||||
result_url = f"../static/public/files/repair/predicted/predicted_image.jpg?{int(time.time())}"
|
||||
|
||||
return templates.TemplateResponse("projects/run_yolo.html", {
|
||||
"request": request,
|
||||
"title": "Run Yolo",
|
||||
"images": images,
|
||||
"selected_image": selected_image,
|
||||
"selected_confidence": confidence,
|
||||
"result_path": result_url
|
||||
})
|
||||
Reference in New Issue
Block a user