rakib72642's picture
create django structure
fe9d3dc
import json
import asyncio
from io import BytesIO
from PIL import Image
from aiohttp import ClientSession
import torch
from .model import faceModel
from data.data import member_details
import pandas as pd
async def get_image(img_url):
async with ClientSession() as session:
try:
async with session.get(img_url) as response:
img_data = await response.read()
return BytesIO(img_data)
except Exception as e:
raise ValueError(f"getImage ERROR : {str(e)}")
finally:
torch.cuda.empty_cache()
async def detection(model,img_content):
try:
img = Image.open(img_content)
result = model(img,device=0,conf=0.8)
detection = {}
data = json.loads(result[0].tojson())
if len(data) == 0:
res = {"AI": "Not Found"}
detection.update(res)
else:
df = pd.DataFrame(data)
name_counts = df['name'].value_counts().sort_index()
for name, count in name_counts.items():
res = {name: count}
detection.update(res)
return detection
except Exception as e:
raise ValueError(f"detection ERROR : {str(e)}")
finally:
torch.cuda.empty_cache()
async def format_result(ai_result):
result = {}
try:
for name, details in ai_result.items():
if name in member_details:
member_info = member_details[name]
member_info['Count'] = details
result[name] = member_info
return result
except Exception as e:
raise ValueError(f"format_result ERROR : {str(e)}")
finally:
torch.cuda.empty_cache()
async def main_detection(url):
try:
image = await get_image(url)
detect_data = await detection(faceModel, image)
result = await format_result(detect_data)
return result
except Exception as e:
raise ValueError(f"mainDet ERROR : {str(e)}")
finally:
torch.cuda.empty_cache()