|
import sys |
|
import os |
|
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) |
|
import gradio as gr |
|
from designer import NeuralNetworkDesigner |
|
import tempfile |
|
import cv2 |
|
import numpy as np |
|
|
|
def generate_nn_code(image): |
|
designer = NeuralNetworkDesigner() |
|
|
|
temp_dir = tempfile.mkdtemp() |
|
temp_path = os.path.join(temp_dir, "input_image.png") |
|
|
|
if isinstance(image, np.ndarray): |
|
|
|
cv2.imwrite(temp_path, cv2.cvtColor(image, cv2.COLOR_RGB2BGR)) |
|
else: |
|
|
|
os.rename(image, temp_path) |
|
|
|
output_file = os.path.join(temp_dir, "custom_nn.py") |
|
designer.design_network(temp_path, output_file) |
|
with open(output_file, 'r') as f: |
|
code = f.read() |
|
return output_file, code |
|
|
|
|
|
try: |
|
image_input = gr.Image(source=["upload", "webcam"], type="numpy", label="Upload or Capture Flowchart") |
|
except TypeError: |
|
|
|
image_input = gr.Image(type="numpy", label="Upload Flowchart") |
|
|
|
iface = gr.Interface( |
|
fn=generate_nn_code, |
|
inputs=[image_input], |
|
outputs=[ |
|
gr.File(label="Download Generated Code"), |
|
gr.Code(language="python", label="Generated PyTorch Code") |
|
], |
|
title="Sketch NN: Neural Network Designer", |
|
description="Upload a flowchart image or capture one using your webcam to generate PyTorch code for your neural network architecture." |
|
) |
|
|
|
if __name__ == "__main__": |
|
iface.launch(share=True) |
|
else: |
|
iface.launch(inline=False) |