Habeeb Okunade commited on
Commit
e2b01e7
·
0 Parent(s):

Training the Beit Model

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +4 -0
  2. Dockerfile +30 -0
  3. app.py +48 -0
  4. data/test/AMD/1736051691422.jpg +3 -0
  5. data/test/AMD/1736059500612.jpg +3 -0
  6. data/test/AMD/1736150438499.jpg +3 -0
  7. data/test/AMD/1736230256361.jpg +3 -0
  8. data/test/AMD/1736238086487.jpg +3 -0
  9. data/test/AMD/1736308347629.jpg +3 -0
  10. data/test/DMO/1735967109040.jpg +3 -0
  11. data/test/DMO/1736309728822.jpg +3 -0
  12. data/test/DMO/1736313646280.jpg +3 -0
  13. data/test/DMO/1736313646586.jpg +3 -0
  14. data/test/DMO/1736750977504.jpg +3 -0
  15. data/test/DR/1736229013500.jpg +3 -0
  16. data/test/DR/1736246127574.jpg +3 -0
  17. data/test/DR/1736573713479.jpg +3 -0
  18. data/test/DR/1736674429738.jpg +3 -0
  19. data/test/GLC/1736053862930.jpg +3 -0
  20. data/test/GLC/1736055876619.jpg +3 -0
  21. data/test/GLC/1736312466635.jpg +3 -0
  22. data/test/GLC/1736404283466.jpg +3 -0
  23. data/test/GLC/1736829787888.jpg +3 -0
  24. data/test/GLC/1736917199225.jpg +3 -0
  25. data/test/HR/1735972906946.jpg +3 -0
  26. data/test/HR/1735975088433.jpg +3 -0
  27. data/test/HR/1736056856336.jpg +3 -0
  28. data/test/HR/1736412969133.jpg +3 -0
  29. data/test/HR/1736567353636.jpg +3 -0
  30. data/test/HR/1736573124081.jpg +3 -0
  31. data/test/HR/1736661007443.jpg +3 -0
  32. data/test/HR/1736829787888.jpg +3 -0
  33. data/test/HR/1736926372380.jpg +3 -0
  34. data/test/NO/1736845337125.jpg +3 -0
  35. data/test/NO/1736916307298.jpg +3 -0
  36. data/test/NO/1736916453077.jpg +3 -0
  37. data/test/NO/1736916782202.jpg +3 -0
  38. data/test/NO/1736918586976.jpg +3 -0
  39. data/test/NO/1736924950806.jpg +3 -0
  40. data/test/NO/1736933030180.jpg +3 -0
  41. data/test/NO/1737001832303.jpg +3 -0
  42. data/test/NO/1737009313610.jpg +3 -0
  43. data/test/NO/1737009345917.jpg +3 -0
  44. data/train/AMD/1735805076901.jpg +3 -0
  45. data/train/AMD/1735970498953.jpg +3 -0
  46. data/train/AMD/1735972243906.jpg +3 -0
  47. data/train/AMD/1736051325693.jpg +3 -0
  48. data/train/AMD/1736053212903.jpg +3 -0
  49. data/train/AMD/1736054226367.jpg +3 -0
  50. data/train/AMD/1736054226530.jpg +3 -0
.gitattributes ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ *.png filter=lfs diff=lfs merge=lfs -text
2
+ *.jpg filter=lfs diff=lfs merge=lfs -text
3
+ *.jpeg filter=lfs diff=lfs merge=lfs -text
4
+ *.gif filter=lfs diff=lfs merge=lfs -text
Dockerfile ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.10-slim
2
+
3
+ # Create non-root user
4
+ RUN adduser --disabled-password --gecos '' user
5
+ USER user
6
+
7
+ # Environment variables
8
+ ENV HOME=/home/user \
9
+ PATH=/home/user/.local/bin:$PATH \
10
+ PORT=7860
11
+
12
+ WORKDIR $HOME/app
13
+
14
+ # Copy requirements first (better for Docker layer caching)
15
+ COPY --chown=user requirements.txt ./
16
+ RUN pip install --no-cache-dir -r requirements.txt
17
+
18
+ # Copy the rest of the application
19
+ COPY --chown=user . .
20
+
21
+ # Expose FastAPI default port for Hugging Face Spaces
22
+ EXPOSE 7860
23
+
24
+ # HF auth picked automatically from env (Spaces provides HF_TOKEN)
25
+ ENV HF_HOME=/root/.cache/huggingface \
26
+ TRANSFORMERS_CACHE=/root/.cache/huggingface/transformers \
27
+ TORCH_HOME=/root/.cache/torch
28
+
29
+ # Start API
30
+ CMD ["bash", "startup.sh"]
app.py ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # app.py
2
+ import os, json
3
+ from fastapi import FastAPI, UploadFile
4
+ from transformers import AutoImageProcessor, BeitForImageClassification
5
+ from PIL import Image
6
+ import torch
7
+
8
+ MODEL_DIR = "outputs/beit-retina"
9
+ CLASSES = ["AMD","DMO","DR","GLC","HR","Normal"]
10
+
11
+ app = FastAPI(title="Retina Disease Classifier")
12
+
13
+ # Lazy load model & processor
14
+ processor = None
15
+ model = None
16
+
17
+ def load_model():
18
+ global processor, model, CLASSES
19
+ processor = AutoImageProcessor.from_pretrained(MODEL_DIR)
20
+ model = BeitForImageClassification.from_pretrained(MODEL_DIR)
21
+ with open(os.path.join(MODEL_DIR, "labels.json")) as f:
22
+ CLASSES = json.load(f)
23
+
24
+ @app.on_event("startup")
25
+ def startup_event():
26
+ if os.path.exists(MODEL_DIR):
27
+ load_model()
28
+
29
+ @app.post("/predict")
30
+ async def predict(file: UploadFile):
31
+ if model is None:
32
+ return {"error": "Model not trained yet"}
33
+ img = Image.open(file.file).convert("RGB")
34
+ inputs = processor(images=img, return_tensors="pt")
35
+ with torch.no_grad():
36
+ logits = model(**inputs).logits
37
+ probs = torch.softmax(logits, dim=1)[0].tolist()
38
+ pred_id = int(torch.argmax(logits, dim=1).item())
39
+ return {
40
+ "class_id": CLASSES[pred_id],
41
+ "probabilities": [{CLASSES[i]: float(p) for i, p in enumerate(probs)}]
42
+ }
43
+
44
+ @app.post("/train")
45
+ async def train_endpoint():
46
+ os.system("python train.py") # blocking training run
47
+ load_model()
48
+ return {"status": "Training complete and model reloaded"}
data/test/AMD/1736051691422.jpg ADDED

Git LFS Details

  • SHA256: dc0a35b8cd192629045a8917de9df698141626efb5d672509e32edea27eabb5a
  • Pointer size: 131 Bytes
  • Size of remote file: 890 kB
data/test/AMD/1736059500612.jpg ADDED

Git LFS Details

  • SHA256: ba19b6b4a883c4eb385f51d402a57f2d71d128f4c73976fc7a0d5247e54de0fa
  • Pointer size: 131 Bytes
  • Size of remote file: 991 kB
data/test/AMD/1736150438499.jpg ADDED

Git LFS Details

  • SHA256: fd3f2b46be64f234641e2fbae894048fa5301a17c44254d6651ca6dc011eb022
  • Pointer size: 131 Bytes
  • Size of remote file: 931 kB
data/test/AMD/1736230256361.jpg ADDED

Git LFS Details

  • SHA256: 789f7270ec83c0347b4e36a8b8696f4d59d83798b790efe890918fb2f1f72d27
  • Pointer size: 131 Bytes
  • Size of remote file: 928 kB
data/test/AMD/1736238086487.jpg ADDED

Git LFS Details

  • SHA256: 12f9136045582848dbd6117d8b10e07c100bf118c46ff24c483c359ef375daca
  • Pointer size: 131 Bytes
  • Size of remote file: 920 kB
data/test/AMD/1736308347629.jpg ADDED

Git LFS Details

  • SHA256: cd42ee969bea4f6ce8e710260b8a6639795fb442e5a69fdcfdaaff0ae2ba76b1
  • Pointer size: 131 Bytes
  • Size of remote file: 962 kB
data/test/DMO/1735967109040.jpg ADDED

Git LFS Details

  • SHA256: 7f52c67220550707bca5e6245262bdee6aadb2e3b4ba752a3b83d7c36602cd2d
  • Pointer size: 131 Bytes
  • Size of remote file: 909 kB
data/test/DMO/1736309728822.jpg ADDED

Git LFS Details

  • SHA256: e18818f487bd7c039342d9ef0a4048e1b9e34fc83acafcd90d5074eb64c2112f
  • Pointer size: 131 Bytes
  • Size of remote file: 968 kB
data/test/DMO/1736313646280.jpg ADDED

Git LFS Details

  • SHA256: b53abe202f635282d1e53a5a0c6947a1da110f0806a03bcba3312eb8fc46ab9c
  • Pointer size: 132 Bytes
  • Size of remote file: 1 MB
data/test/DMO/1736313646586.jpg ADDED

Git LFS Details

  • SHA256: 3086b78fb945b09542bdd9cd88c5953c5d6f9d6bbd6568ee569b8a0d702ef89a
  • Pointer size: 132 Bytes
  • Size of remote file: 1 MB
data/test/DMO/1736750977504.jpg ADDED

Git LFS Details

  • SHA256: ab89f9e218f72dbb3510e01f4b809291baa4c893347b9aa33cad7bdd43828a6e
  • Pointer size: 132 Bytes
  • Size of remote file: 1.02 MB
data/test/DR/1736229013500.jpg ADDED

Git LFS Details

  • SHA256: 1fa4ce61104fabca46e48d60f58ce67a628f2ef6a631a942913615a83c7c1e9f
  • Pointer size: 131 Bytes
  • Size of remote file: 943 kB
data/test/DR/1736246127574.jpg ADDED

Git LFS Details

  • SHA256: f72c1c427c95e0fe50df0e18815c7611ac07ba504e9ac3df07c83860a919fedd
  • Pointer size: 131 Bytes
  • Size of remote file: 952 kB
data/test/DR/1736573713479.jpg ADDED

Git LFS Details

  • SHA256: 4180fad4d648577924d4b5b12da30675789ae6d0dcd969b84408c811b2c736c1
  • Pointer size: 131 Bytes
  • Size of remote file: 918 kB
data/test/DR/1736674429738.jpg ADDED

Git LFS Details

  • SHA256: 905549a806239e9487f6f367f9fde1962ae6d54a98c5606a52cff31c9e9587e6
  • Pointer size: 131 Bytes
  • Size of remote file: 870 kB
data/test/GLC/1736053862930.jpg ADDED

Git LFS Details

  • SHA256: 650a01bbe5302254994345046f6ca918d5052c4b8bb8ba5ec3c8070b92e7f385
  • Pointer size: 131 Bytes
  • Size of remote file: 879 kB
data/test/GLC/1736055876619.jpg ADDED

Git LFS Details

  • SHA256: cd19219407f9f808e1e4c02c9ddf4e8a71885fe183c63951fbe6969c18b4e8a2
  • Pointer size: 131 Bytes
  • Size of remote file: 930 kB
data/test/GLC/1736312466635.jpg ADDED

Git LFS Details

  • SHA256: fabc168ace8e5c039b8189f8f41467451598a64e04ea1705439d145982446ab3
  • Pointer size: 131 Bytes
  • Size of remote file: 914 kB
data/test/GLC/1736404283466.jpg ADDED

Git LFS Details

  • SHA256: 03bcf3a9b9e1c8f4bdb8fcc36311a3a49c107d4f1c702c63518bdff99deff709
  • Pointer size: 131 Bytes
  • Size of remote file: 929 kB
data/test/GLC/1736829787888.jpg ADDED

Git LFS Details

  • SHA256: 01ba493d18bf2dd8e900ac16180c849181194eb200cfe10ace6e2e46dfad8ca8
  • Pointer size: 131 Bytes
  • Size of remote file: 967 kB
data/test/GLC/1736917199225.jpg ADDED

Git LFS Details

  • SHA256: 21cf5602696960e5a35dcedc4bff5d0430785723e3f7e6564ac0ab50b5f1e91e
  • Pointer size: 131 Bytes
  • Size of remote file: 875 kB
data/test/HR/1735972906946.jpg ADDED

Git LFS Details

  • SHA256: 817e9e2f1740cd904c4d97904b7d6f014703033cb8d74204ccde004caafb4bc8
  • Pointer size: 132 Bytes
  • Size of remote file: 1.02 MB
data/test/HR/1735975088433.jpg ADDED

Git LFS Details

  • SHA256: 03e804891b0dc3a7e88ad3664ec5fc8d9ccc3764677f57bf1975aa5e94810e16
  • Pointer size: 132 Bytes
  • Size of remote file: 1.03 MB
data/test/HR/1736056856336.jpg ADDED

Git LFS Details

  • SHA256: aaa71175d0c02d2daa0d764a26d20a52196978c50625dadfb9cd5ffef85f4cb2
  • Pointer size: 131 Bytes
  • Size of remote file: 866 kB
data/test/HR/1736412969133.jpg ADDED

Git LFS Details

  • SHA256: 02175a7e3bcd47d35ca7618f8d30d643fad0a673f407a59047ce4d72f36beaca
  • Pointer size: 131 Bytes
  • Size of remote file: 880 kB
data/test/HR/1736567353636.jpg ADDED

Git LFS Details

  • SHA256: 5ee9a68d1c5ffe7c81e8cd7acc06c41664d54fae53752149ef67fce240b15bd5
  • Pointer size: 131 Bytes
  • Size of remote file: 922 kB
data/test/HR/1736573124081.jpg ADDED

Git LFS Details

  • SHA256: bd0c70106825ca39c81a83ad227b2b1412718ad21cf87f01d83a742c2d8f0bbb
  • Pointer size: 131 Bytes
  • Size of remote file: 945 kB
data/test/HR/1736661007443.jpg ADDED

Git LFS Details

  • SHA256: fafb477e7b098f2ff1154a9466569b4864bf18581700a86c7cee6167344bd1d9
  • Pointer size: 131 Bytes
  • Size of remote file: 985 kB
data/test/HR/1736829787888.jpg ADDED

Git LFS Details

  • SHA256: 01ba493d18bf2dd8e900ac16180c849181194eb200cfe10ace6e2e46dfad8ca8
  • Pointer size: 131 Bytes
  • Size of remote file: 967 kB
data/test/HR/1736926372380.jpg ADDED

Git LFS Details

  • SHA256: 8f199e31f7d40f6471779b6a6fba16fbf80ecb01fb7285280de4dd126bd3141b
  • Pointer size: 131 Bytes
  • Size of remote file: 939 kB
data/test/NO/1736845337125.jpg ADDED

Git LFS Details

  • SHA256: 09cafd1da1232b2e4b302e4622a9be85130d61e0e2554e2d2128baee26166082
  • Pointer size: 131 Bytes
  • Size of remote file: 838 kB
data/test/NO/1736916307298.jpg ADDED

Git LFS Details

  • SHA256: 71ce3ada8b876795cdfb2782b7319c09cf5c1f3bfd00a24c3d67f00172e564bc
  • Pointer size: 131 Bytes
  • Size of remote file: 914 kB
data/test/NO/1736916453077.jpg ADDED

Git LFS Details

  • SHA256: 85c3a2f561dbb1734104b05911152c1dea353e628f15953ea6e8e63c7cd2d3b1
  • Pointer size: 131 Bytes
  • Size of remote file: 859 kB
data/test/NO/1736916782202.jpg ADDED

Git LFS Details

  • SHA256: 0f42a86fde403e1a1b8698474fadea09db5632aeea5c29301a26f6fda65b26c6
  • Pointer size: 131 Bytes
  • Size of remote file: 852 kB
data/test/NO/1736918586976.jpg ADDED

Git LFS Details

  • SHA256: 159c0571731b9875d40bc0cb89a74044003ec7f9b506465ccce88bb06c0bc2c1
  • Pointer size: 131 Bytes
  • Size of remote file: 927 kB
data/test/NO/1736924950806.jpg ADDED

Git LFS Details

  • SHA256: 466b43cca0ba8b83d03860f1676be9f286af5995d44b543fa6261e731777d479
  • Pointer size: 131 Bytes
  • Size of remote file: 961 kB
data/test/NO/1736933030180.jpg ADDED

Git LFS Details

  • SHA256: 1182518035939128216caae4e08a139b4150bb493a898cac126662301368b439
  • Pointer size: 131 Bytes
  • Size of remote file: 950 kB
data/test/NO/1737001832303.jpg ADDED

Git LFS Details

  • SHA256: a66de7ec7629a2e4b344fbbc99a573449f1cf19e12fea3dbcf81c1a8b8ebe7c3
  • Pointer size: 131 Bytes
  • Size of remote file: 950 kB
data/test/NO/1737009313610.jpg ADDED

Git LFS Details

  • SHA256: adb29c6209b7c61c0d3bb15adfac6f092c3fff8b55b24de2eabc631014e13432
  • Pointer size: 131 Bytes
  • Size of remote file: 867 kB
data/test/NO/1737009345917.jpg ADDED

Git LFS Details

  • SHA256: 6b2d196f4e5055ae80cc0c9d7106a62d973e5bc6c45793df43f6de927dc7bcd9
  • Pointer size: 131 Bytes
  • Size of remote file: 985 kB
data/train/AMD/1735805076901.jpg ADDED

Git LFS Details

  • SHA256: 0470cc944b0b06e22b373b33b959098686a7956bec98e6883d2f8f8d562d6b8b
  • Pointer size: 132 Bytes
  • Size of remote file: 1 MB
data/train/AMD/1735970498953.jpg ADDED

Git LFS Details

  • SHA256: 65095071863f2c795768415789ffbadb3e9f2dbf4b387ec2630fba48d6656902
  • Pointer size: 131 Bytes
  • Size of remote file: 918 kB
data/train/AMD/1735972243906.jpg ADDED

Git LFS Details

  • SHA256: 1b822d3a90c5f147a0b948f291b0739f09f0103944b68db80a7642df63339756
  • Pointer size: 131 Bytes
  • Size of remote file: 923 kB
data/train/AMD/1736051325693.jpg ADDED

Git LFS Details

  • SHA256: a46ffad74b757516c85f855a5f0033c75d0bfd3021fcb8fa7c99e7270d1ea127
  • Pointer size: 131 Bytes
  • Size of remote file: 946 kB
data/train/AMD/1736053212903.jpg ADDED

Git LFS Details

  • SHA256: 2955cece388fc1a44f8903d830bdc193c8814cfbd30f5ef9d0c37c5741e593dc
  • Pointer size: 131 Bytes
  • Size of remote file: 965 kB
data/train/AMD/1736054226367.jpg ADDED

Git LFS Details

  • SHA256: 7f3190bbada815bfd492737802921e228abc023d935ed5dfe90be5656f2707e9
  • Pointer size: 131 Bytes
  • Size of remote file: 936 kB
data/train/AMD/1736054226530.jpg ADDED

Git LFS Details

  • SHA256: 287e54afcad04b1242cd3026a496b12c3279791315d4b2a8ffe1e4407a6e3ac1
  • Pointer size: 131 Bytes
  • Size of remote file: 927 kB