KhanyiTapiwa00 commited on
Commit
79740b6
·
0 Parent(s):

Duplicate from dawahealth/medsiglip-diagnosis

Browse files
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language: en
3
+ library_name: transformers
4
+ pipeline_tag: image-classification
5
+ tags:
6
+ - vision
7
+ - cervical-cancer
8
+ - diagnosis
9
+ license: apache-2.0
10
+ ---
11
+
12
+ # 🩺 MedSigLip Diagnosis Model
13
+
14
+ This repository contains **MedSigLip**, a deep learning model for cervical cancer image diagnosis.
15
+ It takes colposcopy images as input and predicts the most likely stage/class of the condition.
16
+
17
+ ---
18
+
19
+ ## 📊 Model Details
20
+ - **Task:** Image Classification
21
+ - **Domain:** Healthcare – Cervical Cancer Diagnosis
22
+ - **Framework:** Hugging Face Transformers / PyTorch
23
+ - **Author:** Khanyi Tapiwa Magagula (AI Eswatini)
24
+
25
+ ---
26
+
27
+ ## 🚀 Inference API
28
+
29
+ Once the **Inference API** is enabled, you can run predictions without any setup. Example:
30
+
31
+ ```python
32
+ from huggingface_hub import InferenceClient
33
+
34
+ # Replace with your repo name
35
+ client = InferenceClient("KhanyiTapiwa00/medsiglip-diagnosis")
36
+
37
+ # Run image classification
38
+ result = client.image_classification("1_10.jpg")
39
+
40
+ print(result)
app.py ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import CLIPProcessor, CLIPModel
3
+ from PIL import Image
4
+ import torch
5
+
6
+ MODEL_ID = "KhanyiTapiwa00/medsiglip-diagnosis"
7
+
8
+ processor = CLIPProcessor.from_pretrained(MODEL_ID)
9
+ model = CLIPModel.from_pretrained(MODEL_ID)
10
+ model.eval()
11
+
12
+ def predict(image: Image.Image, text: str):
13
+ if image is None or text.strip() == "":
14
+ return "Please provide both an image and a text description."
15
+
16
+ inputs = processor(images=image, text=text, return_tensors="pt", padding=True)
17
+ with torch.no_grad():
18
+ outputs = model(**inputs)
19
+
20
+ logits = outputs.logits_per_image
21
+ probs = torch.softmax(logits, dim=1)
22
+ return str(probs.cpu().numpy())
23
+
24
+ demo = gr.Interface(
25
+ fn=predict,
26
+ inputs=[gr.Image(type="pil", label="Upload Medical Image"),
27
+ gr.Textbox(label="Enter Description")],
28
+ outputs=gr.Textbox(label="Similarity Score"),
29
+ title="MedSigLIP AI Demo",
30
+ description="Upload a medical image and compare it with a text description."
31
+ )
32
+
33
+ demo.launch()
classifier.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7b64668df46049b5d29e27315e99d34ccb86768780b25fbac0046deb45236bb3
3
+ size 595387
config.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "SiglipModel"
4
+ ],
5
+ "dtype": "float32",
6
+ "initializer_factor": 1.0,
7
+ "model_type": "siglip",
8
+ "text_config": {
9
+ "attention_dropout": 0.0,
10
+ "dtype": "float32",
11
+ "hidden_act": "gelu_pytorch_tanh",
12
+ "hidden_size": 1152,
13
+ "intermediate_size": 4304,
14
+ "layer_norm_eps": 1e-06,
15
+ "max_position_embeddings": 64,
16
+ "model_type": "siglip_text_model",
17
+ "num_attention_heads": 16,
18
+ "num_hidden_layers": 27,
19
+ "projection_size": 1152,
20
+ "vocab_size": 32000
21
+ },
22
+ "transformers_version": "4.56.1",
23
+ "vision_config": {
24
+ "attention_dropout": 0.0,
25
+ "dtype": "float32",
26
+ "hidden_act": "gelu_pytorch_tanh",
27
+ "hidden_size": 1152,
28
+ "image_size": 448,
29
+ "intermediate_size": 4304,
30
+ "layer_norm_eps": 1e-06,
31
+ "model_type": "siglip_vision_model",
32
+ "num_attention_heads": 16,
33
+ "num_channels": 3,
34
+ "num_hidden_layers": 27,
35
+ "patch_size": 14
36
+ }
37
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:69d2e0293b9b1fb3a8978b50dc1dc25e7af502abde6f277d62404d8880ee0929
3
+ size 3513309984
preprocessor_config.json ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "do_convert_rgb": null,
3
+ "do_normalize": true,
4
+ "do_rescale": true,
5
+ "do_resize": true,
6
+ "image_mean": [
7
+ 0.5,
8
+ 0.5,
9
+ 0.5
10
+ ],
11
+ "image_processor_type": "SiglipImageProcessor",
12
+ "image_std": [
13
+ 0.5,
14
+ 0.5,
15
+ 0.5
16
+ ],
17
+ "processor_class": "SiglipProcessor",
18
+ "resample": 3,
19
+ "rescale_factor": 0.00392156862,
20
+ "size": {
21
+ "height": 448,
22
+ "width": 448
23
+ }
24
+ }
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ torch
2
+ transformers
3
+ gradio
4
+ Pillow
5
+
special_tokens_map.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "eos_token": {
3
+ "content": "</s>",
4
+ "lstrip": true,
5
+ "normalized": false,
6
+ "rstrip": true,
7
+ "single_word": false
8
+ },
9
+ "pad_token": {
10
+ "content": "</s>",
11
+ "lstrip": true,
12
+ "normalized": false,
13
+ "rstrip": true,
14
+ "single_word": false
15
+ },
16
+ "unk_token": {
17
+ "content": "<unk>",
18
+ "lstrip": true,
19
+ "normalized": false,
20
+ "rstrip": true,
21
+ "single_word": false
22
+ }
23
+ }
spiece.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1e5036bed065526c3c212dfbe288752391797c4bb1a284aa18c9a0b23fcaf8ec
3
+ size 798330
tokenizer_config.json ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "added_tokens_decoder": {
3
+ "1": {
4
+ "content": "</s>",
5
+ "lstrip": true,
6
+ "normalized": false,
7
+ "rstrip": true,
8
+ "single_word": false,
9
+ "special": true
10
+ },
11
+ "2": {
12
+ "content": "<unk>",
13
+ "lstrip": true,
14
+ "normalized": false,
15
+ "rstrip": true,
16
+ "single_word": false,
17
+ "special": true
18
+ }
19
+ },
20
+ "additional_special_tokens": [],
21
+ "clean_up_tokenization_spaces": true,
22
+ "do_lower_case": true,
23
+ "eos_token": "</s>",
24
+ "extra_special_tokens": {},
25
+ "model_input_names": [
26
+ "input_ids"
27
+ ],
28
+ "model_max_length": 64,
29
+ "pad_token": "</s>",
30
+ "processor_class": "SiglipProcessor",
31
+ "sp_model_kwargs": {},
32
+ "tokenizer_class": "SiglipTokenizer",
33
+ "unk_token": "<unk>"
34
+ }