sameersyed/Defence_FrameWork
0
1import numpy as np2from PIL import Image, ImageFilter3import io4import base645 6class DefenseSimulator:7 """Simulate defense mechanisms and show before/after results"""8 9 def __init__(self):10 self.defenses = {11 'jpeg_compression': self._jpeg_compression,12 'gaussian_blur': self._gaussian_blur,13 'bit_depth_reduction': self._bit_depth_reduction14 }15 16 def apply_defense(self, image_data, defense_type='jpeg_compression'):17 """Apply defense and return comparison"""18 try:19 # Decode image20 if ',' in image_data:21 image_data = image_data.split(',')[1]22 image_bytes = base64.b64decode(image_data)23 image = Image.open(io.BytesIO(image_bytes)).convert('RGB')24 25 # Apply defense26 defended_image = self.defenses[defense_type](image)27 28 # Encode defended image29 buffered = io.BytesIO()30 defended_image.save(buffered, format="PNG")31 defended_base64 = base64.b64encode(buffered.getvalue()).decode()32 33 # Calculate metrics34 original_array = np.array(image)35 defended_array = np.array(defended_image)36 37 mse = np.mean((original_array - defended_array) ** 2)38 psnr = 10 * np.log10(255**2 / (mse + 1e-10))39 40 return {41 'success': True,42 'defense_type': defense_type,43 'original_image': f"data:image/png;base64,{image_data}",44 'defended_image': f"data:image/png;base64,{defended_base64}",45 'metrics': {46 'mse': float(mse),47 'psnr': float(psnr)48 },49 'effectiveness': self._estimate_effectiveness(defense_type)50 }51 52 except Exception as e:53 return {'success': False, 'error': str(e)}54 55 def _jpeg_compression(self, image, quality=75):56 """JPEG compression defense"""57 buffered = io.BytesIO()58 image.save(buffered, format="JPEG", quality=quality)59 buffered.seek(0)60 return Image.open(buffered).convert('RGB')61 62 def _gaussian_blur(self, image, radius=1):63 """Gaussian blur defense"""64 return image.filter(ImageFilter.GaussianBlur(radius=radius))65 66 def _bit_depth_reduction(self, image, bits=6):67 """Bit depth reduction defense"""68 img_array = np.array(image)69 factor = 2 ** (8 - bits)70 reduced = (img_array // factor) * factor71 return Image.fromarray(reduced.astype(np.uint8))72 73 def _estimate_effectiveness(self, defense_type):74 """Estimate defense effectiveness"""75 effectiveness = {76 'jpeg_compression': {'accuracy_retention': 92, 'attack_mitigation': 65},77 'gaussian_blur': {'accuracy_retention': 88, 'attack_mitigation': 70},78 'bit_depth_reduction': {'accuracy_retention': 85, 'attack_mitigation': 60}79 }80 return effectiveness.get(defense_type, {'accuracy_retention': 90, 'attack_mitigation': 60})81 82 def generate_report(self, result):83 """Generate defense comparison report"""84 if not result['success']:85 return f"ā Defense simulation failed: {result['error']}"86 87 report = []88 report.append("š”ļø Defense Mechanism Simulation\n\n")89 report.append("ā" * 60 + "\n\n")90 91 defense_names = {92 'jpeg_compression': 'JPEG Compression (Quality=75)',93 'gaussian_blur': 'Gaussian Blur (Radius=1)',94 'bit_depth_reduction': 'Bit Depth Reduction (6-bit)'95 }96 97 report.append(f"š§ Applied Defense: {defense_names.get(result['defense_type'], result['defense_type'])}\n\n")98 99 report.append("š Image Quality Metrics:\n")100 report.append(f"⢠MSE (Mean Squared Error): {result['metrics']['mse']:.2f}\n")101 report.append(f"⢠PSNR (Peak Signal-to-Noise Ratio): {result['metrics']['psnr']:.2f} dB\n\n")102 103 eff = result['effectiveness']104 report.append("š Defense Effectiveness:\n")105 report.append(f"⢠Accuracy Retention: {eff['accuracy_retention']}%\n")106 report.append(f"⢠Attack Mitigation: {eff['attack_mitigation']}%\n\n")107 108 report.append("ā" * 60 + "\n\n")109 report.append("š” Analysis:\n")110 111 if eff['accuracy_retention'] > 90:112 report.append("⢠ā
High accuracy retention - minimal impact on clean samples\n")113 else:114 report.append("⢠ā ļø Moderate accuracy retention - some clean accuracy loss\n")115 116 if eff['attack_mitigation'] > 65:117 report.append("⢠ā
Strong attack mitigation - effective against adversarial examples\n")118 else:119 report.append("⢠ā ļø Moderate attack mitigation - partial protection only\n")120 121 report.append("\nšÆ Recommendation:\n")122 report.append("⢠Combine multiple defenses for better robustness\n")123 report.append("⢠Use adversarial training alongside preprocessing\n")124 report.append("⢠Monitor accuracy-robustness trade-off in production\n")125 126 return "".join(report)127 