Я пытаюсь переписать следующую функцию Python в Pure JS. Второй пример функции выполняется в Nodejs, но с как можно большим количеством JS, потому что я хочу также запустить ее в браузере. < /P>
from PIL import Image
import numpy as np
from torchvision import transforms
def preprocess_image(image_path, img_size=224):
image = Image.open(image_path).convert('RGB')
transform = transforms.Compose([
transforms.Resize(img_size, interpolation=transforms.InterpolationMode.BICUBIC),
transforms.CenterCrop(img_size),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225])
])
tensor = transform(image).unsqueeze(0)
return tensor.numpy().astype(np.float32)
< /code>
Таким образом, цель состоит в том, чтобы сделать ввод изображения и изменить размер наименьшего размера до 224, затем сделать центральный урожай 224x224 и нормализовать его. Ниже приведена попытка сделать то же самое в JS, но предварительно обработанное изображение, к сожалению, немного отличается. < /P>
const { createCanvas, loadImage } = require('canvas');
async function preprocessImage(imagePath, size = 224) {
const image = await loadImage(imagePath);
const scale = Math.max(size / image.width, size / image.height);
const w = Math.round(image.width * scale);
const h = Math.round(image.height * scale);
// resize
const tempCanvas = createCanvas(w, h);
const ctx = tempCanvas.getContext('2d');
ctx.drawImage(image, 0, 0, w, h);
// enter crop 224x224
ctx.drawImage(
tempCanvas,
(w - size) / 2, (h - size) / 2, size, size,
0, 0, size, size
);
const { data } = ctx.getImageData(0, 0, size, size);
// normalize
const mean = [0.485, 0.456, 0.406];
const std = [0.229, 0.224, 0.225];
const floatData = new Float32Array(3 * size * size);
for (let i = 0; i < size * size; i++) {
for (let c = 0; c < 3; c++) {
const pixel = data[i * 4 + c] / 255; // normalize to [0,1]
floatData[c * size * size + i] = (pixel - mean[c]) / std[c];
}
}
return floatData;
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... hvisions-t
Предварительная обработка изображения в чистом JS, которая функционально идентична конвейеру Torchvision Transforms ⇐ Javascript
Форум по Javascript
1750540412
Anonymous
Я пытаюсь переписать следующую функцию Python в Pure JS. Второй пример функции выполняется в Nodejs, но с как можно большим количеством JS, потому что я хочу также запустить ее в браузере. < /P>
from PIL import Image
import numpy as np
from torchvision import transforms
def preprocess_image(image_path, img_size=224):
image = Image.open(image_path).convert('RGB')
transform = transforms.Compose([
transforms.Resize(img_size, interpolation=transforms.InterpolationMode.BICUBIC),
transforms.CenterCrop(img_size),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225])
])
tensor = transform(image).unsqueeze(0)
return tensor.numpy().astype(np.float32)
< /code>
Таким образом, цель состоит в том, чтобы сделать ввод изображения и изменить размер наименьшего размера до 224, затем сделать центральный урожай 224x224 и нормализовать его. Ниже приведена попытка сделать то же самое в JS, но предварительно обработанное изображение, к сожалению, немного отличается. < /P>
const { createCanvas, loadImage } = require('canvas');
async function preprocessImage(imagePath, size = 224) {
const image = await loadImage(imagePath);
const scale = Math.max(size / image.width, size / image.height);
const w = Math.round(image.width * scale);
const h = Math.round(image.height * scale);
// resize
const tempCanvas = createCanvas(w, h);
const ctx = tempCanvas.getContext('2d');
ctx.drawImage(image, 0, 0, w, h);
// enter crop 224x224
ctx.drawImage(
tempCanvas,
(w - size) / 2, (h - size) / 2, size, size,
0, 0, size, size
);
const { data } = ctx.getImageData(0, 0, size, size);
// normalize
const mean = [0.485, 0.456, 0.406];
const std = [0.229, 0.224, 0.225];
const floatData = new Float32Array(3 * size * size);
for (let i = 0; i < size * size; i++) {
for (let c = 0; c < 3; c++) {
const pixel = data[i * 4 + c] / 255; // normalize to [0,1]
floatData[c * size * size + i] = (pixel - mean[c]) / std[c];
}
}
return floatData;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79674750/image-preprocessing-in-pure-js-that-is-functionally-identical-to-torchvisions-t[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия