diff --git a/src/Lhidden_test.npy b/src/Lhidden.npy similarity index 100% rename from src/Lhidden_test.npy rename to src/Lhidden.npy diff --git a/src/Lweights_test.npy b/src/Lweights.npy similarity index 100% rename from src/Lweights_test.npy rename to src/Lweights.npy diff --git a/src/index.html b/src/index.html index 9571bf5..6a3eae7 100644 --- a/src/index.html +++ b/src/index.html @@ -14,6 +14,8 @@ + + @@ -27,7 +29,6 @@ - @@ -316,11 +317,10 @@
-
- -
+
+
diff --git a/src/logic/agent.js b/src/logic/agent.js index 5ca2fa5..8ea4c0b 100644 --- a/src/logic/agent.js +++ b/src/logic/agent.js @@ -10,6 +10,7 @@ class Agent extends AgentController { const cycle = async () => { try { const jobRequest = Products.instance.getJobRequest(); + console.log(jobRequest); if (jobRequest) { await this.takeFromStore(jobRequest.product, jobRequest.amount); await this.deliver(jobRequest.x, jobRequest.y); diff --git a/src/main.py b/src/main.py index ebb4a4f..a478a01 100644 --- a/src/main.py +++ b/src/main.py @@ -1,5 +1,6 @@ from flask import Flask, redirect, jsonify, request import decision_tree +from neural_network import * app = Flask( __name__, @@ -31,6 +32,28 @@ def api_predict_shelf(): return jsonify([ n2t['polka'][clf.predict([X]).tolist()[0]] ]) +@app.route('/api/neural', methods=['POST']) +def naural(): + length = int(request.form['length']) + print(length) + + data = list() + + for fileIndex in range(length): + file = request.files[f'file-{fileIndex}'] + file.save(f'user_input/file-{fileIndex}.png') + data.append(f'user_input/file-{fileIndex}.png') + + return jsonify(testCase(data)) + + # try: + # return("Image uploaded") + # print("Image uploaded") + # except Exception as err: + # print("Error occurred") + # print(err) + # return("Error, image not received.") + @app.route('/') def index(): return redirect('/index.html') diff --git a/src/neural_network.py b/src/neural_network.py index e6e3957..48243f6 100644 --- a/src/neural_network.py +++ b/src/neural_network.py @@ -30,8 +30,8 @@ class NeuralNetwork: self.weights = (np.random.rand(self.hnodes, self.inodes) - 0.5) self.hidden = (np.random.rand(self.onodes, self.hnodes) - 0.5) """ używane przy pobieraniu danych o nauczonej sieci, z pliku """ - # self.weights = np.load(fileWeight) - # self.hidden = np.load(fileHidden) + self.weights = np.load(fileWeight) + self.hidden = np.load(fileHidden) self.lr = learningGrade @@ -136,23 +136,26 @@ li = [] ourOwnDataset = [] record_cache = None def testCase(inputWord): - len = len(inputWord) + length = len(inputWord) word = "" - for i in range(0,len-2): - imgArray = imageio.imread(imageFileName, as_gray=True) + for i in range(0, length): + imgArray = imageio.imread(inputWord[i], as_gray=True) imgData = 255 - imgArray.reshape(784) imgData = (imgData/255 * 0.99) + 0.01 #inputWord[i] - word = word + recognizeLet(letterNetwork ,imgData) - word = word + recognizeNum(digitNetwork, inputWord[-2]) - word = word + recognizeNum(digitNetwork ,inputWord[-1]) + + if i < length - 2: + word = word + recognizeLet(letterNetwork, imgData) + else: + word = word + recognizeNum(digitNetwork, imgData) #assert record_cache.shape == ourOwnDataset[0].shape #labelInput = np.asfarray(li) #print(labelInput) print('slowo: ', word) + return word pass @@ -234,5 +237,5 @@ print('slowo: ', word) ##################################### URUCHOMIENIE TRENINGU -trainNetwork(letterNetwork, "Lweights_test.npy", "Lhidden_test.npy", let_train_images, let_train_labels) +# trainNetwork(letterNetwork, "Lweights_test.npy", "Lhidden_test.npy", let_train_images, let_train_labels) # trainNetwork(digitNetwork, "Dweights_test.npy", "Dhidden_test.npy", let_train_images, let_train_labels) \ No newline at end of file diff --git a/src/user_input/file-0.png b/src/user_input/file-0.png new file mode 100644 index 0000000..5687b25 Binary files /dev/null and b/src/user_input/file-0.png differ diff --git a/src/user_input/file-1.png b/src/user_input/file-1.png new file mode 100644 index 0000000..207b1e1 Binary files /dev/null and b/src/user_input/file-1.png differ diff --git a/src/user_input/file-2.png b/src/user_input/file-2.png new file mode 100644 index 0000000..8dfd93c Binary files /dev/null and b/src/user_input/file-2.png differ diff --git a/src/user_input/file-3.png b/src/user_input/file-3.png new file mode 100644 index 0000000..5b6b1ae Binary files /dev/null and b/src/user_input/file-3.png differ diff --git a/src/user_input/file-4.png b/src/user_input/file-4.png new file mode 100644 index 0000000..fbfd550 Binary files /dev/null and b/src/user_input/file-4.png differ diff --git a/src/user_input/file-5.png b/src/user_input/file-5.png new file mode 100644 index 0000000..7c52f6e Binary files /dev/null and b/src/user_input/file-5.png differ diff --git a/src/user_input/file-6.png b/src/user_input/file-6.png new file mode 100644 index 0000000..38b7b6f Binary files /dev/null and b/src/user_input/file-6.png differ diff --git a/src/user_input/file-7.png b/src/user_input/file-7.png new file mode 100644 index 0000000..5d1bf1e Binary files /dev/null and b/src/user_input/file-7.png differ diff --git a/src/view/ordersView.js b/src/view/ordersView.js index da4ff70..661b57a 100644 --- a/src/view/ordersView.js +++ b/src/view/ordersView.js @@ -3,6 +3,9 @@ class OrdersView { constructor() { OrdersView.instance = this; + this.orders = []; + this.lastRecognizedText = ''; + this.addMultipleCanvases(10); } @@ -23,6 +26,8 @@ class OrdersView { canvas.height = 28; const ctx = canvas.getContext('2d'); + ctx.fillStyle = 'white'; + ctx.fillRect(0, 0, 28, 28); ctx.drawImage(img, 0, 0, 28, 28); canvas.toBlob((blob) => { @@ -34,13 +39,17 @@ class OrdersView { }); }); }) - ).then(async () => { + ).then(async (res) => { + formData.append('length', res.length); + const response = await fetch('/api/neural', { method: 'POST', body: formData }); //const json = await response.json(); - console.log(await response.text()); + const res_ = (await response.text()).replace(/[\"]{1,}/g, ''); + document.querySelector('.response').innerHTML = res_; + this.lastRecognizedText = res_; }); } @@ -115,4 +124,29 @@ class OrdersView { ctx.stroke(); } } + + addOrderByLastRecognizedString() { + this.addOrderByString(this.lastRecognizedText); + } + + addOrderByString(str) { + const numberStr = str.substring(str.length - 2, str.length); + const text = str.substring(0, str.length - 2); + const number = parseInt(numberStr); + + this.orders.push({ + product: Product.REGISTRY[text], + amount: number, + x: 11, + y: 7, + }); + + this.closeWindow(); + } + + getOrder() { + if (!this.orders.length) return null; + + return this.orders.shift(); + } } \ No newline at end of file