javascript — tenorflow.js — прогноз изображения — основной цвет изображения

tenorflow.js — прогноз изображения — основной цвет изображения

Я надеюсь, что вы можете мне помочь. Я немного дурачился с моей первой моделью тензорного потока.js и застрял, улучшая ее.

Задача, которую он должен предсказать, звучит «просто»: получить цвет объекта в изображении.

Но я застрял, может быть, кто-то может дать мне подсказку :-)

Моя модель:

  • последовательный

  • conv2d: фильтры: 32, kernelSize: [3, 3], заполнение: «то же самое», inputShape: [32, 32, 3], kernelInitializer: «varianceScaling»,

  • активация: relu

  • maxPooling2D: PoolSize: [2,2] шагов: 2

  • dropOut: ставка 0,5

  • conv2d: фильтры: 64, kernelSize: [3, 3], отступы: «то же самое», kernelInitializer: «varianceScaling»,

  • активация: relu

  • maxPooling2D: PoolSize: [2,2] шагов: 2

  • dropOut: ставка 0,5

  • расплющить

  • плотный: единиц: 1024

  • активация: relu

  • Пакетная нормализация: ось -1

  • отсев: 0,5

  • плотный: единицы измерения (например, 22)

  • активация: softmax

резюме моей модели


Мои данные

  • один список всех цветов, которые существуют внутри данных (всего 22 записи)
  • массив изображений dir для их сопоставленного примера цвета [[dir ={amp}gt; «img / image1.jpeg», label: «red»], [dir ={amp}gt; «img / image2.jpeg», label: «black»]

Мой процесс

Для изображений считайте изображение с помощью tf.node.decodeJpeg

Нормализуйте это и вставьте в массив тензоров

 const offset = tf.scalar(127.5); var tensor=tf.node.decodeJpeg(img, 3).resizeNearestNeighbor([32,32]) tensor = tensor.toFloat(); tensor = tensor.sub(offset).div(offset); imageTensorArray.push(tensor); 

для этикетки

получить числовой индекс меток из массива Alllabels и oneHot его бинаризовать.

 var imageLabels = imageLabelArray.map(function (d) { return allLabelsUnique.indexOf(d[1]); //index of label String in allLabels }); const imageLabelsHot=tf.oneHot(imageLabels, allLabelsUnique.length); 

скомпилировать модель

 const optimizer = tf.train.adam(1e-3, 1e-3 / 20); model.compile({ optimizer: optimizer, loss: "categoricalCrossentropy", metrics: ['accuracy'] }); 

Модель поезда

  await model.fit(trainImageTensors //5000, trainImageLabels //5000, { ///all in the right order epochs: 20, verbose: 1, validationSplit: 0.3, shuffle: 1, batchSize: 32 }); 

Теперь моя проблема (ы):

  • акк становится лучше — val_acc застрял на ~ 0.339, потеря: уменьшение — val_loss не зависит от эпох или количества тренировочных данных

  • прогноз всегда черный

Я много играл, но не могу получить подсказку «один» для помощи

  • trainImageTensors = tf.stack (buildImageToTensor (image)) — это может быть проблемой?

Заранее спасибо за помощь :-)

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector