Repository files navigation





SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications (AAAI 2020)

Tensorflow implementation of the paper in AAAI 2020. The paper tries to address the robustness of Deep Neeural Networks, but not from pixel-level perturbation lense, rather from semantic lense in which the perturbation happens in the latent parameters that generate the image. This type of robustness is important for safety-critical applications like self-driving cars in which tolerance of error is very low and risk of failure is high.

SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications
Abdullah Hamdi, Matthias Muller, Bernard Ghanem

Citation

If you find this useful for your research, please use the following.

@inproceedings{hamdi2020sada,
title = {{SADA:} Semantic Adversarial Diagnostic Attacks for Autonomous Applications},
author = {Abdullah Hamdi and Matthias Muller and Bernard Ghanem},
booktitle = {AAAI Conference on Artificial Intelligence},
year = 2020
}

Prerequisites

  • Linux
  • Python 2 or 3
  • NVIDIA GPU (11G memory or larger) + CUDA cuDNN
  • Blender 2.79

Getting Started

Installation

  • install Blender with the version blender-2.79b-linux-glibc219-x86_64 and add it to your PATH by adding the command export PATH="${PATH}:/home/PATH/TO/blender-2.79b-linux-glibc219-x86_64" in /home/.bashrc file . make sure at the end that you can run blender command from your shell script.

  • Clone this repo:

git clone https://github.com/ajhamdi/SADA
cd SADA
  • install the following conda environment as follows:
conda env create -f environment.yaml
conda activate sada
  • Download the dataset that contains the 3D shapes and the environments from this link and place the folder in the same project dir with name 3d/training_pascal.

  • Download the weights for YOLOv3 from this link and place in the detectos dir.



Dataset

  • We collect 100 3D shapes from 10 classes from ShapeNet and Pascal3D . All the sahpes are available inside the blender environment 3d/training_pascal/training.blend file. The classes are the following
  1. aeroplane
  2. bench
  3. bicycle
  4. boat
  5. bottle
  6. bus
  7. car
  8. chair
  9. dining table
  10. motorbike
  11. train
  12. truck
  • The parameters that control the environment are 8 as follows
  1. camera distance to the object
  2. camera azimuth angle
  3. camera pitch angle
  4. light source azimuth angle
  5. light source pitch angle
  6. color of the object (R-channel)
  7. color of the object (G-channel)
  8. color of the object (B-channel)

Generating images from the 3D environment for a specific class with random parameters and storing the 2D dataset in the folder generated

python main.py --is_gendist=True --class_nb= 0 --dataset_nb= 0 --gendist_size= 10000
  • is_gendist : is the option to generate distribution of parameters and images
  • class_nb the class of the 12 classes above to generate
  • dataset_nb : is the number assigned to the dataset generated
  • gendist_size : the number of inages generated


training BBGAN

python main.py --is_train=True --valid_size=50 --log_frq=10 --batch_size=32 --induced_size=50 --nb_steps=600 --learning_rate_t=0.0001 --learning_rate_g=0.0001
  • class_nb the class of the 12 classes above to generate
  • dataset_nb : is the number assigned to the dataset generated
  • nb_steps : is the number of training steps of the GAN
  • log_frq=10 : how often u save the weights of the network
  • induced_size: is the number of best samples that will be picked out of the total numberof generated images
  • learning_rate_g: the learning rate forf the generator
  • learning_rate_t: the learning rate forf the discrminator
  • valid_size : is the number of paramters u will be generating eventually for evaluation of the BBGAN



Self-Driving with CARLA

  • coming soon



UAV racing with Sim4CV

  • coming soon

About

SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications (AAAI 2020)

Topics

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation





SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications (AAAI 2020)

Tensorflow implementation of the paper in AAAI 2020. The paper tries to address the robustness of Deep Neeural Networks, but not from pixel-level perturbation lense, rather from semantic lense in which the perturbation happens in the latent parameters that generate the image. This type of robustness is important for safety-critical applications like self-driving cars in which tolerance of error is very low and risk of failure is high.

SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications
Abdullah Hamdi, Matthias Muller, Bernard Ghanem

Citation

If you find this useful for your research, please use the following.

@inproceedings{hamdi2020sada,
title = {{SADA:} Semantic Adversarial Diagnostic Attacks for Autonomous Applications},
author = {Abdullah Hamdi and Matthias Muller and Bernard Ghanem},
booktitle = {AAAI Conference on Artificial Intelligence},
year = 2020
}

Prerequisites

  • Linux
  • Python 2 or 3
  • NVIDIA GPU (11G memory or larger) + CUDA cuDNN
  • Blender 2.79

Getting Started

Installation

  • install Blender with the version blender-2.79b-linux-glibc219-x86_64 and add it to your PATH by adding the command export PATH="${PATH}:/home/PATH/TO/blender-2.79b-linux-glibc219-x86_64" in /home/.bashrc file . make sure at the end that you can run blender command from your shell script.

  • Clone this repo:

git clone https://github.com/ajhamdi/SADA
cd SADA
  • install the following conda environment as follows:
conda env create -f environment.yaml
conda activate sada
  • Download the dataset that contains the 3D shapes and the environments from this link and place the folder in the same project dir with name 3d/training_pascal.

  • Download the weights for YOLOv3 from this link and place in the detectos dir.



Dataset

  • We collect 100 3D shapes from 10 classes from ShapeNet and Pascal3D . All the sahpes are available inside the blender environment 3d/training_pascal/training.blend file. The classes are the following
  1. aeroplane
  2. bench
  3. bicycle
  4. boat
  5. bottle
  6. bus
  7. car
  8. chair
  9. dining table
  10. motorbike
  11. train
  12. truck
  • The parameters that control the environment are 8 as follows
  1. camera distance to the object
  2. camera azimuth angle
  3. camera pitch angle
  4. light source azimuth angle
  5. light source pitch angle
  6. color of the object (R-channel)
  7. color of the object (G-channel)
  8. color of the object (B-channel)

Generating images from the 3D environment for a specific class with random parameters and storing the 2D dataset in the folder generated

python main.py --is_gendist=True --class_nb= 0 --dataset_nb= 0 --gendist_size= 10000
  • is_gendist : is the option to generate distribution of parameters and images
  • class_nb the class of the 12 classes above to generate
  • dataset_nb : is the number assigned to the dataset generated
  • gendist_size : the number of inages generated


training BBGAN

python main.py --is_train=True --valid_size=50 --log_frq=10 --batch_size=32 --induced_size=50 --nb_steps=600 --learning_rate_t=0.0001 --learning_rate_g=0.0001
  • class_nb the class of the 12 classes above to generate
  • dataset_nb : is the number assigned to the dataset generated
  • nb_steps : is the number of training steps of the GAN
  • log_frq=10 : how often u save the weights of the network
  • induced_size: is the number of best samples that will be picked out of the total numberof generated images
  • learning_rate_g: the learning rate forf the generator
  • learning_rate_t: the learning rate forf the discrminator
  • valid_size : is the number of paramters u will be generating eventually for evaluation of the BBGAN



Self-Driving with CARLA

  • coming soon



UAV racing with Sim4CV

  • coming soon

About

SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications (AAAI 2020)

Topics

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation





SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications (AAAI 2020)

Tensorflow implementation of the paper in AAAI 2020. The paper tries to address the robustness of Deep Neeural Networks, but not from pixel-level perturbation lense, rather from semantic lense in which the perturbation happens in the latent parameters that generate the image. This type of robustness is important for safety-critical applications like self-driving cars in which tolerance of error is very low and risk of failure is high.

SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications
Abdullah Hamdi, Matthias Muller, Bernard Ghanem

Citation

If you find this useful for your research, please use the following.

@inproceedings{hamdi2020sada,
title = {{SADA:} Semantic Adversarial Diagnostic Attacks for Autonomous Applications},
author = {Abdullah Hamdi and Matthias Muller and Bernard Ghanem},
booktitle = {AAAI Conference on Artificial Intelligence},
year = 2020
}

Prerequisites

  • Linux
  • Python 2 or 3
  • NVIDIA GPU (11G memory or larger) + CUDA cuDNN
  • Blender 2.79

Getting Started

Installation

  • install Blender with the version blender-2.79b-linux-glibc219-x86_64 and add it to your PATH by adding the command export PATH="${PATH}:/home/PATH/TO/blender-2.79b-linux-glibc219-x86_64" in /home/.bashrc file . make sure at the end that you can run blender command from your shell script.

  • Clone this repo:

git clone https://github.com/ajhamdi/SADA
cd SADA
  • install the following conda environment as follows:
conda env create -f environment.yaml
conda activate sada
  • Download the dataset that contains the 3D shapes and the environments from this link and place the folder in the same project dir with name 3d/training_pascal.

  • Download the weights for YOLOv3 from this link and place in the detectos dir.



Dataset

  • We collect 100 3D shapes from 10 classes from ShapeNet and Pascal3D . All the sahpes are available inside the blender environment 3d/training_pascal/training.blend file. The classes are the following
  1. aeroplane
  2. bench
  3. bicycle
  4. boat
  5. bottle
  6. bus
  7. car
  8. chair
  9. dining table
  10. motorbike
  11. train
  12. truck
  • The parameters that control the environment are 8 as follows
  1. camera distance to the object
  2. camera azimuth angle
  3. camera pitch angle
  4. light source azimuth angle
  5. light source pitch angle
  6. color of the object (R-channel)
  7. color of the object (G-channel)
  8. color of the object (B-channel)

Generating images from the 3D environment for a specific class with random parameters and storing the 2D dataset in the folder generated

python main.py --is_gendist=True --class_nb= 0 --dataset_nb= 0 --gendist_size= 10000
  • is_gendist : is the option to generate distribution of parameters and images
  • class_nb the class of the 12 classes above to generate
  • dataset_nb : is the number assigned to the dataset generated
  • gendist_size : the number of inages generated


training BBGAN

python main.py --is_train=True --valid_size=50 --log_frq=10 --batch_size=32 --induced_size=50 --nb_steps=600 --learning_rate_t=0.0001 --learning_rate_g=0.0001
  • class_nb the class of the 12 classes above to generate
  • dataset_nb : is the number assigned to the dataset generated
  • nb_steps : is the number of training steps of the GAN
  • log_frq=10 : how often u save the weights of the network
  • induced_size: is the number of best samples that will be picked out of the total numberof generated images
  • learning_rate_g: the learning rate forf the generator
  • learning_rate_t: the learning rate forf the discrminator
  • valid_size : is the number of paramters u will be generating eventually for evaluation of the BBGAN



Self-Driving with CARLA

  • coming soon



UAV racing with Sim4CV

  • coming soon

About

SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications (AAAI 2020)

Topics

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation





SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications (AAAI 2020)

Tensorflow implementation of the paper in AAAI 2020. The paper tries to address the robustness of Deep Neeural Networks, but not from pixel-level perturbation lense, rather from semantic lense in which the perturbation happens in the latent parameters that generate the image. This type of robustness is important for safety-critical applications like self-driving cars in which tolerance of error is very low and risk of failure is high.

SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications
Abdullah Hamdi, Matthias Muller, Bernard Ghanem

Citation

If you find this useful for your research, please use the following.

@inproceedings{hamdi2020sada,
title = {{SADA:} Semantic Adversarial Diagnostic Attacks for Autonomous Applications},
author = {Abdullah Hamdi and Matthias Muller and Bernard Ghanem},
booktitle = {AAAI Conference on Artificial Intelligence},
year = 2020
}

Prerequisites

  • Linux
  • Python 2 or 3
  • NVIDIA GPU (11G memory or larger) + CUDA cuDNN
  • Blender 2.79

Getting Started

Installation

  • install Blender with the version blender-2.79b-linux-glibc219-x86_64 and add it to your PATH by adding the command export PATH="${PATH}:/home/PATH/TO/blender-2.79b-linux-glibc219-x86_64" in /home/.bashrc file . make sure at the end that you can run blender command from your shell script.

  • Clone this repo:

git clone https://github.com/ajhamdi/SADA
cd SADA
  • install the following conda environment as follows:
conda env create -f environment.yaml
conda activate sada
  • Download the dataset that contains the 3D shapes and the environments from this link and place the folder in the same project dir with name 3d/training_pascal.

  • Download the weights for YOLOv3 from this link and place in the detectos dir.



Dataset

  • We collect 100 3D shapes from 10 classes from ShapeNet and Pascal3D . All the sahpes are available inside the blender environment 3d/training_pascal/training.blend file. The classes are the following
  1. aeroplane
  2. bench
  3. bicycle
  4. boat
  5. bottle
  6. bus
  7. car
  8. chair
  9. dining table
  10. motorbike
  11. train
  12. truck
  • The parameters that control the environment are 8 as follows
  1. camera distance to the object
  2. camera azimuth angle
  3. camera pitch angle
  4. light source azimuth angle
  5. light source pitch angle
  6. color of the object (R-channel)
  7. color of the object (G-channel)
  8. color of the object (B-channel)

Generating images from the 3D environment for a specific class with random parameters and storing the 2D dataset in the folder generated

python main.py --is_gendist=True --class_nb= 0 --dataset_nb= 0 --gendist_size= 10000
  • is_gendist : is the option to generate distribution of parameters and images
  • class_nb the class of the 12 classes above to generate
  • dataset_nb : is the number assigned to the dataset generated
  • gendist_size : the number of inages generated


training BBGAN

python main.py --is_train=True --valid_size=50 --log_frq=10 --batch_size=32 --induced_size=50 --nb_steps=600 --learning_rate_t=0.0001 --learning_rate_g=0.0001
  • class_nb the class of the 12 classes above to generate
  • dataset_nb : is the number assigned to the dataset generated
  • nb_steps : is the number of training steps of the GAN
  • log_frq=10 : how often u save the weights of the network
  • induced_size: is the number of best samples that will be picked out of the total numberof generated images
  • learning_rate_g: the learning rate forf the generator
  • learning_rate_t: the learning rate forf the discrminator
  • valid_size : is the number of paramters u will be generating eventually for evaluation of the BBGAN



Self-Driving with CARLA

  • coming soon



UAV racing with Sim4CV

  • coming soon

About

SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications (AAAI 2020)

Topics

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation





SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications (AAAI 2020)

Tensorflow implementation of the paper in AAAI 2020. The paper tries to address the robustness of Deep Neeural Networks, but not from pixel-level perturbation lense, rather from semantic lense in which the perturbation happens in the latent parameters that generate the image. This type of robustness is important for safety-critical applications like self-driving cars in which tolerance of error is very low and risk of failure is high.

SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications
Abdullah Hamdi, Matthias Muller, Bernard Ghanem

Citation

If you find this useful for your research, please use the following.

@inproceedings{hamdi2020sada,
title = {{SADA:} Semantic Adversarial Diagnostic Attacks for Autonomous Applications},
author = {Abdullah Hamdi and Matthias Muller and Bernard Ghanem},
booktitle = {AAAI Conference on Artificial Intelligence},
year = 2020
}

Prerequisites

  • Linux
  • Python 2 or 3
  • NVIDIA GPU (11G memory or larger) + CUDA cuDNN
  • Blender 2.79

Getting Started

Installation

  • install Blender with the version blender-2.79b-linux-glibc219-x86_64 and add it to your PATH by adding the command export PATH="${PATH}:/home/PATH/TO/blender-2.79b-linux-glibc219-x86_64" in /home/.bashrc file . make sure at the end that you can run blender command from your shell script.

  • Clone this repo:

git clone https://github.com/ajhamdi/SADA
cd SADA
  • install the following conda environment as follows:
conda env create -f environment.yaml
conda activate sada
  • Download the dataset that contains the 3D shapes and the environments from this link and place the folder in the same project dir with name 3d/training_pascal.

  • Download the weights for YOLOv3 from this link and place in the detectos dir.



Dataset

  • We collect 100 3D shapes from 10 classes from ShapeNet and Pascal3D . All the sahpes are available inside the blender environment 3d/training_pascal/training.blend file. The classes are the following
  1. aeroplane
  2. bench
  3. bicycle
  4. boat
  5. bottle
  6. bus
  7. car
  8. chair
  9. dining table
  10. motorbike
  11. train
  12. truck
  • The parameters that control the environment are 8 as follows
  1. camera distance to the object
  2. camera azimuth angle
  3. camera pitch angle
  4. light source azimuth angle
  5. light source pitch angle
  6. color of the object (R-channel)
  7. color of the object (G-channel)
  8. color of the object (B-channel)

Generating images from the 3D environment for a specific class with random parameters and storing the 2D dataset in the folder generated

python main.py --is_gendist=True --class_nb= 0 --dataset_nb= 0 --gendist_size= 10000
  • is_gendist : is the option to generate distribution of parameters and images
  • class_nb the class of the 12 classes above to generate
  • dataset_nb : is the number assigned to the dataset generated
  • gendist_size : the number of inages generated


training BBGAN

python main.py --is_train=True --valid_size=50 --log_frq=10 --batch_size=32 --induced_size=50 --nb_steps=600 --learning_rate_t=0.0001 --learning_rate_g=0.0001
  • class_nb the class of the 12 classes above to generate
  • dataset_nb : is the number assigned to the dataset generated
  • nb_steps : is the number of training steps of the GAN
  • log_frq=10 : how often u save the weights of the network
  • induced_size: is the number of best samples that will be picked out of the total numberof generated images
  • learning_rate_g: the learning rate forf the generator
  • learning_rate_t: the learning rate forf the discrminator
  • valid_size : is the number of paramters u will be generating eventually for evaluation of the BBGAN



Self-Driving with CARLA

  • coming soon



UAV racing with Sim4CV

  • coming soon

About

SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications (AAAI 2020)

Topics

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation





SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications (AAAI 2020)

Tensorflow implementation of the paper in AAAI 2020. The paper tries to address the robustness of Deep Neeural Networks, but not from pixel-level perturbation lense, rather from semantic lense in which the perturbation happens in the latent parameters that generate the image. This type of robustness is important for safety-critical applications like self-driving cars in which tolerance of error is very low and risk of failure is high.

SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications
Abdullah Hamdi, Matthias Muller, Bernard Ghanem

Citation

If you find this useful for your research, please use the following.

@inproceedings{hamdi2020sada,
title = {{SADA:} Semantic Adversarial Diagnostic Attacks for Autonomous Applications},
author = {Abdullah Hamdi and Matthias Muller and Bernard Ghanem},
booktitle = {AAAI Conference on Artificial Intelligence},
year = 2020
}

Prerequisites

  • Linux
  • Python 2 or 3
  • NVIDIA GPU (11G memory or larger) + CUDA cuDNN
  • Blender 2.79

Getting Started

Installation

  • install Blender with the version blender-2.79b-linux-glibc219-x86_64 and add it to your PATH by adding the command export PATH="${PATH}:/home/PATH/TO/blender-2.79b-linux-glibc219-x86_64" in /home/.bashrc file . make sure at the end that you can run blender command from your shell script.

  • Clone this repo:

git clone https://github.com/ajhamdi/SADA
cd SADA
  • install the following conda environment as follows:
conda env create -f environment.yaml
conda activate sada
  • Download the dataset that contains the 3D shapes and the environments from this link and place the folder in the same project dir with name 3d/training_pascal.

  • Download the weights for YOLOv3 from this link and place in the detectos dir.



Dataset

  • We collect 100 3D shapes from 10 classes from ShapeNet and Pascal3D . All the sahpes are available inside the blender environment 3d/training_pascal/training.blend file. The classes are the following
  1. aeroplane
  2. bench
  3. bicycle
  4. boat
  5. bottle
  6. bus
  7. car
  8. chair
  9. dining table
  10. motorbike
  11. train
  12. truck
  • The parameters that control the environment are 8 as follows
  1. camera distance to the object
  2. camera azimuth angle
  3. camera pitch angle
  4. light source azimuth angle
  5. light source pitch angle
  6. color of the object (R-channel)
  7. color of the object (G-channel)
  8. color of the object (B-channel)

Generating images from the 3D environment for a specific class with random parameters and storing the 2D dataset in the folder generated

python main.py --is_gendist=True --class_nb= 0 --dataset_nb= 0 --gendist_size= 10000
  • is_gendist : is the option to generate distribution of parameters and images
  • class_nb the class of the 12 classes above to generate
  • dataset_nb : is the number assigned to the dataset generated
  • gendist_size : the number of inages generated


training BBGAN

python main.py --is_train=True --valid_size=50 --log_frq=10 --batch_size=32 --induced_size=50 --nb_steps=600 --learning_rate_t=0.0001 --learning_rate_g=0.0001
  • class_nb the class of the 12 classes above to generate
  • dataset_nb : is the number assigned to the dataset generated
  • nb_steps : is the number of training steps of the GAN
  • log_frq=10 : how often u save the weights of the network
  • induced_size: is the number of best samples that will be picked out of the total numberof generated images
  • learning_rate_g: the learning rate forf the generator
  • learning_rate_t: the learning rate forf the discrminator
  • valid_size : is the number of paramters u will be generating eventually for evaluation of the BBGAN



Self-Driving with CARLA

  • coming soon



UAV racing with Sim4CV

  • coming soon

About

SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications (AAAI 2020)

Topics

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation





SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications (AAAI 2020)

Tensorflow implementation of the paper in AAAI 2020. The paper tries to address the robustness of Deep Neeural Networks, but not from pixel-level perturbation lense, rather from semantic lense in which the perturbation happens in the latent parameters that generate the image. This type of robustness is important for safety-critical applications like self-driving cars in which tolerance of error is very low and risk of failure is high.

SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications
Abdullah Hamdi, Matthias Muller, Bernard Ghanem

Citation

If you find this useful for your research, please use the following.

@inproceedings{hamdi2020sada,
title = {{SADA:} Semantic Adversarial Diagnostic Attacks for Autonomous Applications},
author = {Abdullah Hamdi and Matthias Muller and Bernard Ghanem},
booktitle = {AAAI Conference on Artificial Intelligence},
year = 2020
}

Prerequisites

  • Linux
  • Python 2 or 3
  • NVIDIA GPU (11G memory or larger) + CUDA cuDNN
  • Blender 2.79

Getting Started

Installation

  • install Blender with the version blender-2.79b-linux-glibc219-x86_64 and add it to your PATH by adding the command export PATH="${PATH}:/home/PATH/TO/blender-2.79b-linux-glibc219-x86_64" in /home/.bashrc file . make sure at the end that you can run blender command from your shell script.

  • Clone this repo:

git clone https://github.com/ajhamdi/SADA
cd SADA
  • install the following conda environment as follows:
conda env create -f environment.yaml
conda activate sada
  • Download the dataset that contains the 3D shapes and the environments from this link and place the folder in the same project dir with name 3d/training_pascal.

  • Download the weights for YOLOv3 from this link and place in the detectos dir.



Dataset

  • We collect 100 3D shapes from 10 classes from ShapeNet and Pascal3D . All the sahpes are available inside the blender environment 3d/training_pascal/training.blend file. The classes are the following
  1. aeroplane
  2. bench
  3. bicycle
  4. boat
  5. bottle
  6. bus
  7. car
  8. chair
  9. dining table
  10. motorbike
  11. train
  12. truck
  • The parameters that control the environment are 8 as follows
  1. camera distance to the object
  2. camera azimuth angle
  3. camera pitch angle
  4. light source azimuth angle
  5. light source pitch angle
  6. color of the object (R-channel)
  7. color of the object (G-channel)
  8. color of the object (B-channel)

Generating images from the 3D environment for a specific class with random parameters and storing the 2D dataset in the folder generated

python main.py --is_gendist=True --class_nb= 0 --dataset_nb= 0 --gendist_size= 10000
  • is_gendist : is the option to generate distribution of parameters and images
  • class_nb the class of the 12 classes above to generate
  • dataset_nb : is the number assigned to the dataset generated
  • gendist_size : the number of inages generated


training BBGAN

python main.py --is_train=True --valid_size=50 --log_frq=10 --batch_size=32 --induced_size=50 --nb_steps=600 --learning_rate_t=0.0001 --learning_rate_g=0.0001
  • class_nb the class of the 12 classes above to generate
  • dataset_nb : is the number assigned to the dataset generated
  • nb_steps : is the number of training steps of the GAN
  • log_frq=10 : how often u save the weights of the network
  • induced_size: is the number of best samples that will be picked out of the total numberof generated images
  • learning_rate_g: the learning rate forf the generator
  • learning_rate_t: the learning rate forf the discrminator
  • valid_size : is the number of paramters u will be generating eventually for evaluation of the BBGAN



Self-Driving with CARLA

  • coming soon



UAV racing with Sim4CV

  • coming soon

About

SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications (AAAI 2020)

Topics

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation





SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications (AAAI 2020)

Tensorflow implementation of the paper in AAAI 2020. The paper tries to address the robustness of Deep Neeural Networks, but not from pixel-level perturbation lense, rather from semantic lense in which the perturbation happens in the latent parameters that generate the image. This type of robustness is important for safety-critical applications like self-driving cars in which tolerance of error is very low and risk of failure is high.

SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications
Abdullah Hamdi, Matthias Muller, Bernard Ghanem

Citation

If you find this useful for your research, please use the following.

@inproceedings{hamdi2020sada,
title = {{SADA:} Semantic Adversarial Diagnostic Attacks for Autonomous Applications},
author = {Abdullah Hamdi and Matthias Muller and Bernard Ghanem},
booktitle = {AAAI Conference on Artificial Intelligence},
year = 2020
}

Prerequisites

  • Linux
  • Python 2 or 3
  • NVIDIA GPU (11G memory or larger) + CUDA cuDNN
  • Blender 2.79

Getting Started

Installation

  • install Blender with the version blender-2.79b-linux-glibc219-x86_64 and add it to your PATH by adding the command export PATH="${PATH}:/home/PATH/TO/blender-2.79b-linux-glibc219-x86_64" in /home/.bashrc file . make sure at the end that you can run blender command from your shell script.

  • Clone this repo:

git clone https://github.com/ajhamdi/SADA
cd SADA
  • install the following conda environment as follows:
conda env create -f environment.yaml
conda activate sada
  • Download the dataset that contains the 3D shapes and the environments from this link and place the folder in the same project dir with name 3d/training_pascal.

  • Download the weights for YOLOv3 from this link and place in the detectos dir.



Dataset

  • We collect 100 3D shapes from 10 classes from ShapeNet and Pascal3D . All the sahpes are available inside the blender environment 3d/training_pascal/training.blend file. The classes are the following
  1. aeroplane
  2. bench
  3. bicycle
  4. boat
  5. bottle
  6. bus
  7. car
  8. chair
  9. dining table
  10. motorbike
  11. train
  12. truck
  • The parameters that control the environment are 8 as follows
  1. camera distance to the object
  2. camera azimuth angle
  3. camera pitch angle
  4. light source azimuth angle
  5. light source pitch angle
  6. color of the object (R-channel)
  7. color of the object (G-channel)
  8. color of the object (B-channel)

Generating images from the 3D environment for a specific class with random parameters and storing the 2D dataset in the folder generated

python main.py --is_gendist=True --class_nb= 0 --dataset_nb= 0 --gendist_size= 10000
  • is_gendist : is the option to generate distribution of parameters and images
  • class_nb the class of the 12 classes above to generate
  • dataset_nb : is the number assigned to the dataset generated
  • gendist_size : the number of inages generated


training BBGAN

python main.py --is_train=True --valid_size=50 --log_frq=10 --batch_size=32 --induced_size=50 --nb_steps=600 --learning_rate_t=0.0001 --learning_rate_g=0.0001
  • class_nb the class of the 12 classes above to generate
  • dataset_nb : is the number assigned to the dataset generated
  • nb_steps : is the number of training steps of the GAN
  • log_frq=10 : how often u save the weights of the network
  • induced_size: is the number of best samples that will be picked out of the total numberof generated images
  • learning_rate_g: the learning rate forf the generator
  • learning_rate_t: the learning rate forf the discrminator
  • valid_size : is the number of paramters u will be generating eventually for evaluation of the BBGAN



Self-Driving with CARLA

  • coming soon



UAV racing with Sim4CV

  • coming soon

About

SADA: Semantic Adversarial Diagnostic Attacks for Autonomous Applications (AAAI 2020)

Topics

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages