busting-the-ballot

Corresponding repo for "Busting the Ballot: Voting Meets Adversarial Machine Learning".

https://github.com/votercenter/busting-the-ballot

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
Last synced: 6 months ago · JSON representation ·

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
Created 9 months ago · Last pushed 8 months ago
Metadata Files
Readme License Citation

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:
    1. ExtraSpacePNG.py - takes a directory of bubbles and creates .png pages for printing.
    2. ImageRegistration.py - registers a page post-print and scan and aligns it with the pages pre-print.
    3. 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

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

requirements.txt pypi
  • h5py *
  • matplotlib *
  • numpy *
  • pillow *
  • scipy *
  • torch *
  • torchsummary *
  • torchvision *