Spaces:
Sleeping
Sleeping
changed all predictions class
Browse files
main.py
CHANGED
|
@@ -103,6 +103,11 @@ class DiseaseInfo(BaseModel):
|
|
| 103 |
return v
|
| 104 |
|
| 105 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 106 |
class PredictionResponse(BaseModel):
|
| 107 |
success: bool
|
| 108 |
predicted_class: str
|
|
@@ -110,7 +115,7 @@ class PredictionResponse(BaseModel):
|
|
| 110 |
clean_class_name: str = Field(description="Human-readable class name")
|
| 111 |
confidence: float
|
| 112 |
confidence_level: str = Field(description="High/Medium/Low confidence level")
|
| 113 |
-
all_predictions:
|
| 114 |
disease_info: DiseaseInfo
|
| 115 |
recommendations: List[str] = Field(description="Action recommendations based on prediction")
|
| 116 |
message: str
|
|
@@ -456,18 +461,19 @@ def predict_image(image_bytes: bytes) -> PredictionResponse:
|
|
| 456 |
|
| 457 |
# Top 5 predictions
|
| 458 |
top_indices = np.argsort(predictions[0])[-5:][::-1]
|
| 459 |
-
all_predictions =
|
| 460 |
|
| 461 |
for idx in top_indices:
|
| 462 |
class_str = str(idx)
|
| 463 |
class_confidence = float(predictions[0][idx])
|
| 464 |
class_info = disease_guide.get(class_str, None)
|
| 465 |
readable_name = clean_class_name(class_str, class_info)
|
| 466 |
-
|
|
|
|
| 467 |
"confidence": round(class_confidence, 4),
|
| 468 |
"label": readable_name,
|
| 469 |
"confidence_level": get_confidence_level(class_confidence)
|
| 470 |
-
}
|
| 471 |
|
| 472 |
# Generate recommendations
|
| 473 |
recommendations = get_recommendations(predicted_class, confidence, disease_info)
|
|
@@ -484,7 +490,6 @@ def predict_image(image_bytes: bytes) -> PredictionResponse:
|
|
| 484 |
label=class_id,
|
| 485 |
confidence=round(confidence, 4),
|
| 486 |
confidence_level=confidence_level,
|
| 487 |
-
predictions=all_predictions,
|
| 488 |
disease_info=disease_info,
|
| 489 |
recommendations=recommendations
|
| 490 |
)
|
|
|
|
| 103 |
return v
|
| 104 |
|
| 105 |
|
| 106 |
+
class PredictionItem(BaseModel):
|
| 107 |
+
confidence: float
|
| 108 |
+
label: str
|
| 109 |
+
confidence_level: str
|
| 110 |
+
|
| 111 |
class PredictionResponse(BaseModel):
|
| 112 |
success: bool
|
| 113 |
predicted_class: str
|
|
|
|
| 115 |
clean_class_name: str = Field(description="Human-readable class name")
|
| 116 |
confidence: float
|
| 117 |
confidence_level: str = Field(description="High/Medium/Low confidence level")
|
| 118 |
+
all_predictions: list[PredictionItem] = Field(description="Top 5 predictions with confidence scores")
|
| 119 |
disease_info: DiseaseInfo
|
| 120 |
recommendations: List[str] = Field(description="Action recommendations based on prediction")
|
| 121 |
message: str
|
|
|
|
| 461 |
|
| 462 |
# Top 5 predictions
|
| 463 |
top_indices = np.argsort(predictions[0])[-5:][::-1]
|
| 464 |
+
all_predictions = []
|
| 465 |
|
| 466 |
for idx in top_indices:
|
| 467 |
class_str = str(idx)
|
| 468 |
class_confidence = float(predictions[0][idx])
|
| 469 |
class_info = disease_guide.get(class_str, None)
|
| 470 |
readable_name = clean_class_name(class_str, class_info)
|
| 471 |
+
|
| 472 |
+
all_predictions.append({
|
| 473 |
"confidence": round(class_confidence, 4),
|
| 474 |
"label": readable_name,
|
| 475 |
"confidence_level": get_confidence_level(class_confidence)
|
| 476 |
+
})
|
| 477 |
|
| 478 |
# Generate recommendations
|
| 479 |
recommendations = get_recommendations(predicted_class, confidence, disease_info)
|
|
|
|
| 490 |
label=class_id,
|
| 491 |
confidence=round(confidence, 4),
|
| 492 |
confidence_level=confidence_level,
|
|
|
|
| 493 |
disease_info=disease_info,
|
| 494 |
recommendations=recommendations
|
| 495 |
)
|