Set confidence threshold to 80% and remove slider from frontend

 Frontend Changes:
- Removed confidence threshold slider from web interface
- Added fixed 80% confidence display with green info box
- Updated JavaScript to use fixed 0.8 threshold
- Removed slider-related CSS styles

 Backend Changes:
- Updated all API endpoints to default to 80% confidence (0.8)
- Modified POST /detect, GET /detect/hardcoded, POST /detect/base64
- Updated comments to reflect new default threshold

 Testing Updates:
- Updated test_api.py to use 80% confidence for all tests
- Ensures consistent testing with new threshold

 Benefits:
- High precision mode (80% confidence) reduces false positives
- Simplified user interface without threshold adjustment
- Consistent detection behavior across all endpoints
This commit is contained in:
Aherobo Ovie Victor
2025-07-11 20:47:04 +01:00
parent c4de90fbec
commit 26a6f6f625
6 changed files with 31 additions and 40 deletions
+6 -6
View File
@@ -149,8 +149,8 @@ def detect_memory_modules():
'success': False
}), 400
# Get confidence threshold from form data
conf_threshold = float(request.form.get('confidence', 0.5))
# Get confidence threshold from form data (default 80%)
conf_threshold = float(request.form.get('confidence', 0.8))
# Save uploaded file temporarily
filename = secure_filename(file.filename)
@@ -219,8 +219,8 @@ def detect_hardcoded_image():
'success': False
}), 404
# Get confidence threshold from query parameters
conf_threshold = float(request.args.get('confidence', 0.5))
# Get confidence threshold from query parameters (default 80%)
conf_threshold = float(request.args.get('confidence', 0.8))
# Run detection
detections, annotated_image = detector.detect(
@@ -283,8 +283,8 @@ def detect_base64_image():
'success': False
}), 400
# Get confidence threshold
conf_threshold = float(data.get('confidence', 0.5))
# Get confidence threshold (default 80%)
conf_threshold = float(data.get('confidence', 0.8))
# Decode base64 image
try:
+1
View File
@@ -8,6 +8,7 @@ Pillow==10.0.1
# Web Framework
Flask==2.3.3
Flask-CORS==4.0.0
Flask-RESTX==1.3.0
Werkzeug==2.3.7
# Data Processing
+10 -15
View File
@@ -17,18 +17,13 @@ function initializeApp() {
function setupEventListeners() {
// File input change
document.getElementById('fileInput').addEventListener('change', handleFileSelect);
// Drag and drop
const uploadArea = document.getElementById('uploadArea');
uploadArea.addEventListener('dragover', handleDragOver);
uploadArea.addEventListener('dragleave', handleDragLeave);
uploadArea.addEventListener('drop', handleDrop);
uploadArea.addEventListener('click', () => document.getElementById('fileInput').click());
// Confidence slider
document.getElementById('confidenceSlider').addEventListener('input', function() {
document.getElementById('confidenceValue').textContent = this.value;
});
}
async function checkApiStatus() {
@@ -143,23 +138,23 @@ async function processUploadedImage() {
alert('Please select an image first');
return;
}
const confidence = document.getElementById('confidenceSlider').value;
const confidence = 0.8; // Fixed 80% threshold
showLoading('Processing uploaded image...');
try {
const formData = new FormData();
formData.append('image', uploadedFile);
formData.append('confidence', confidence);
const response = await fetch(`${API_BASE_URL}/detect`, {
method: 'POST',
body: formData
});
const result = await response.json();
hideLoading();
if (result.success) {
displayResults(result, 'Uploaded Image Detection');
} else {
@@ -173,12 +168,12 @@ async function processUploadedImage() {
async function testHardcodedImage() {
showLoading('Testing hardcoded image...');
try {
const response = await fetch(`${API_BASE_URL}/detect/hardcoded?confidence=0.5`);
const response = await fetch(`${API_BASE_URL}/detect/hardcoded?confidence=0.8`);
const result = await response.json();
hideLoading();
if (result.success) {
displayResults(result, 'Hardcoded Image Test');
} else {
+9 -13
View File
@@ -186,22 +186,18 @@ header p {
border-radius: 8px;
}
.confidence-control {
.confidence-info {
margin-bottom: 15px;
padding: 10px;
background: #e8f5e8;
border-radius: 6px;
border-left: 4px solid #28a745;
}
.confidence-control label {
display: block;
margin-bottom: 8px;
font-weight: 500;
}
.confidence-control input[type="range"] {
width: 100%;
height: 6px;
border-radius: 3px;
background: #ddd;
outline: none;
.confidence-info p {
margin: 0;
color: #155724;
font-size: 0.9rem;
}
.results-content {
+2 -3
View File
@@ -58,9 +58,8 @@
</div>
<div class="upload-controls" style="display: none;" id="uploadControls">
<div class="confidence-control">
<label for="confidenceSlider">Confidence Threshold: <span id="confidenceValue">0.5</span></label>
<input type="range" id="confidenceSlider" min="0.1" max="1.0" step="0.1" value="0.5">
<div class="confidence-info">
<p><strong>Confidence Threshold:</strong> 80% (High Precision Mode)</p>
</div>
<button class="btn btn-success" onclick="processUploadedImage()">
<i class="fas fa-search"></i> Detect Memory Modules
+3 -3
View File
@@ -53,7 +53,7 @@ def test_hardcoded_detection():
"""Test detection with hardcoded image."""
print("\n🖼️ Testing Hardcoded Image Detection...")
try:
response = requests.get(f"{BASE_URL}/detect/hardcoded?confidence=0.5")
response = requests.get(f"{BASE_URL}/detect/hardcoded?confidence=0.8")
if response.status_code == 200:
data = response.json()
if data['success']:
@@ -105,7 +105,7 @@ def test_file_upload():
try:
with open(test_image_path, 'rb') as f:
files = {'image': f}
data = {'confidence': '0.5'}
data = {'confidence': '0.8'}
response = requests.post(f"{BASE_URL}/detect", files=files, data=data)
if response.status_code == 200:
@@ -165,7 +165,7 @@ def test_base64_detection():
# Send request
payload = {
'image': base64_string,
'confidence': 0.5
'confidence': 0.8
}
response = requests.post(