Аугментация данных — это метод искусственного увеличения объема обучающего набора данных с помощью различных трансформаций исходных изображений. В задачах компьютерного зрения она играет критическую роль, позволяя моделям быть более устойчивыми к изменениям масштаба, поворота, освещения и других визуальных вариаций. В контексте ml5.js, библиотеки высокого уровня для работы с машинным обучением на JavaScript, аугментация данных используется для улучшения качества моделей, особенно при ограниченном объеме исходных изображений.
Геометрические преобразования
Изменения цвета и освещенности
Добавление шума и фильтров
ml5.js не предоставляет встроенные методы аугментации на низком уровне, но интеграция с HTML5 Canvas и библиотеками для работы с изображениями позволяет легко реализовать преобразования. Примерный подход включает следующие шаги:
let img;
function preload() {
img = loadImage('image.jpg');
}
function rotateImage(angle) {
createCanvas(img.width, img.height);
translate(width / 2, height / 2);
rotate(angle);
imageMode(CENTER);
image(img, 0, 0);
}
function adjustBrightness(factor) {
img.loadPixels();
for (let i = 0; i < img.pixels.length; i += 4) {
img.pixels[i] = img.pixels[i] * factor; // Red
img.pixels[i + 1] = img.pixels[i + 1] * factor; // Green
img.pixels[i + 2] = img.pixels[i + 2] * factor; // Blue
}
img.updatePixels();
image(img, 0, 0);
}
ml5.imageClassifier).let classifier;
function setup() {
createCanvas(400, 400);
classifier = ml5.imageClassifier('MobileNet', modelReady);
}
function modelReady() {
console.log('Модель загружена');
augmentAndClassify(img);
}
function augmentAndClassify(image) {
let angle = random(-PI / 6, PI / 6);
rotateImage(angle);
adjustBrightness(random(0.8, 1.2));
classifier.classify(image, (err, results) => {
if (err) console.error(err);
console.log(results);
});
}
Такой подход позволяет строить устойчивые модели, обучающиеся на расширенных наборах данных без необходимости значительного увеличения исходного датасета.
Аугментация данных является важным инструментом при работе с изображениями и ml5.js предоставляет достаточные возможности для её реализации в связке с функционалом HTML5 Canvas и встроенными методами обработки пикселей.