new tests
@ -20,10 +20,20 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="828778c9-9d97-422f-a727-18ddbd059b85" name="Default Changelist" comment="detecting digits">
|
<list default="true" id="828778c9-9d97-422f-a727-18ddbd059b85" name="Default Changelist" comment="detecting digits">
|
||||||
|
<change afterPath="$PROJECT_DIR$/coder/517.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/coder/test1.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/coder/test2.png" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/coder/coder.py" beforeDir="false" afterPath="$PROJECT_DIR$/coder/coder.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/coder/digits_recognizer.py" beforeDir="false" afterPath="$PROJECT_DIR$/coder/digits_recognizer.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/coder/digits_recognizer.py" beforeDir="false" afterPath="$PROJECT_DIR$/coder/digits_recognizer.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/coder/ll.png" beforeDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/coder/rocognizer.py" beforeDir="false" afterPath="$PROJECT_DIR$/coder/rocognizer.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/coder/rocognizer.py" beforeDir="false" afterPath="$PROJECT_DIR$/coder/rocognizer.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/coder/test.jpg" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/coder/test1.jpg" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/coder/test3.png" beforeDir="false" afterPath="$PROJECT_DIR$/coder/test3.png" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/coder/test5.png" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/coder/test9.png" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/coder/testno.png" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/coder/train_nn.py" beforeDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
@ -72,7 +82,7 @@
|
|||||||
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
||||||
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
|
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
|
||||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||||
<property name="last_opened_file_path" value="$PROJECT_DIR$/coder" />
|
<property name="last_opened_file_path" value="$USER_HOME$/Downloads/digitRecognition" />
|
||||||
<property name="restartRequiresConfirmation" value="false" />
|
<property name="restartRequiresConfirmation" value="false" />
|
||||||
<property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" />
|
<property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" />
|
||||||
</component>
|
</component>
|
||||||
@ -82,7 +92,7 @@
|
|||||||
<recent name="C:\Users\Pawel Lukaszewicz\PycharmProjects\AL-2020\coder\dataset" />
|
<recent name="C:\Users\Pawel Lukaszewicz\PycharmProjects\AL-2020\coder\dataset" />
|
||||||
</key>
|
</key>
|
||||||
</component>
|
</component>
|
||||||
<component name="RunManager" selected="Python.digits_recognizer">
|
<component name="RunManager" selected="Python.rocognizer">
|
||||||
<configuration default="true" type="PythonConfigurationType" factoryName="Python">
|
<configuration default="true" type="PythonConfigurationType" factoryName="Python">
|
||||||
<module name="wozek" />
|
<module name="wozek" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
@ -131,6 +141,9 @@
|
|||||||
<module name="wozek" />
|
<module name="wozek" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
<option name="PARENT_ENVS" value="true" />
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
</envs>
|
||||||
<option name="SDK_HOME" value="" />
|
<option name="SDK_HOME" value="" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/coder" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/coder" />
|
||||||
<option name="IS_MODULE_SDK" value="true" />
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
@ -218,8 +231,8 @@
|
|||||||
</list>
|
</list>
|
||||||
<recent_temporary>
|
<recent_temporary>
|
||||||
<list>
|
<list>
|
||||||
<item itemvalue="Python.digits_recognizer" />
|
|
||||||
<item itemvalue="Python.rocognizer" />
|
<item itemvalue="Python.rocognizer" />
|
||||||
|
<item itemvalue="Python.digits_recognizer" />
|
||||||
<item itemvalue="Python.coder" />
|
<item itemvalue="Python.coder" />
|
||||||
<item itemvalue="Python.z8" />
|
<item itemvalue="Python.z8" />
|
||||||
<item itemvalue="Python.image" />
|
<item itemvalue="Python.image" />
|
||||||
@ -265,6 +278,9 @@
|
|||||||
<workItem from="1590575699320" duration="792000" />
|
<workItem from="1590575699320" duration="792000" />
|
||||||
<workItem from="1590766924835" duration="10060000" />
|
<workItem from="1590766924835" duration="10060000" />
|
||||||
<workItem from="1590929874289" duration="7728000" />
|
<workItem from="1590929874289" duration="7728000" />
|
||||||
|
<workItem from="1590938377522" duration="176000" />
|
||||||
|
<workItem from="1590944305590" duration="10043000" />
|
||||||
|
<workItem from="1590961284964" duration="2200000" />
|
||||||
</task>
|
</task>
|
||||||
<task id="LOCAL-00001" summary="create Shelf">
|
<task id="LOCAL-00001" summary="create Shelf">
|
||||||
<created>1589815443652</created>
|
<created>1589815443652</created>
|
||||||
@ -364,7 +380,14 @@
|
|||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1590846768877</updated>
|
<updated>1590846768877</updated>
|
||||||
</task>
|
</task>
|
||||||
<option name="localTasksCounter" value="15" />
|
<task id="LOCAL-00015" summary="img is cropped and transformed to torch">
|
||||||
|
<created>1590938465634</created>
|
||||||
|
<option name="number" value="00015" />
|
||||||
|
<option name="presentableId" value="LOCAL-00015" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1590938465634</updated>
|
||||||
|
</task>
|
||||||
|
<option name="localTasksCounter" value="16" />
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="TypeScriptGeneratedFilesManager">
|
<component name="TypeScriptGeneratedFilesManager">
|
||||||
@ -398,13 +421,18 @@
|
|||||||
<MESSAGE value="going to pytorch on conda eve" />
|
<MESSAGE value="going to pytorch on conda eve" />
|
||||||
<MESSAGE value="add coder.py" />
|
<MESSAGE value="add coder.py" />
|
||||||
<MESSAGE value="detecting digits" />
|
<MESSAGE value="detecting digits" />
|
||||||
<option name="LAST_COMMIT_MESSAGE" value="detecting digits" />
|
<MESSAGE value="img is cropped and transformed to torch" />
|
||||||
|
<option name="LAST_COMMIT_MESSAGE" value="img is cropped and transformed to torch" />
|
||||||
</component>
|
</component>
|
||||||
<component name="WindowStateProjectService">
|
<component name="WindowStateProjectService">
|
||||||
<state x="115" y="162" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog" timestamp="1589923610328">
|
<state x="115" y="162" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog" timestamp="1590956217731">
|
||||||
<screen x="0" y="0" width="1536" height="824" />
|
<screen x="0" y="0" width="1536" height="824" />
|
||||||
</state>
|
</state>
|
||||||
<state x="115" y="162" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog/0.0.1536.824@0.0.1536.824" timestamp="1589923610328" />
|
<state x="115" y="162" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog/0.0.1536.824@0.0.1536.824" timestamp="1590956217731" />
|
||||||
|
<state x="549" y="167" key="FileChooserDialogImpl" timestamp="1590962272315">
|
||||||
|
<screen x="0" y="0" width="1536" height="824" />
|
||||||
|
</state>
|
||||||
|
<state x="549" y="167" key="FileChooserDialogImpl/0.0.1536.824@0.0.1536.824" timestamp="1590962272315" />
|
||||||
<state width="1493" height="208" key="GridCell.Tab.0.bottom" timestamp="1589845242796">
|
<state width="1493" height="208" key="GridCell.Tab.0.bottom" timestamp="1589845242796">
|
||||||
<screen x="0" y="0" width="1536" height="824" />
|
<screen x="0" y="0" width="1536" height="824" />
|
||||||
</state>
|
</state>
|
||||||
@ -425,10 +453,10 @@
|
|||||||
<screen x="0" y="0" width="1536" height="824" />
|
<screen x="0" y="0" width="1536" height="824" />
|
||||||
</state>
|
</state>
|
||||||
<state x="277" y="57" key="SettingsEditor/0.0.1536.824@0.0.1536.824" timestamp="1590443566792" />
|
<state x="277" y="57" key="SettingsEditor/0.0.1536.824@0.0.1536.824" timestamp="1590443566792" />
|
||||||
<state x="361" y="145" key="Vcs.Push.Dialog.v2" timestamp="1590846777672">
|
<state x="361" y="145" key="Vcs.Push.Dialog.v2" timestamp="1590938471243">
|
||||||
<screen x="0" y="0" width="1536" height="824" />
|
<screen x="0" y="0" width="1536" height="824" />
|
||||||
</state>
|
</state>
|
||||||
<state x="361" y="145" key="Vcs.Push.Dialog.v2/0.0.1536.824@0.0.1536.824" timestamp="1590846777672" />
|
<state x="361" y="145" key="Vcs.Push.Dialog.v2/0.0.1536.824@0.0.1536.824" timestamp="1590938471243" />
|
||||||
<state x="54" y="145" width="672" height="678" key="search.everywhere.popup" timestamp="1590930912296">
|
<state x="54" y="145" width="672" height="678" key="search.everywhere.popup" timestamp="1590930912296">
|
||||||
<screen x="0" y="0" width="1536" height="824" />
|
<screen x="0" y="0" width="1536" height="824" />
|
||||||
</state>
|
</state>
|
||||||
|
BIN
coder/517.png
Normal file
After Width: | Height: | Size: 11 KiB |
@ -75,6 +75,9 @@ print("\nTraining Time (in minutes) =", (time() - time0) / 60)
|
|||||||
|
|
||||||
images, labels = next(iter(val_loader))
|
images, labels = next(iter(val_loader))
|
||||||
img = images[0].view(1, 784)
|
img = images[0].view(1, 784)
|
||||||
|
print(type(img))
|
||||||
|
print(img.size())
|
||||||
|
|
||||||
with torch.no_grad():
|
with torch.no_grad():
|
||||||
logps = model(img)
|
logps = model(img)
|
||||||
ps = torch.exp(logps)
|
ps = torch.exp(logps)
|
||||||
|
BIN
coder/ll.png
Before Width: | Height: | Size: 14 KiB |
@ -1,17 +1,19 @@
|
|||||||
import numpy as np
|
|
||||||
import argparse
|
|
||||||
import imutils
|
|
||||||
import cv2
|
import cv2
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
import torch
|
import torch
|
||||||
from matplotlib import cm
|
from PIL.Image import Image
|
||||||
from torch import nn
|
from torch import nn
|
||||||
from PIL import Image
|
|
||||||
from skimage.feature import hog
|
|
||||||
from torchvision.transforms import transforms
|
from torchvision.transforms import transforms
|
||||||
|
|
||||||
|
def white_bg_square(img):
|
||||||
|
"return a white-background-color image having the img in exact center"
|
||||||
|
size = (max(img.size),)*2
|
||||||
|
layer = Image.new('RGB', size, (255, 255, 255))
|
||||||
|
layer.paste(img, tuple(map(lambda x:(x[0]-x[1])/2, zip(size, img.size))))
|
||||||
|
return layer
|
||||||
|
|
||||||
code = []
|
code = []
|
||||||
path = "test1.jpg"
|
path = "test5.jpg"
|
||||||
|
|
||||||
transform = transforms.Compose([transforms.ToTensor(),
|
transform = transforms.Compose([transforms.ToTensor(),
|
||||||
transforms.Normalize((0.5,), (0.5,)),
|
transforms.Normalize((0.5,), (0.5,)),
|
||||||
@ -45,27 +47,19 @@ model.eval()
|
|||||||
|
|
||||||
for rect in rects:
|
for rect in rects:
|
||||||
# Crop image
|
# Crop image
|
||||||
crop_img = img[rect[1]:rect[1] + rect[3], rect[0]:rect[0] + rect[2]]
|
crop_img = img[rect[1]:rect[1] + rect[3] + 10, rect[0]:rect[0] + rect[2] + 10, 0]
|
||||||
plt.imshow(crop_img)
|
|
||||||
plt.show()
|
|
||||||
|
|
||||||
# Resize the image
|
# Resize the image
|
||||||
roi = cv2.resize(crop_img, (28, 28), interpolation=cv2.INTER_AREA)
|
roi = cv2.resize(crop_img, (28, 28), interpolation=cv2.INTER_LINEAR)
|
||||||
|
roi = cv2.dilate(roi, (3, 3))
|
||||||
plt.imshow(roi)
|
plt.imshow(roi)
|
||||||
plt.show()
|
plt.show()
|
||||||
im = Image.fromarray(roi)
|
im = transform(roi)
|
||||||
|
im = im.view(1, 784)
|
||||||
im = transform(im)
|
|
||||||
print(im)
|
|
||||||
plt.imshow(im)
|
|
||||||
plt.show()
|
|
||||||
|
|
||||||
with torch.no_grad():
|
with torch.no_grad():
|
||||||
logps = model(im)
|
logps = model(im.float())
|
||||||
ps = torch.exp(logps)
|
ps = torch.exp(logps)
|
||||||
print(ps[0])
|
|
||||||
probab = list(ps.numpy()[0])
|
probab = list(ps.numpy()[0])
|
||||||
print("Predicted Digit =", probab.index(max(probab)))
|
print("Predicted Digit =", probab.index(max(probab)))
|
||||||
|
|
||||||
cv2.imshow("Resulting Image with Rectangular ROIs", img)
|
cv2.imshow("Code", img)
|
||||||
cv2.waitKey()
|
cv2.waitKey()
|
BIN
coder/test.jpg
Before Width: | Height: | Size: 7.7 KiB |
BIN
coder/test1.jpg
Before Width: | Height: | Size: 17 KiB |
BIN
coder/test1.png
Normal file
After Width: | Height: | Size: 6.3 KiB |
BIN
coder/test2.png
Normal file
After Width: | Height: | Size: 9.9 KiB |
BIN
coder/test3.png
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 6.9 KiB |
BIN
coder/test5.png
Before Width: | Height: | Size: 7.6 KiB |
BIN
coder/test9.png
Before Width: | Height: | Size: 8.7 KiB |
BIN
coder/testno.png
Before Width: | Height: | Size: 1.7 KiB |
@ -1,30 +0,0 @@
|
|||||||
import matplotlib.pyplot as plt
|
|
||||||
import numpy as np
|
|
||||||
from numpy import asarray
|
|
||||||
import pygame
|
|
||||||
from sklearn import datasets
|
|
||||||
from sklearn.neural_network import MLPClassifier
|
|
||||||
from sklearn.metrics import accuracy_score
|
|
||||||
from PIL import Image
|
|
||||||
|
|
||||||
|
|
||||||
# recznie napisane cyfry
|
|
||||||
digits = datasets.load_digits()
|
|
||||||
|
|
||||||
y = digits.target
|
|
||||||
x = digits.images.reshape((len(digits.images), -1))
|
|
||||||
|
|
||||||
x_train = x[:1000000]
|
|
||||||
y_train = y[:1000000]
|
|
||||||
x_test = x[1000:]
|
|
||||||
y_test = y[1000:]
|
|
||||||
|
|
||||||
mlp = MLPClassifier(hidden_layer_sizes=(15,), activation='logistic', alpha=1e-4,
|
|
||||||
solver='sgd', tol=1e-4, random_state=1,
|
|
||||||
learning_rate_init=.1, verbose=True)
|
|
||||||
|
|
||||||
mlp.fit(x_train, y_train)
|
|
||||||
|
|
||||||
predictions = mlp.predict(x_test)
|
|
||||||
print(accuracy_score(y_test, predictions))
|
|
||||||
print(x_test[1])
|
|