Update README.md
Browse files
README.md
CHANGED
@@ -7,31 +7,97 @@ tags: []
|
|
7 |
|
8 |
<!-- Provide a quick summary of what the model is/does. -->
|
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
|
|
|
|
|
11 |
|
12 |
-
|
|
|
|
|
13 |
|
14 |
-
|
|
|
15 |
|
16 |
-
|
|
|
|
|
|
|
|
|
17 |
|
18 |
-
|
|
|
|
|
19 |
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
- **Model type:** [More Information Needed]
|
24 |
-
- **Language(s) (NLP):** [More Information Needed]
|
25 |
-
- **License:** [More Information Needed]
|
26 |
-
- **Finetuned from model [optional]:** [More Information Needed]
|
27 |
|
28 |
-
|
|
|
|
|
29 |
|
30 |
-
|
31 |
|
32 |
-
|
33 |
-
|
34 |
-
- **Demo [optional]:** [More Information Needed]
|
35 |
|
36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
|
|
|
|
7 |
|
8 |
<!-- Provide a quick summary of what the model is/does. -->
|
9 |
|
10 |
+
## Uses
|
11 |
+
import os
|
12 |
+
from transformers import AutoImageProcessor, AutoModelForObjectDetection
|
13 |
+
import torch
|
14 |
+
from PIL import Image
|
15 |
+
import pandas as pd
|
16 |
|
17 |
+
# กำหนดพาธไปยังโฟลเดอร์ที่เก็บรูปภาพ
|
18 |
+
folder_path = ""
|
19 |
|
20 |
+
# โหลดโมเดลและโปรเซสเซอร์
|
21 |
+
processor = AutoImageProcessor.from_pretrained("0llheaven/CON-DETR-V5")
|
22 |
+
model = AutoModelForObjectDetection.from_pretrained("0llheaven/CON-DETR-V5")
|
23 |
|
24 |
+
# สร้าง DataFrame เพื่อเก็บผลลัพธ์
|
25 |
+
results_list = []
|
26 |
|
27 |
+
# วนลูปผ่านไฟล์ทั้งหมดในโฟลเดอร์
|
28 |
+
for image_name in os.listdir(folder_path):
|
29 |
+
if image_name.endswith((".jpg", ".png", ".jpeg")): # กรองเฉพาะไฟล์รูปภาพ
|
30 |
+
image_path = os.path.join(folder_path, image_name)
|
31 |
+
image = Image.open(image_path)
|
32 |
|
33 |
+
# แปลงรูปภาพเป็น RGB หากเป็น grayscale
|
34 |
+
if image.mode != "RGB":
|
35 |
+
image = image.convert("RGB")
|
36 |
|
37 |
+
# ทำนายผล
|
38 |
+
inputs = processor(images=image, return_tensors="pt")
|
39 |
+
outputs = model(**inputs)
|
|
|
|
|
|
|
|
|
40 |
|
41 |
+
# กรองการทำนายที่มีความแม่นยำมากกว่า 0.9
|
42 |
+
target_sizes = torch.tensor([image.size[::-1]])
|
43 |
+
results = processor.post_process_object_detection(outputs, target_sizes=target_sizes)
|
44 |
|
45 |
+
print(f"Processing image: {image_name}") # แสดงชื่อรูปภาพที่กำลังประมวลผล
|
46 |
|
47 |
+
# ตรวจสอบว่ามีการตรวจจับหรือไม่
|
48 |
+
detected_any = False
|
|
|
49 |
|
50 |
+
for result in results:
|
51 |
+
scores = result["scores"]
|
52 |
+
labels = result["labels"]
|
53 |
+
boxes = result["boxes"]
|
54 |
+
|
55 |
+
# กรองเฉพาะ 2 กล่องแรกที่มีคะแนนสูงกว่า 0.5
|
56 |
+
filtered_data = [(score, label, box) for score, label, box in zip(scores, labels, boxes) if score > 0.5][:2] # จำกัดให้เก็บได้ไม่เกิน 2 กล่อง
|
57 |
+
# for score, label, box in zip(scores, labels, boxes):
|
58 |
+
# if score > 0.5: # กรองเฉพาะผลลัพธ์ที่มีความแม่นยำมากกว่า 0.9
|
59 |
+
if len(filtered_data) > 0: # ตรวจสอบว่ามีการตรวจจับ
|
60 |
+
detected_any = True
|
61 |
+
|
62 |
+
for score, label, box in filtered_data:
|
63 |
+
# กำหนดชื่อ label ตาม index ของ label ที่ได้
|
64 |
+
if label.item() == 0:
|
65 |
+
label_name = "Pneumonia"
|
66 |
+
elif label.item() == 1:
|
67 |
+
label_name = "Normal"
|
68 |
+
elif label.item() == 2:
|
69 |
+
label_name = "Pneumonia_bacteria"
|
70 |
+
else:
|
71 |
+
label_name = "Pneumonia_virus"
|
72 |
+
|
73 |
+
xmin, ymin, xmax, ymax = [round(i, 2) for i in box.tolist()]
|
74 |
+
print(f" - Detected {label_name} with score {round(score.item(), 3)} at {xmin, ymin, xmax, ymax}") # แสดงข้อมูลที่ทำนายได้
|
75 |
+
results_list.append({
|
76 |
+
"image_name": image_name,
|
77 |
+
"label": label_name,
|
78 |
+
"xmin": xmin,
|
79 |
+
"ymin": ymin,
|
80 |
+
"xmax": xmax,
|
81 |
+
"ymax": ymax,
|
82 |
+
"score": round(score.item(), 3),
|
83 |
+
})
|
84 |
+
|
85 |
+
if not detected_any:
|
86 |
+
print(" - No Detect")
|
87 |
+
results_list.append({
|
88 |
+
"image_name": image_name,
|
89 |
+
"label": "Other",
|
90 |
+
"xmin": 0,
|
91 |
+
"ymin": 0,
|
92 |
+
"xmax": 0,
|
93 |
+
"ymax": 0,
|
94 |
+
"score": 0,
|
95 |
+
})
|
96 |
+
|
97 |
+
# แปลง List เป็น DataFrame
|
98 |
+
results_df = pd.DataFrame(results_list)
|
99 |
+
|
100 |
+
# แสดงผล DataFrame
|
101 |
+
print("\nFinal results:")
|
102 |
|
103 |
+
results_df.to_csv("testmodel.csv", index=False)
|