Skip to content

Commit 49c8bb0

Browse files
committed
refactor: improved clarity and responsiveness of attack visualization in the frontend
1 parent c721190 commit 49c8bb0

File tree

2 files changed

+47
-39
lines changed

2 files changed

+47
-39
lines changed

nebula/addons/attacks/attacks.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,10 @@ def create_attack(engine) -> Attack:
118118
from nebula.addons.attacks.model.swappingweights import SwappingWeightsAttack
119119

120120
ATTACK_MAP = {
121-
"GLLNeuronInversionAttack": GLLNeuronInversionAttack,
122-
"NoiseInjectionAttack": NoiseInjectionAttack,
123-
"SwappingWeightsAttack": SwappingWeightsAttack,
124-
"DelayerAttack": DelayerAttack,
121+
"GLL Neuron Inversion": GLLNeuronInversionAttack,
122+
"Noise Injection": NoiseInjectionAttack,
123+
"Swapping Weights": SwappingWeightsAttack,
124+
"Delayer": DelayerAttack,
125125
"Label Flipping": LabelFlippingAttack,
126126
"Sample Poisoning": SamplePoisoningAttack,
127127
"Model Poisoning": ModelPoisonAttack,

nebula/frontend/templates/deployment.html

Lines changed: 43 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -157,16 +157,16 @@ <h5>Robustness <i class="fa fa-shield"></i>
157157
</div>
158158
<div class="col-md-7" style="right: inherit;">
159159
<label>
160-
<input type="checkbox" id="mod-neuroninversion" value='GLLNeuronInversionAttack' style="margin-right: 10px;">GLLNeuronInversionAttack
160+
<input type="checkbox" id="mod-neuroninversion" value='GLLNeuronInversionAttack' style="margin-right: 10px;">GLL Neuron Inversion
161161
</label>
162162
<label>
163-
<input type="checkbox" id="mod-noiseinjection" value='NoiseInjectionAttack' style="margin-right: 10px;">NoiseInjectionAttack
163+
<input type="checkbox" id="mod-noiseinjection" value='NoiseInjectionAttack' style="margin-right: 10px;">Noise Injection
164164
</label>
165165
<label>
166-
<input type="checkbox" id="mod-swappingweights" value='SwappingWeightsAttack' style="margin-right: 10px;">SwappingWeightsAttack
166+
<input type="checkbox" id="mod-swappingweights" value='SwappingWeightsAttack' style="margin-right: 10px;">Swapping Weights
167167
</label>
168168
<label>
169-
<input type="checkbox" id="mod-delayer" value='DelayerAttack' style="margin-right: 10px;">DelayerAttack
169+
<input type="checkbox" id="mod-delayer" value='DelayerAttack' style="margin-right: 10px;">Delayer
170170
</label>
171171
</div>
172172
</div>
@@ -498,20 +498,20 @@ <h5 class="step-number">Robustness <i class="fa fa-shield"></i>
498498
<h5 class="step-title">Attack Type</h5>
499499
<div class="form-check form-check-inline">
500500
<select class="form-control" id="poisoning-attack-select" name="poisoning-attack"
501-
style="display: inline; width: 80%">
501+
style="display: inline; width: 15%">
502502
<option selected>No Attack</option>
503503
<option>Label Flipping</option>
504504
<option>Sample Poisoning</option>
505505
<option>Model Poisoning</option>
506-
<option>GLLNeuronInversionAttack</option>
507-
<option>NoiseInjectionAttack</option>
508-
<option>SwappingWeightsAttack</option>
509-
<option>DelayerAttack</option>
506+
<option>GLL Neuron Inversion</option>
507+
<option>Noise Injection</option>
508+
<option>Swapping Weights</option>
509+
<option>Delayer</option>
510510
</select>
511-
<h5 id="poisoned-node-title" class="step-title" style="margin-left: 11px; display: none;">% malicious nodes</h5>
511+
<h5 id="poisoned-node-title" class="step-title" style="margin-left: 11px; display: none;">% Malicious nodes</h5>
512512
<div class="form-check form-check-inline" style="display: none;" id="poisoned-node-percent-container">
513513
<input type="number" class="form-control" id="poisoned-node-percent"
514-
placeholder="% malicious nodes" min="0" value="0" style="display: inline; width: 80%">
514+
placeholder="% malicious nodes" min="0" value="0" style="display: inline; width: 20%">
515515
<select class="form-control" id="malicious-nodes-select" name="malicious-nodes-select"
516516
style="display: inline; width: 10%">
517517
<option selected>Percentage</option>
@@ -521,51 +521,51 @@ <h5 id="poisoned-node-title" class="step-title" style="margin-left: 11px; displa
521521
<i id="maliciousHelpIcon" class="fa fa-info-circle" style="cursor: pointer;"></i>
522522
</small>
523523
</div>
524-
<h5 class="step-title" id="poisoned-sample-title" style="display: none;">% samples poisoned by each malicious node</h5>
524+
<h5 class="step-title" id="poisoned-sample-title" style="display: none;">% Samples poisoned by each malicious node</h5>
525525
<div class="form-check form-check-inline" id="poisoned-sample-percent-container" style="display: none;">
526526
<input type="number" class="form-control" id="poisoned-sample-percent"
527527
placeholder="% samples poisoned in each malicious node" min="0" value="0" max="100"
528528
oninput="isInRange(this, 0, 100)"
529-
style="display: inline; width: 80%">
529+
style="display: inline; width: 20%">
530530
</div>
531-
<h5 id="poisoned-noise-title" class="step-title" style="display: none;">% poisoned noise</h5>
531+
<h5 id="poisoned-noise-title" class="step-title" style="display: none;">% Poisoned noise</h5>
532532
<div class="form-check form-check-inline" id="poisoned-noise-percent-container" style="display: none;">
533533
<input type="number" class="form-control" id="poisoned-noise-percent"
534534
placeholder="% noise in each poisoned sample" min="0" value="0"
535-
style="display: inline; width: 80%">
535+
style="display: inline; width: 20%">
536536
</div>
537-
<h5 id="noise-type-title" class="step-title" style="display: none;">noise type</h5>
537+
<h5 id="noise-type-title" class="step-title" style="display: none;">Noise type</h5>
538538
<div class="form-check form-check-inline" id="noise-type-container" style="display: none;">
539539
<select class="form-control" id="noise_type" name="noise-type"
540-
style="display: inline; width: 80%">
540+
style="display: inline; width: 20%">
541541
<option selected>Salt</option>
542542
<option>Gaussian</option>
543543
<option>S&P</option>
544544
</select>
545545
</div>
546-
<h5 id="targeted-title" class="step-title" style="display: none;">targeted</h5>
546+
<h5 id="targeted-title" class="step-title" style="display: none;">Targeted</h5>
547547
<div class="form-check form-check-inline" id="targeted-container" style="display: none;">
548548
<div class="form-check form-switch" style="margin-bottom: 20px;">
549549
<input class="form-check-input" type="checkbox" id="targeted" checked="false" style="display: inline; width: 80px; height: 30px;">
550550
</div>
551551
</div>
552-
<h5 id="target_label-title" class="step-title" style="display: none;">target label</h5>
552+
<h5 id="target_label-title" class="step-title" style="display: none;">Target label</h5>
553553
<div class="form-check form-check-inline" id="target_label-container" style="display: none;">
554554
<input type="number" class="form-control" id="target_label"
555555
placeholder="target label" min="0" value="4"
556-
style="display: inline; width: 80%">
556+
style="display: inline; width: 20%">
557557
</div>
558-
<h5 id="target_changed_label-title" class="step-title" style="display: none;">target changed label</h5>
558+
<h5 id="target_changed_label-title" class="step-title" style="display: none;">Target changed label</h5>
559559
<div class="form-check form-check-inline" id="target_changed_label-container" style="display: none;">
560560
<input type="number" class="form-control" id="target_changed_label"
561561
placeholder="target changed label" min="0" value="7"
562-
style="display: inline; width: 80%">
562+
style="display: inline; width: 20%">
563563
</div>
564564
<h5 id="strength-title" class="step-title" style="display: none;">Noise strength</h5>
565565
<div class="form-check form-check-inline" id="strength-container" style="display: none;">
566566
<input type="number" class="form-control" id="strength"
567567
placeholder="Noise strength" value="10000"
568-
style="display: inline; width: 80%">
568+
style="display: inline; width: 20%">
569569
</div>
570570
<h5 id="layer_idx-title" class="step-title" style="display: none;">Layer</h5>
571571
<div class="form-check form-check-inline" id="layer_idx-container" style="display: none;">
@@ -2778,7 +2778,7 @@ <h5 class="step-title">Schema of deployment</h5>
27782778
document.getElementById("stop-attack-title").style.display = "block";
27792779
document.getElementById("stop-attack-container").style.display = "block";
27802780
}
2781-
else if(this.value == "GLLNeuronInversionAttack"){
2781+
else if(this.value == "GLL Neuron Inversion"){
27822782
document.getElementById("poisoned-node-title").style.display = "block";
27832783
document.getElementById("poisoned-node-percent-container").style.display = "block";
27842784
document.getElementById("poisoned-sample-title").style.display = "none";
@@ -2787,10 +2787,12 @@ <h5 class="step-title">Schema of deployment</h5>
27872787
document.getElementById("poisoned-noise-percent-container").style.display = "none";
27882788
document.getElementById("noise-type-title").style.display = "none";
27892789
document.getElementById("noise-type-container").style.display = "none";
2790-
document.getElementById("targeted").checked = false;
2791-
document.getElementById("targeted").dispatchEvent(new Event('change'));
27922790
document.getElementById("targeted-title").style.display = "none";
27932791
document.getElementById("targeted-container").style.display = "none";
2792+
document.getElementById("target_label-title").style.display = "none";
2793+
document.getElementById("target_label-container").style.display = "none";
2794+
document.getElementById("target_changed_label-title").style.display = "none";
2795+
document.getElementById("target_changed_label-container").style.display = "none";
27942796
document.getElementById("strength-title").style.display = "none";
27952797
document.getElementById("strength-container").style.display = "none";
27962798
document.getElementById("layer_idx-title").style.display = "none";
@@ -2802,7 +2804,7 @@ <h5 class="step-title">Schema of deployment</h5>
28022804
document.getElementById("stop-attack-title").style.display = "block";
28032805
document.getElementById("stop-attack-container").style.display = "block";
28042806
}
2805-
else if(this.value == "NoiseInjectionAttack"){
2807+
else if(this.value == "Noise Injection"){
28062808
document.getElementById("poisoned-node-title").style.display = "block";
28072809
document.getElementById("poisoned-node-percent-container").style.display = "block";
28082810
document.getElementById("poisoned-sample-title").style.display = "none";
@@ -2811,10 +2813,12 @@ <h5 class="step-title">Schema of deployment</h5>
28112813
document.getElementById("poisoned-noise-percent-container").style.display = "none";
28122814
document.getElementById("noise-type-title").style.display = "none";
28132815
document.getElementById("noise-type-container").style.display = "none";
2814-
document.getElementById("targeted").checked = false;
2815-
document.getElementById("targeted").dispatchEvent(new Event('change'));
28162816
document.getElementById("targeted-title").style.display = "none";
28172817
document.getElementById("targeted-container").style.display = "none";
2818+
document.getElementById("target_label-title").style.display = "none";
2819+
document.getElementById("target_label-container").style.display = "none";
2820+
document.getElementById("target_changed_label-title").style.display = "none";
2821+
document.getElementById("target_changed_label-container").style.display = "none";
28182822
document.getElementById("strength-title").style.display = "block";
28192823
document.getElementById("strength-container").style.display = "block";
28202824
document.getElementById("layer_idx-title").style.display = "none";
@@ -2826,7 +2830,7 @@ <h5 class="step-title">Schema of deployment</h5>
28262830
document.getElementById("stop-attack-title").style.display = "block";
28272831
document.getElementById("stop-attack-container").style.display = "block";
28282832
}
2829-
else if(this.value == "SwappingWeightsAttack"){
2833+
else if(this.value == "Swapping Weights"){
28302834
document.getElementById("poisoned-node-title").style.display = "block";
28312835
document.getElementById("poisoned-node-percent-container").style.display = "block";
28322836
document.getElementById("poisoned-sample-title").style.display = "none";
@@ -2835,10 +2839,12 @@ <h5 class="step-title">Schema of deployment</h5>
28352839
document.getElementById("poisoned-noise-percent-container").style.display = "none";
28362840
document.getElementById("noise-type-title").style.display = "none";
28372841
document.getElementById("noise-type-container").style.display = "none";
2838-
document.getElementById("targeted").checked = false;
2839-
document.getElementById("targeted").dispatchEvent(new Event('change'));
28402842
document.getElementById("targeted-title").style.display = "none";
28412843
document.getElementById("targeted-container").style.display = "none";
2844+
document.getElementById("target_label-title").style.display = "none";
2845+
document.getElementById("target_label-container").style.display = "none";
2846+
document.getElementById("target_changed_label-title").style.display = "none";
2847+
document.getElementById("target_changed_label-container").style.display = "none";
28422848
document.getElementById("strength-title").style.display = "none";
28432849
document.getElementById("strength-container").style.display = "none";
28442850
document.getElementById("layer_idx-title").style.display = "block";
@@ -2850,7 +2856,7 @@ <h5 class="step-title">Schema of deployment</h5>
28502856
document.getElementById("stop-attack-title").style.display = "block";
28512857
document.getElementById("stop-attack-container").style.display = "block";
28522858
}
2853-
else if(this.value == "DelayerAttack"){
2859+
else if(this.value == "Delayer"){
28542860
document.getElementById("poisoned-node-title").style.display = "block";
28552861
document.getElementById("poisoned-node-percent-container").style.display = "block";
28562862
document.getElementById("poisoned-sample-title").style.display = "none";
@@ -2859,10 +2865,12 @@ <h5 class="step-title">Schema of deployment</h5>
28592865
document.getElementById("poisoned-noise-percent-container").style.display = "none";
28602866
document.getElementById("noise-type-title").style.display = "none";
28612867
document.getElementById("noise-type-container").style.display = "none";
2862-
document.getElementById("targeted").checked = false;
2863-
document.getElementById("targeted").dispatchEvent(new Event('change'));
28642868
document.getElementById("targeted-title").style.display = "none";
28652869
document.getElementById("targeted-container").style.display = "none";
2870+
document.getElementById("target_label-title").style.display = "none";
2871+
document.getElementById("target_label-container").style.display = "none";
2872+
document.getElementById("target_changed_label-title").style.display = "none";
2873+
document.getElementById("target_changed_label-container").style.display = "none";
28662874
document.getElementById("strength-title").style.display = "none";
28672875
document.getElementById("strength-container").style.display = "none";
28682876
document.getElementById("layer_idx-title").style.display = "none";

0 commit comments

Comments
 (0)