Spaces:
Sleeping
Sleeping
nykadamec
commited on
Commit
·
6d8bed1
1
Parent(s):
2c479a4
Update server.js
Browse files
server.js
CHANGED
|
@@ -1,12 +1,17 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
|
|
|
|
|
|
| 7 |
|
| 8 |
-
//
|
| 9 |
-
const
|
|
|
|
|
|
|
|
|
|
| 10 |
|
| 11 |
// Import Upscaler using dynamic import
|
| 12 |
let Upscaler;
|
|
@@ -40,55 +45,29 @@ const upload = multer({
|
|
| 40 |
// Global upscaler instance
|
| 41 |
let upscalerInstance = null;
|
| 42 |
|
| 43 |
-
// Initialize TensorFlow.js backend
|
| 44 |
-
async function initializeTensorFlow() {
|
| 45 |
-
try {
|
| 46 |
-
console.log('Initializing TensorFlow.js...');
|
| 47 |
-
|
| 48 |
-
// Try to set WASM backend first, fallback to CPU
|
| 49 |
-
try {
|
| 50 |
-
await tf.setBackend('wasm');
|
| 51 |
-
await tf.ready();
|
| 52 |
-
console.log('TensorFlow.js initialized with WASM backend');
|
| 53 |
-
} catch (wasmError) {
|
| 54 |
-
console.warn('WASM backend failed, falling back to CPU:', wasmError.message);
|
| 55 |
-
await tf.setBackend('cpu');
|
| 56 |
-
await tf.ready();
|
| 57 |
-
console.log('TensorFlow.js initialized with CPU backend');
|
| 58 |
-
}
|
| 59 |
-
|
| 60 |
-
console.log('Current backend:', tf.getBackend());
|
| 61 |
-
return true;
|
| 62 |
-
} catch (error) {
|
| 63 |
-
console.error('Failed to initialize TensorFlow.js:', error);
|
| 64 |
-
return false;
|
| 65 |
-
}
|
| 66 |
-
}
|
| 67 |
-
|
| 68 |
// Get model for scale and type
|
| 69 |
async function getModelForScaleAndType(scale, modelType) {
|
| 70 |
switch (modelType) {
|
| 71 |
case 'esrgan-slim':
|
| 72 |
-
const { x2: slimX2, x3: slimX3, x4: slimX4 } =
|
| 73 |
if (scale === 2) return slimX2;
|
| 74 |
if (scale === 3) return slimX3;
|
| 75 |
return slimX4;
|
| 76 |
|
| 77 |
case 'esrgan-medium':
|
| 78 |
-
const { x2: mediumX2, x3: mediumX3, x4: mediumX4 } =
|
| 79 |
if (scale === 2) return mediumX2;
|
| 80 |
if (scale === 3) return mediumX3;
|
| 81 |
return mediumX4;
|
| 82 |
|
| 83 |
case 'esrgan-thick':
|
| 84 |
-
const { x2: thickX2, x3: thickX3, x4: thickX4 } =
|
| 85 |
if (scale === 2) return thickX2;
|
| 86 |
if (scale === 3) return thickX3;
|
| 87 |
return thickX4;
|
| 88 |
|
| 89 |
default:
|
| 90 |
-
|
| 91 |
-
const { x2: defaultX2, x3: defaultX3, x4: defaultX4 } = require('@upscalerjs/esrgan-slim');
|
| 92 |
if (scale === 2) return defaultX2;
|
| 93 |
if (scale === 3) return defaultX3;
|
| 94 |
return defaultX4;
|
|
@@ -100,7 +79,6 @@ async function initializeUpscaler(scale = 2, modelType = 'esrgan-slim') {
|
|
| 100 |
try {
|
| 101 |
console.log(`Initializing upscaler with scale ${scale}x and model ${modelType}...`);
|
| 102 |
|
| 103 |
-
// Dynamic import of Upscaler
|
| 104 |
if (!Upscaler) {
|
| 105 |
const upscalerModule = await import('upscaler');
|
| 106 |
Upscaler = upscalerModule.default;
|
|
|
|
| 1 |
+
import express from 'express';
|
| 2 |
+
import multer from 'multer';
|
| 3 |
+
import cors from 'cors';
|
| 4 |
+
import * as tf from '@tensorflow/tfjs';
|
| 5 |
+
import '@tensorflow/tfjs-backend-wasm';
|
| 6 |
+
import '@tensorflow/tfjs-backend-cpu';
|
| 7 |
+
import { createCanvas, loadImage } from 'canvas';
|
| 8 |
+
import { createRequire } from 'module';
|
| 9 |
|
| 10 |
+
// Pro importy CommonJS balíčků
|
| 11 |
+
const require = createRequire(import.meta.url);
|
| 12 |
+
|
| 13 |
+
// Pokud některé balíčky nefungují s ES import
|
| 14 |
+
const somePackage = require('package-name');
|
| 15 |
|
| 16 |
// Import Upscaler using dynamic import
|
| 17 |
let Upscaler;
|
|
|
|
| 45 |
// Global upscaler instance
|
| 46 |
let upscalerInstance = null;
|
| 47 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 48 |
// Get model for scale and type
|
| 49 |
async function getModelForScaleAndType(scale, modelType) {
|
| 50 |
switch (modelType) {
|
| 51 |
case 'esrgan-slim':
|
| 52 |
+
const { x2: slimX2, x3: slimX3, x4: slimX4 } = await import('@upscalerjs/esrgan-slim');
|
| 53 |
if (scale === 2) return slimX2;
|
| 54 |
if (scale === 3) return slimX3;
|
| 55 |
return slimX4;
|
| 56 |
|
| 57 |
case 'esrgan-medium':
|
| 58 |
+
const { x2: mediumX2, x3: mediumX3, x4: mediumX4 } = await import('@upscalerjs/esrgan-medium');
|
| 59 |
if (scale === 2) return mediumX2;
|
| 60 |
if (scale === 3) return mediumX3;
|
| 61 |
return mediumX4;
|
| 62 |
|
| 63 |
case 'esrgan-thick':
|
| 64 |
+
const { x2: thickX2, x3: thickX3, x4: thickX4 } = await import('@upscalerjs/esrgan-thick');
|
| 65 |
if (scale === 2) return thickX2;
|
| 66 |
if (scale === 3) return thickX3;
|
| 67 |
return thickX4;
|
| 68 |
|
| 69 |
default:
|
| 70 |
+
const { x2: defaultX2, x3: defaultX3, x4: defaultX4 } = await import('@upscalerjs/esrgan-slim');
|
|
|
|
| 71 |
if (scale === 2) return defaultX2;
|
| 72 |
if (scale === 3) return defaultX3;
|
| 73 |
return defaultX4;
|
|
|
|
| 79 |
try {
|
| 80 |
console.log(`Initializing upscaler with scale ${scale}x and model ${modelType}...`);
|
| 81 |
|
|
|
|
| 82 |
if (!Upscaler) {
|
| 83 |
const upscalerModule = await import('upscaler');
|
| 84 |
Upscaler = upscalerModule.default;
|