-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathdataprep.js
57 lines (45 loc) · 1.74 KB
/
dataprep.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
const tf = require('@tensorflow/tfjs');
const path = require('path');
const { Image, createCanvas} = require('canvas');
const fs = require('fs');
function loadingOneImage(file, directoryPath){
var fname = directoryPath.slice(0, -10) + "YOLO/" + file.slice(0, -4) + ".txt";
let data = fs.readFileSync(fname, "utf-8");
const splitString = data.split(" ");
var i = splitString[4].indexOf('\n');
s = splitString[4].substring(0, i);
const targetTensor = tf.tensor1d([Number(splitString[0]), Number(splitString[1]), Number(splitString[2]), Number(splitString[3]), Number(s)]);
img = new Image();
img.src = directoryPath + "/" + file;
canvas = createCanvas(224, 224)
ctx = canvas.getContext('2d')
ctx.drawImage(img, 0, 0)
const imageTensor = tf.browser.fromPixels(this.canvas);
img = undefined;
canvas = undefined;
ctxs = undefined;
global.gc();
let promise = new Promise((resolve, reject) => {
resolve("done!")
})
return tf.tidy(() => {
return {image: imageTensor, target: targetTensor};
});
}
function generateDataset(){
console.log("Function is Running");
const imageTensors = [];
const targetTensors = [];
const directoryPath = path.join(__dirname, 'DataSet/JPEGImages');
fs.readdirSync(directoryPath).forEach(function(file){
const imageData = loadingOneImage(file,directoryPath);
imageTensors.push(imageData.image);
targetTensors.push(imageData.target);
});
const images = tf.stack(imageTensors);
const targets = tf.stack(targetTensors);
tf.dispose([imageTensors, targetTensors]);
return {images, targets};
}
module.exports = { generateDataset, loadingOneImage }
//generateDataset();