From 476bb1f0453862f9d839d4c16530372d2d8cc077 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marvin=20Krau=C3=9Fer?= Date: Thu, 30 Apr 2026 20:08:48 +0200 Subject: [PATCH] added semaphore for cnn server --- bird_cnn/__pycache__/server.cpython-314.pyc | Bin 3531 -> 3760 bytes bird_cnn/server.py | 27 ++++++++++++-------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/bird_cnn/__pycache__/server.cpython-314.pyc b/bird_cnn/__pycache__/server.cpython-314.pyc index 0cd2d06aed42da87534585c6eb52d8a6ee6815a3..9ae87ea7c918613bfec69ecf85dda9eabed0e875 100644 GIT binary patch delta 1340 zcmZuxO>7%Q6rS0Q?fvn_+pO0=iT@I-acaj+;yAR}rX*F2NL#6^trQ{Qjb$3EwTPQ& zZF573;9@G#C>@|~sFYL)nq#GMK!O8;<^&Q7E^;tAM4}SnL}?BI#DN(*ODf2$=G(X5 z``&x=W_R|Rp8H-Q(kXBNkKF2BVQ)on!^BEx(LMuIYDzB4DpPi-Y}u*F$}n27*!yN+ z91=MIWw#7^fyz07%4;xAAF$mh09_rLNjXjQoto3oV=D1~DupQz8i%~euhGgl5l|Y9 zzJ&v5onp`j&|3&-_FgbU&y3Gl)Xq~zouEc3FSlzxi^}^JDvg7qSlM(gUNmw4#BFd{r#PHgn+C>zt zDV;L4H8?{=(a=+B0uG@#y$a zX=P(EzK!SJ7r5g-;Kxy!mV-bNW?_Y@&{+^a;QU}3C^Wi3b)$P`iSIC^ika+&HN*T% zaD+gAnk6V8!Qz)~hG&{Gwn90ECM@1jvey5MjNKp%?E;l?7@Xq5xksF&m)1DUxIkw- zh-Lif4~xhj>I1E{gqV;JG-6&cE5}J2oKZmOM~jRTwn*O)Zn{FLfLz9>>IXq!0cm(a zK%X;yi<+dppa8M$>rk-^{lrAg_9k7*7ZJ;Tw|EX$O5j=g5yP)|TYq7#H>7P(U~TI5 z)Q9IAj!>0g0}HzBRRYbE-DG0Uz1J)%1=p zxK>y#Y?$tkJo1gbbFq4E-vTCN^W68r9B=#7eHVK=6!S*J@r`_zP#A5G>;buqvTBWFyGux!*OZp4w zH*Oj}hhE}OxW_T6_YolfpC((rs^@dFg=<&Po4iYGvX}D3+``p)J+F^qKYE{!`kp81 z6ag;@u@*|%+#9*VT<*2Gy#6BE!9~%Anpp@C2m^~m$+TCtzmY5Z+6#u>t@dq{b0@74ZHAx+oJ*HcuHZbmGd7O CU=T6@ delta 1144 zcmZuwO=ufO6rS1DYX4?s%lfgU>`Jm_Y>CLqpHhX`$hftjaT8b;tc2ig<0PhWuxopz zgf;{$nj9R5;-4{f{=hng9&#wnrME)rQxYgf0R`iO3&|m;IPt-k7BaK)Vjr?F-@N_a z_ukBVy!l;waX>lfQ6xaV$WPm&;|od%dKNmT+YF%;FvL*N_Ye{Va~KeK3VDuodWi3SCDa z*^Y62FrOu=qK`ls>;MmRf1vP4vN!7h;V

&(6jZyhYabMN)Aah?1xR(4pO$4{o2l z+Xn!27p)f!x$Q6lx*@xRfq!~po^$KVUHiq8qWBaPZ@QCGzK;zPOC z6fb}C26^WOW(St6|$=dUhLEKF2`om(7> z+*^R<+#dtL*S;f>xVh+m#RRG6XMg`8_$%xWxt71=iTNy&>sPtI)f}-`Rk=SUhE_WT z@{{aZca8jTZQP=7be)+fT0Qu&T!6>%|8mmPOGvAY0)6VZ7q#H;QCH*yWx6S71lG}L z@w?&c!=q!v7sp1d9R33xg(vY_lupndTOJB@QZ1FLg`V+=%h$$6a@J+?ONY039(OA# fX;ab4(rcx$EIqxggkckz^KBL|!H*2F>;#_x9ZlsC diff --git a/bird_cnn/server.py b/bird_cnn/server.py index 96fa479..3d82a5d 100644 --- a/bird_cnn/server.py +++ b/bird_cnn/server.py @@ -11,9 +11,13 @@ import torch.nn.functional as F from bird_cnn import Bird_CNN +import threading + BUILD_PATH = "./build_models" IMAGE_SIZE = 256 +sem = threading.Semaphore(1) #adjust to performance + class bird_species(Enum): Common_Kingfisher = 0 CommonMyna = 1 @@ -53,17 +57,18 @@ app.add_middleware( @app.post("/predict") async def predict(file: UploadFile = File(...)): - image_bytes = await file.read() + with sem: + image_bytes = await file.read() - image = Image.open(io.BytesIO(image_bytes)).convert("RGB") - image = transform(image).unsqueeze(0).to(device) + image = Image.open(io.BytesIO(image_bytes)).convert("RGB") + image = transform(image).unsqueeze(0).to(device) - with torch.no_grad(): - pred = model(image) - probs = F.softmax(pred, dim=1) - confidence, cls = torch.max(probs, dim=1) + with torch.no_grad(): + pred = model(image) + probs = F.softmax(pred, dim=1) + confidence, cls = torch.max(probs, dim=1) - return { - "class": bird_species(cls.item()).name, - "confidence": confidence.item() - } \ No newline at end of file + return { + "class": bird_species(cls.item()).name, + "confidence": confidence.item() + } \ No newline at end of file