Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions 128_Team Shoolini/Backend/data_manager.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import json
import os
from datetime import datetime

# Directory to store raw images
RAW_IMAGES_DIR = "raw_images"
DATA_JSON_FILE = "data.json"

# Ensure directory exists
os.makedirs(RAW_IMAGES_DIR, exist_ok=True)

# Initialize data.json if not exists
if not os.path.exists(DATA_JSON_FILE):
with open(DATA_JSON_FILE, "w") as f:
json.dump({"records": []}, f, indent=4)

def save_raw_image(file_name, image_data):
"""Saves raw image received from frontend into raw_images directory."""
file_path = os.path.join(RAW_IMAGES_DIR, file_name)
with open(file_path, "wb") as f:
f.write(image_data)
return file_path

def add_record(record):
"""Adds a processed record to data.json."""
with open(DATA_JSON_FILE, "r") as f:
db = json.load(f)

record["timestamp"] = datetime.now().isoformat()
db["records"].append(record)

with open(DATA_JSON_FILE, "w") as f:
json.dump(db, f, indent=4)

def get_data():
"""Returns all records from data.json."""
with open(DATA_JSON_FILE, "r") as f:
return json.load(f)

# Example Usage
if __name__ == "__main__":
# Example raw image from frontend (binary data)
with open("example.jpg", "rb") as img_file:
raw_image_data = img_file.read()

raw_file_path = save_raw_image("sample1.jpg", raw_image_data)

# Processed data to be stored in data.json
processed_record = {"id": 1, "waste_type": "plastic", "image_path": raw_file_path, "location": "28.7041, 77.1025"}
add_record(processed_record)

# Fetch all records
print(get_data())
43 changes: 43 additions & 0 deletions 128_Team Shoolini/Backend/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
from fastapi import FastAPI, HTTPException
import onnxruntime as ort
import numpy as np
from PIL import Image
import requests
import io
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()

MODEL_PATH = "D:/EcoVisonAR/Models/yolov8m.onnx"
session = ort.InferenceSession(MODEL_PATH)

def preprocess_image(image: Image.Image):
image = image.resize((640, 640))
image = np.array(image).astype(np.float32) / 255.0
image = np.transpose(image, (2, 0, 1))
image = np.expand_dims(image, axis=0)
return image

app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)

@app.post("/predict/")
async def predict(image_url: str):
try:
response = requests.get(image_url)
response.raise_for_status()
image = Image.open(io.BytesIO(response.content))
input_tensor = preprocess_image(image)

inputs = {session.get_inputs()[0].name: input_tensor}
outputs = session.run(None, inputs)

return {"output_shape": str(outputs[0].shape)}

except requests.exceptions.RequestException as e:
raise HTTPException(status_code=400, detail=f"Error fetching image: {e}")
106 changes: 106 additions & 0 deletions 128_Team Shoolini/Models/runs/detect/train/args.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
task: detect
mode: train
model: yolov8m.pt
data: /content/drive/MyDrive/TACO/data.yaml
epochs: 50
time: null
patience: 100
batch: 16
imgsz: 640
save: true
save_period: -1
cache: false
device: cuda
workers: 8
project: null
name: train
exist_ok: false
pretrained: true
optimizer: auto
verbose: true
seed: 0
deterministic: true
single_cls: false
rect: false
cos_lr: false
close_mosaic: 10
resume: false
amp: true
fraction: 1.0
profile: false
freeze: null
multi_scale: false
overlap_mask: true
mask_ratio: 4
dropout: 0.0
val: true
split: val
save_json: false
save_hybrid: false
conf: null
iou: 0.7
max_det: 300
half: false
dnn: false
plots: true
source: null
vid_stride: 1
stream_buffer: false
visualize: false
augment: false
agnostic_nms: false
classes: null
retina_masks: false
embed: null
show: false
save_frames: false
save_txt: false
save_conf: false
save_crop: false
show_labels: true
show_conf: true
show_boxes: true
line_width: null
format: torchscript
keras: false
optimize: false
int8: false
dynamic: false
simplify: true
opset: null
workspace: null
nms: false
lr0: 0.01
lrf: 0.01
momentum: 0.937
weight_decay: 0.0005
warmup_epochs: 3.0
warmup_momentum: 0.8
warmup_bias_lr: 0.1
box: 7.5
cls: 0.5
dfl: 1.5
pose: 12.0
kobj: 1.0
nbs: 64
hsv_h: 0.015
hsv_s: 0.7
hsv_v: 0.4
degrees: 0.0
translate: 0.1
scale: 0.5
shear: 0.0
perspective: 0.0
flipud: 0.0
fliplr: 0.5
bgr: 0.0
mosaic: 1.0
mixup: 0.0
copy_paste: 0.0
copy_paste_mode: flip
auto_augment: randaugment
erasing: 0.4
crop_fraction: 1.0
cfg: null
tracker: botsort.yaml
save_dir: runs/detect/train
106 changes: 106 additions & 0 deletions 128_Team Shoolini/Models/runs/detect/train2/args.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
task: detect
mode: train
model: yolov8m.pt
data: /content/drive/MyDrive/TACO/data.yaml
epochs: 50
time: null
patience: 100
batch: 16
imgsz: 640
save: true
save_period: -1
cache: false
device: cuda
workers: 8
project: null
name: train2
exist_ok: false
pretrained: true
optimizer: auto
verbose: true
seed: 0
deterministic: true
single_cls: false
rect: false
cos_lr: false
close_mosaic: 10
resume: false
amp: true
fraction: 1.0
profile: false
freeze: null
multi_scale: false
overlap_mask: true
mask_ratio: 4
dropout: 0.0
val: true
split: val
save_json: false
save_hybrid: false
conf: null
iou: 0.7
max_det: 300
half: false
dnn: false
plots: true
source: null
vid_stride: 1
stream_buffer: false
visualize: false
augment: false
agnostic_nms: false
classes: null
retina_masks: false
embed: null
show: false
save_frames: false
save_txt: false
save_conf: false
save_crop: false
show_labels: true
show_conf: true
show_boxes: true
line_width: null
format: torchscript
keras: false
optimize: false
int8: false
dynamic: false
simplify: true
opset: null
workspace: null
nms: false
lr0: 0.01
lrf: 0.01
momentum: 0.937
weight_decay: 0.0005
warmup_epochs: 3.0
warmup_momentum: 0.8
warmup_bias_lr: 0.1
box: 7.5
cls: 0.5
dfl: 1.5
pose: 12.0
kobj: 1.0
nbs: 64
hsv_h: 0.015
hsv_s: 0.7
hsv_v: 0.4
degrees: 0.0
translate: 0.1
scale: 0.5
shear: 0.0
perspective: 0.0
flipud: 0.0
fliplr: 0.5
bgr: 0.0
mosaic: 1.0
mixup: 0.0
copy_paste: 0.0
copy_paste_mode: flip
auto_augment: randaugment
erasing: 0.4
crop_fraction: 1.0
cfg: null
tracker: botsort.yaml
save_dir: runs/detect/train2
Loading