Reading: Excavating AI: The Politics of Images in Machine Learning Training Sets by Kate Crawford and Trevor Paglen.
I've come to a clearer understanding of the intricate connection between images and labels in machine-learning datasets. Data and labels aren't neutral; they're shaped by social contexts. Human biases inevitably influence how these models interpret and categorize the world.
These biases don't just exist within the datasets themselves; they're also reflected in how the labels are applied. Image interpretation shouldn't rely solely on a few simple labels but should consider the broader context and complexities. Labels embedded with race, gender, or culture shape model training and can impact real-world decisions in areas like law enforcement, education, and employment.
This has made me realize that machine learning models aren't neutral tools; they reflect and amplify societal biases and injustices. Dataset creators, companies, developers, and crowdsourced workers hold the power to label images, and these labels influence how machines understand the world, affecting society at large. Therefore, constructing datasets requires stricter ethical oversight and broader stakeholder involvement to minimize the negative impact of bias and inequality on society.
Train your image classifier using Teachable Machine and apply the model to an interactive p5.js sketch. Feel free to try sound instead of or in addition to images.

First, I want to use sign language to represent my name. But later, I wanted my friends to be able to try sign language too, so I trained on the 26 letters of the alphabet.

Then I added “What’s your name?” and a picture of sign language for reference.
text("What's your name?", width / 2, 50);
img = loadImage('asl.jpg')


// Classifier Variable
let classifier;
// Model URL
let imageModelURL = "<https://teachablemachine.withgoogle.com/models/ieDAXoxxb/>";
// Video
let video;
// To store the classification
let label = "";
let img;
// Load the model first
function preload() {
classifier = ml5.imageClassifier(imageModelURL + "model.json", {
flipped: true,
});
}
function setup() {
createCanvas(640, 480);
// Create the video
video = createCapture(VIDEO, { flipped: true });
video.size(640, 460);
video.hide();
img = loadImage('asl.jpg')
classifier.classifyStart(video, gotResult);
}
function draw() {
background(0);
// Draw the video
image(video, 0, 0);
image(img,30,110,325,217);
// Draw the label
fill(255);
textSize(16);
textAlign(CENTER);
text(label, width / 2, height - 4);
text("What's your name?", width / 2, 50);
}
// Get a prediction for the current video frame
function classifyVideo() {
classifier.classify(flippedVideo, gotResult);
}
// When we get a result
function gotResult(results) {
// The results are in an array ordered by confidence.
// console.log(results[0]);
label = results[0].label;
}