busting-the-ballot
Corresponding repo for "Busting the Ballot: Voting Meets Adversarial Machine Learning".
Science Score: 54.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (8.4%) to scientific vocabulary
Repository
Corresponding repo for "Busting the Ballot: Voting Meets Adversarial Machine Learning".
Basic Info
- Host: GitHub
- Owner: VoterCenter
- License: bsd-3-clause
- Language: Python
- Default Branch: main
- Size: 110 KB
Statistics
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 1
Metadata Files
README.md
Busting-the-Ballot
Corresponding repo for "Busting the Ballot: Voting Meets Adversarial Machine Learning". We show the security risk associated with using machine learning classifiers in United States election tabulators using adversarial machine learning attacks.
- Dataset DOI: https://zenodo.org/records/15458710
- Paper: coming soon!
Repo Overview
Models/: Architecture code for SVM, SimpleCNN, VGG-16, ResNet-20, CaiT, and Twins transformer presented in paper. Denoising Autoencoder architecture is also present here.Train/: Training pipeline with hyperparameters for each model across each dataset.Utilities: Helper functions compiled for modifying dataloaders, evaluating model accuracy, converting dataloaders to images, etc.ImageProcessing: Pipeline for creating pages then extracting bubbles from said pages post-print. Broken down into three parts:ExtraSpacePNG.py- takes a directory of bubbles and creates .png pages for printing.ImageRegistration.py- registers a page post-print and scan and aligns it with the pages pre-print.ExtractBubblesFromWhitespacePNG.py- takes registered pages and extracts bubbles.
Twins: Dependent files for training and running Twins model, taken from: https://github.com/Meituan-AutoML/Twins
Getting Started
Before training, the voter dataset needs to be downloaded.
1. Run python3 LoadVoterData.py in Utilities. This should create a folder titled data in your Utilities folder.
2. Run python3 VoterLab_Classifier_Functions.py in Utilities. This should create two folders Trained_RGB_VoterLab_Models/ and Trained_Grayscale_VoterLab_Models in your Train folder. Inside these folders are TrainLoaders.th and TrainGrayscaleLoaders.th which contain the training and validation loaders for your RGB and Grayscale models respectively.
Requirements
.yml with necessary libraries are provided. It is worth noting that most dependent libraries are for the Twins model.
System Overview
Training, validation, and image processing (as shown in the paper) were done using a NVIDIA TITAN RTX and NVIDIA GeForce RTX 4090.
Owner
- Name: VoterCenter
- Login: VoterCenter
- Kind: organization
- Repositories: 1
- Profile: https://github.com/VoterCenter
Citation (CITATION.cff)
cff-version: 1.0.0 message: "If you use this software, please cite it as below." authors: - family-names: "Manicke" given-names: "Caleb" orcid: "https://orcid.org/0009-0007-6409-5343" - family-names: "Rathburn" given-names: "Ethan" orcid: "https://orcid.org/0000-0002-5437-2489" - family-names: "Ahmad" given-names: "Sohaib" orcid: "https://orcid.org/0000-0001-6720-0507" - family-names: "Stamatakis" given-names: "Nicholas" orcid: "https://orcid.org/0009-0000-1440-7192" - family-names: "Verma" given-names: "Aayushi" orcid: "https://orcid.org/0000-0003-2396-4569" - family-names: "Fuller" given-names: "Benjamin, W." orcid: "https://orcid.org/0000-0001-6450-0088" - family-names: "Michel" given-names: "Laurent, D." orcid: "https://orcid.org/0000-0001-7230-7130" - family-names: "Mahmood" given-names: "Kaleel" orcid: "https://orcid.org/0000-0002-7672-4449" title: "Busting the Ballot" version: 1.0.0 doi: 10.5281/zenodo.15458710 date-released: 2025-05-28 url: "https://github.com/CalebManicke/Busting-the-Ballot"
GitHub Events
Total
- Watch event: 1
- Push event: 3
- Fork event: 1
Last Year
- Watch event: 1
- Push event: 3
- Fork event: 1
Dependencies
- h5py *
- matplotlib *
- numpy *
- pillow *
- scipy *
- torch *
- torchsummary *
- torchvision *