consolidate all repos to one for archive

This commit is contained in:
2025-01-28 13:46:42 +01:00
commit a6610fbc7a
5350 changed files with 2705721 additions and 0 deletions

View File

@@ -0,0 +1,129 @@
import cv2
import numpy as np
import matplotlib.pyplot as plt
from skimage.feature import hog
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn import svm
from sklearn import tree
import pickle
import os
def lbp(image):
height, width = image.shape[:2]
lbp_image = np.zeros_like(image, dtype=np.uint8)
for y in range(1, height-1):
for x in range(1, width-1):
center = image[y, x]
code = 0
# Compare the pixel values of the neighborhood with the center pixel
code |= (image[y-1, x-1] > center) << 7
code |= (image[y-1, x] > center) << 6
code |= (image[y-1, x+1] > center) << 5
code |= (image[y, x+1] > center) << 4
code |= (image[y+1, x+1] > center) << 3
code |= (image[y+1, x] > center) << 2
code |= (image[y+1, x-1] > center) << 1
code |= (image[y, x-1] > center) << 0
lbp_image[y, x] = code
return lbp_image
def load_data(pictures, marks):
pictures = np.load(pictures)
marks = np.load(marks)
return pictures, marks
def get_data(folder_path):
img_data = []
marks = []
i = 0
for root, dirs, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
if 'c' in file_path:
marks.append(1)
else:
marks.append(0)
img = cv2.imread(file_path)
img = cv2.resize(img, (100, 100))
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
lbpHist = cv2.calcHist([lbp(gray)], [0], None, [256], [0, 256])
lbpHist = lbpHist.astype(np.float64)
lbpHist = lbpHist.flatten()
hogFeatures = hog(gray, orientations=9, pixels_per_cell=(10, 10), cells_per_block=(2, 2), block_norm='L2-Hys')
features = np.concatenate((lbpHist, hogFeatures), axis=0)
img_data.append(features)
print(i)
i += 1
img_data = np.array(img_data)
marks = np.array(marks)
return img_data, marks
def save_data(img_data, marks, img_data_path, marks_data_path):
np.save(img_data_path, img_data)
np.save(marks_data_path, marks)
def train_and_save_model(img_data, marks):
#---------------------KNN-------------------
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(img_data, marks)
knnPickle = open('Models\\knn.bin', 'wb')
pickle.dump(knn, knnPickle)
knnPickle.close()
#------------------SVM----------------------
svmM = svm.SVC()
svmM.fit(img_data, marks)
svmPickle = open('Models\\svm.bin', 'wb')
pickle.dump(svmM, svmPickle)
svmPickle.close()
#------------------DT----------------------
dt = tree.DecisionTreeClassifier()
dt.fit(img_data, marks)
dtPickle = open('Models\\dt.bin', 'wb')
pickle.dump(dt, dtPickle)
dtPickle.close()
def load_model():
#---------------------KNN-------------------
knnPickle = open('Models\\knn.bin', 'rb')
knn = pickle.load(knnPickle)
knnPickle.close()
#------------------SVM----------------------
svmPickle = open('Models\\svm.bin', 'rb')
svm = pickle.load(svmPickle)
svmPickle.close()
#------------------DT----------------------
dtPickle = open('Models\\dt.bin', 'rb')
dt = pickle.load(dtPickle)
dtPickle.close()
return knn, svm, dt

View File

@@ -0,0 +1,54 @@
import cv2
import numpy as np
import matplotlib.pyplot as plt
from skimage.feature import hog
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn import svm
from sklearn import tree
import pickle
from implement import train_and_save_model, save_data, get_data, load_data, load_model
print("Test")
img_data_path = "Data\\test_img_data.npy"
marks_data_path = "Data\\test_marks.npy"
train_baza_path = "Baza\\Pet100"
print("Loading data")
if False:
img_data, marks = get_data(train_baza_path)
save_data(img_data, marks, img_data_path, marks_data_path)
else:
img_data, marks = load_data(img_data_path, marks_data_path)
print("Loding model")
knn, svm, dt = load_model()
print("Calculating predictions")
knn_pred = knn.predict(img_data)
svm_pred = svm.predict(img_data)
dt_pred = dt.predict(img_data)
predictions = []
for i in range(len(knn_pred)):
if knn_pred[i] == svm_pred[i] == dt_pred[i]:
predictions.append(knn_pred[i])
elif knn_pred[i] == svm_pred[i]:
predictions.append(knn_pred[i])
elif knn_pred[i] == dt_pred[i]:
predictions.append(knn_pred[i])
elif svm_pred[i] == dt_pred[i]:
predictions.append(svm_pred[i])
predictions = np.array(predictions)
print("KNN: ", accuracy_score(marks, knn_pred))
print("SVM: ", accuracy_score(marks, svm_pred))
print("DT: ", accuracy_score(marks, dt_pred))
print("Accuracy: ", accuracy_score(marks, predictions))
print("End")

View File

@@ -0,0 +1,31 @@
import cv2
import numpy as np
import matplotlib.pyplot as plt
from skimage.feature import hog
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn import svm
from sklearn import tree
import pickle
from implement import train_and_save_model, save_data, get_data, load_data
print("Train")
img_data_path = "Data\\train_img_data.npy"
marks_data_path = "Data\\train_marks.npy"
train_baza_path = "Baza\\Pet1000"
print("loading data")
if False:
img_data, marks = get_data(train_baza_path)
save_data(img_data, marks, img_data_path, marks_data_path)
else:
img_data, marks = load_data(img_data_path, marks_data_path)
print("Training")
train_and_save_model(img_data, marks)
print("End")