如何在 JavaScript 中将文件转换为张量
How to convert File into Tensor in JavaScript
我正在尝试使用 MobileNet 创建一个简单的图像分类示例。
我试图让它与 react-dropzone 一起工作,但最终我需要将类型为 File
的图像转换为 Tensor
才能将其传递给model.classify
。
我也尝试过使用 fromPixels
但为此,我必须将图像转换为 ImageData
。
export default function ImageClassification() {
const [isModelLoaded, setModelLoaded] = useState(false);
const [uploadedFile, setUploadedFile] = useState();
const [classifier, setClassifier] = useState();
useEffect(() => {
async function modelReady() {
console.log("Not loaded:" + isModelLoaded);
setClassifier(
await MobileNet.load().then(model => {
setModelLoaded(true);
return model;
})
);
}
modelReady();
}, []);
function onDrop(acceptedFiles: File[]) {
console.log(acceptedFiles);
setUploadedFile(acceptedFiles);
console.log("After setting");
}
function prepareImage(inputFile: File) {
// How to convert inputFile to Tensor???
return image;
}
const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop });
return (
<React.Fragment>
{!isModelLoaded ? (
<CircularProgress />
) : (
<div {...getRootProps()}>
<input {...getInputProps()} />
{isDragActive ? (
<p>Drop the files here.. </p>
) : (
<p>Drag 'n' drop some files here, or click to select files</p>
)}
{uploadedFile &&
uploadedFile.map((item: File) => {
const input = prepareImage(item);
classifier.classify(input);
return <h1>{item.name}</h1>;
})}
</div>
)}
</React.Fragment>
);
}
我们将不胜感激任何有关这些的帮助。
需要读取文件并将其结果分配给图像标签。加载图像后,可以将其转换为张量。
const im = new Image()
var fr = new FileReader();
fr.onload = function () {
im.src = fr.result;
}
fr.readAsDataURL(inputFile);
im.onload = () => {
const a = tf.browser.fromPixels(im)
}
我正在尝试使用 MobileNet 创建一个简单的图像分类示例。
我试图让它与 react-dropzone 一起工作,但最终我需要将类型为 File
的图像转换为 Tensor
才能将其传递给model.classify
。
我也尝试过使用 fromPixels
但为此,我必须将图像转换为 ImageData
。
export default function ImageClassification() {
const [isModelLoaded, setModelLoaded] = useState(false);
const [uploadedFile, setUploadedFile] = useState();
const [classifier, setClassifier] = useState();
useEffect(() => {
async function modelReady() {
console.log("Not loaded:" + isModelLoaded);
setClassifier(
await MobileNet.load().then(model => {
setModelLoaded(true);
return model;
})
);
}
modelReady();
}, []);
function onDrop(acceptedFiles: File[]) {
console.log(acceptedFiles);
setUploadedFile(acceptedFiles);
console.log("After setting");
}
function prepareImage(inputFile: File) {
// How to convert inputFile to Tensor???
return image;
}
const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop });
return (
<React.Fragment>
{!isModelLoaded ? (
<CircularProgress />
) : (
<div {...getRootProps()}>
<input {...getInputProps()} />
{isDragActive ? (
<p>Drop the files here.. </p>
) : (
<p>Drag 'n' drop some files here, or click to select files</p>
)}
{uploadedFile &&
uploadedFile.map((item: File) => {
const input = prepareImage(item);
classifier.classify(input);
return <h1>{item.name}</h1>;
})}
</div>
)}
</React.Fragment>
);
}
我们将不胜感激任何有关这些的帮助。
需要读取文件并将其结果分配给图像标签。加载图像后,可以将其转换为张量。
const im = new Image()
var fr = new FileReader();
fr.onload = function () {
im.src = fr.result;
}
fr.readAsDataURL(inputFile);
im.onload = () => {
const a = tf.browser.fromPixels(im)
}