kod dziala - nie wiem tylko czy na pewno z dobrymi procentami

This commit is contained in:
Bowske 2020-05-17 18:51:04 +02:00
parent e3787aaa6e
commit c0b52698a7
18 changed files with 397 additions and 287 deletions

19
find.py Normal file
View File

@ -0,0 +1,19 @@
import torch
import cv2
import torchvision
import torch.nn as nn
import torch.nn.functional as F
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
import numpy as np
import torch.optim as optim
from PIL import Image
import os
for filename in os.listdir('./resources/smieci/plastic'):
img = Image.open('./resources/smieci/plastic/'+filename)
pil_to_tensor = transforms.ToTensor()(img).unsqueeze_(0)
if(str(pil_to_tensor.shape[1]) == '1'):
print(filename)

497
game.py
View File

@ -14,13 +14,13 @@ smieci_path = ''
smieci_w_kontenerach = "resources/smieci w kontenerach" smieci_w_kontenerach = "resources/smieci w kontenerach"
# PODAJ OSOBE PRZED URUCHOMIENIEM (kacper/adamB/adamO) # PODAJ OSOBE PRZED URUCHOMIENIEM (kacper/adamB/adamO)
osoba = 'kacper' osoba = 'adamB'
rfc = None rfc = None
if osoba == 'kacper': if osoba == 'kacper':
smieci_path = 'resources/smieci' smieci_path = 'resources/smieci'
elif osoba == 'adamB': elif osoba == 'adamB':
smieci_path = 'resources/smieci_stare' smieci_path = 'resources/smieci'
else: else:
smieci_path = 'resources/smieci_stare' smieci_path = 'resources/smieci_stare'
rfc = adamO.rozpocznijUczenie() rfc = adamO.rozpocznijUczenie()
@ -50,283 +50,284 @@ ILOSC_KOLUMN = 15
WINDOW_SIZE = [1300, 980] WINDOW_SIZE = [1300, 980]
# def game(): def game():
# obiekty = utworzObiekty() obiekty = utworzObiekty()
# nieodwiedzone_domy = obiekty["wspolrzedne_domow"] nieodwiedzone_domy = obiekty["wspolrzedne_domow"]
# nieodwiedzone_kontenery = [(obiekty["kontener_szklo"].x, obiekty["kontener_szklo"].y), nieodwiedzone_kontenery = [(obiekty["kontener_szklo"].x, obiekty["kontener_szklo"].y),
# (obiekty["kontener_papier"].x, (obiekty["kontener_papier"].x,
# obiekty["kontener_papier"].y), obiekty["kontener_papier"].y),
# (obiekty["kontener_metal"].x, (obiekty["kontener_metal"].x,
# obiekty["kontener_metal"].y), obiekty["kontener_metal"].y),
# (obiekty["kontener_plastik"].x, obiekty["kontener_plastik"].y), ] (obiekty["kontener_plastik"].x, obiekty["kontener_plastik"].y), ]
# # Petla az uzytkownik zamknie program # Petla az uzytkownik zamknie program
# done = False done = False
# clock = pygame.time.Clock() clock = pygame.time.Clock()
# # -------- Glowna petla programu ----------- # -------- Glowna petla programu -----------
# while not done: while not done:
# # obsluga zdarzen typu nacisniecie klawisza lub przycisku myszy # obsluga zdarzen typu nacisniecie klawisza lub przycisku myszy
# for event in pygame.event.get(): for event in pygame.event.get():
# if event.type == pygame.QUIT: if event.type == pygame.QUIT:
# done = True done = True
# elif event.type == pygame.MOUSEBUTTONDOWN: elif event.type == pygame.MOUSEBUTTONDOWN:
# # Zapisywanie pozycji myszki po kliknieciu # Zapisywanie pozycji myszki po kliknieciu
# pozycja_myszki = pygame.mouse.get_pos() pozycja_myszki = pygame.mouse.get_pos()
# # Zamiana pozycji na konkretne koordy # Zamiana pozycji na konkretne koordy
# kolumna = pozycja_myszki[0] // (WIDTH + MARGIN) kolumna = pozycja_myszki[0] // (WIDTH + MARGIN)
# wiersz = pozycja_myszki[1] // (HEIGHT + MARGIN) wiersz = pozycja_myszki[1] // (HEIGHT + MARGIN)
# print("Click ", pozycja_myszki, print("Click ", pozycja_myszki,
# "Grid coordinates: ", wiersz, kolumna) "Grid coordinates: ", wiersz, kolumna)
# elif event.type == pygame.KEYDOWN: elif event.type == pygame.KEYDOWN:
# if event.key == pygame.K_LEFT: if event.key == pygame.K_LEFT:
# obiekty["smieciarka"].w_lewo() obiekty["smieciarka"].w_lewo()
# if event.key == pygame.K_RIGHT: if event.key == pygame.K_RIGHT:
# # kacper.trainModel() # kacper.trainModel()
# obiekty["smieciarka"].w_prawo() obiekty["smieciarka"].w_prawo()
# if event.key == pygame.K_UP: if event.key == pygame.K_UP:
# obiekty["smieciarka"].w_gore() obiekty["smieciarka"].w_gore()
# if event.key == pygame.K_DOWN: if event.key == pygame.K_DOWN:
# obiekty["smieciarka"].w_dol() obiekty["smieciarka"].w_dol()
# rysowaniePlanszy(obiekty) rysowaniePlanszy(obiekty)
# while nieodwiedzone_domy: while nieodwiedzone_domy:
# nieodwiedzone_domy.sort( nieodwiedzone_domy.sort(
# key=lambda x: astar.heurystyka((obiekty["smieciarka"].x, obiekty["smieciarka"].y), x)) key=lambda x: astar.heurystyka((obiekty["smieciarka"].x, obiekty["smieciarka"].y), x))
# cel = nieodwiedzone_domy.pop(0) cel = nieodwiedzone_domy.pop(0)
# obiekty["smieciarka"].astar_move( obiekty["smieciarka"].astar_move(
# obiekty, (obiekty["smieciarka"].x, obiekty["smieciarka"].y), cel) obiekty, (obiekty["smieciarka"].x, obiekty["smieciarka"].y), cel)
# pozX = cel[0] pozX = cel[0]
# pozY = cel[1] pozY = cel[1]
# for dom in obiekty["domy"]: for dom in obiekty["domy"]:
# if dom.x == pozX and dom.y == pozY: if dom.x == pozX and dom.y == pozY:
# while dom.smieci: while dom.smieci:
# smiec = dom.smieci.pop(0) smiec = dom.smieci.pop(0)
# rodzaj = "" rodzaj = ""
# if osoba == 'kacper': if osoba == 'kacper':
# rodzaj = kacper.przewidz(smiec) rodzaj = kacper.przewidz(smiec)
# elif osoba == 'adamB': elif osoba == 'adamB':
# pass rodzaj = adamB.predict(smiec)
# else: # rodzaj = kacper.przewidz(smiec)
# rodzaj = adamO.przewidz(smiec, rfc) else:
rodzaj = adamO.przewidz(smiec, rfc)
# if rodzaj == "paper": if rodzaj == "paper":
# obiekty["smieciarka"].dodajPapier(smiec) obiekty["smieciarka"].dodajPapier(smiec)
# elif rodzaj == "glass": elif rodzaj == "glass":
# obiekty["smieciarka"].dodajSzklo(smiec) obiekty["smieciarka"].dodajSzklo(smiec)
# elif rodzaj == "metal": elif rodzaj == "metal":
# obiekty["smieciarka"].dodajMetal(smiec) obiekty["smieciarka"].dodajMetal(smiec)
# elif rodzaj == "plastic": elif rodzaj == "plastic":
# obiekty["smieciarka"].dodajPlastik(smiec) obiekty["smieciarka"].dodajPlastik(smiec)
# while nieodwiedzone_kontenery: while nieodwiedzone_kontenery:
# nieodwiedzone_kontenery.sort( nieodwiedzone_kontenery.sort(
# key=lambda x: astar.heurystyka((obiekty["smieciarka"].x, obiekty["smieciarka"].y), x)) key=lambda x: astar.heurystyka((obiekty["smieciarka"].x, obiekty["smieciarka"].y), x))
# cel = nieodwiedzone_kontenery.pop(0) cel = nieodwiedzone_kontenery.pop(0)
# obiekty["smieciarka"].astar_move( obiekty["smieciarka"].astar_move(
# obiekty, (obiekty["smieciarka"].x, obiekty["smieciarka"].y), cel) obiekty, (obiekty["smieciarka"].x, obiekty["smieciarka"].y), cel)
# pozX = cel[0] pozX = cel[0]
# pozY = cel[1] pozY = cel[1]
# if obiekty["plansza"][pozX, pozY].obiekt == obiekty["kontener_papier"]: if obiekty["plansza"][pozX, pozY].obiekt == obiekty["kontener_papier"]:
# while obiekty["smieciarka"].papier: while obiekty["smieciarka"].papier:
# smiec = obiekty["smieciarka"].papier.pop(0) smiec = obiekty["smieciarka"].papier.pop(0)
# obiekty["kontener_papier"].dodajSmiec(smiec) obiekty["kontener_papier"].dodajSmiec(smiec)
# elif obiekty["plansza"][pozX, pozY].obiekt == obiekty["kontener_szklo"]: elif obiekty["plansza"][pozX, pozY].obiekt == obiekty["kontener_szklo"]:
# while obiekty["smieciarka"].szklo: while obiekty["smieciarka"].szklo:
# smiec = obiekty["smieciarka"].szklo.pop(0) smiec = obiekty["smieciarka"].szklo.pop(0)
# obiekty["kontener_szklo"].dodajSmiec(smiec) obiekty["kontener_szklo"].dodajSmiec(smiec)
# elif obiekty["plansza"][pozX, pozY].obiekt == obiekty["kontener_metal"]: elif obiekty["plansza"][pozX, pozY].obiekt == obiekty["kontener_metal"]:
# while obiekty["smieciarka"].metal: while obiekty["smieciarka"].metal:
# smiec = obiekty["smieciarka"].metal.pop(0) smiec = obiekty["smieciarka"].metal.pop(0)
# obiekty["kontener_metal"].dodajSmiec(smiec) obiekty["kontener_metal"].dodajSmiec(smiec)
# elif obiekty["plansza"][pozX, pozY].obiekt == obiekty["kontener_plastik"]: elif obiekty["plansza"][pozX, pozY].obiekt == obiekty["kontener_plastik"]:
# while obiekty["smieciarka"].plastik: while obiekty["smieciarka"].plastik:
# smiec = obiekty["smieciarka"].plastik.pop(0) smiec = obiekty["smieciarka"].plastik.pop(0)
# obiekty["kontener_plastik"].dodajSmiec(smiec) obiekty["kontener_plastik"].dodajSmiec(smiec)
# clock.tick(7) clock.tick(7)
# pygame.quit() pygame.quit()
# return rfc return rfc
# def rysowaniePlanszy(obiekty): def rysowaniePlanszy(obiekty):
# obiekty["obraz"].fill(BLACK) obiekty["obraz"].fill(BLACK)
# # rysowanie planszy # rysowanie planszy
# for i in range(ILOSC_WIERSZY): for i in range(ILOSC_WIERSZY):
# for j in range(ILOSC_KOLUMN): for j in range(ILOSC_KOLUMN):
# pygame.draw.rect(obiekty["obraz"], pygame.draw.rect(obiekty["obraz"],
# obiekty["plansza"][i, j].kolor, obiekty["plansza"][i, j].kolor,
# [(MARGIN + WIDTH) * obiekty["plansza"][i, j].pozY + MARGIN, [(MARGIN + WIDTH) * obiekty["plansza"][i, j].pozY + MARGIN,
# (MARGIN + HEIGHT) * (MARGIN + HEIGHT) *
# obiekty["plansza"][i, j].pozX + MARGIN, obiekty["plansza"][i, j].pozX + MARGIN,
# WIDTH, WIDTH,
# HEIGHT]) HEIGHT])
# obiekty["obraz"].blit(pygame.image.load( obiekty["obraz"].blit(pygame.image.load(
# "resources/plansza/wysypisko.jpg"), (5, 5)) "resources/plansza/wysypisko.jpg"), (5, 5))
# obiekty["obraz"].blit(pygame.image.load( obiekty["obraz"].blit(pygame.image.load(
# "resources/plansza/jezioro.png"), (395, 655)) "resources/plansza/jezioro.png"), (395, 655))
# obiekty["plansza"][6, 10].setJestPrzeszkoda(True) obiekty["plansza"][6, 10].setJestPrzeszkoda(True)
# obiekty["plansza"][6, 11].setJestPrzeszkoda(True) obiekty["plansza"][6, 11].setJestPrzeszkoda(True)
# obiekty["plansza"][7, 10].setJestPrzeszkoda(True) obiekty["plansza"][7, 10].setJestPrzeszkoda(True)
# obiekty["plansza"][7, 11].setJestPrzeszkoda(True) obiekty["plansza"][7, 11].setJestPrzeszkoda(True)
# obiekty["sprajty"].draw(obiekty["obraz"]) obiekty["sprajty"].draw(obiekty["obraz"])
# text_metal, text_papier, text_plastik, text_szklo, text_pozostale, text_odwiedzone_domy = liczSmieci( text_metal, text_papier, text_plastik, text_szklo, text_pozostale, text_odwiedzone_domy = liczSmieci(
# obiekty["domy"], obiekty) obiekty["domy"], obiekty)
# obiekty["obraz"].blit(obiekty["text_pozostalo"], obiekty["obraz"].blit(obiekty["text_pozostalo"],
# (1020, 240)) (1020, 240))
# obiekty["obraz"].blit(text_metal, (1020, 280)) obiekty["obraz"].blit(text_metal, (1020, 280))
# obiekty["obraz"].blit(text_plastik, (1020, 320)) obiekty["obraz"].blit(text_plastik, (1020, 320))
# obiekty["obraz"].blit(text_szklo, (1020, 360)) obiekty["obraz"].blit(text_szklo, (1020, 360))
# obiekty["obraz"].blit(text_papier, (1020, 400)) obiekty["obraz"].blit(text_papier, (1020, 400))
# # obiekty["obraz"].blit(text_pozostale, (1020, 440)) # obiekty["obraz"].blit(text_pozostale, (1020, 440))
# obiekty["obraz"].blit(text_odwiedzone_domy, (1020, 480)) obiekty["obraz"].blit(text_odwiedzone_domy, (1020, 480))
# pygame.display.update() pygame.display.update()
# def utworzObiekty(): def utworzObiekty():
# # Tworzenie planszy i kratek # Tworzenie planszy i kratek
# plansza = np.array([[modele.Kratka(i, j) for i in range(ILOSC_KOLUMN)] plansza = np.array([[modele.Kratka(i, j) for i in range(ILOSC_KOLUMN)]
# for j in range(ILOSC_WIERSZY)]) for j in range(ILOSC_WIERSZY)])
# all_sprites_list = pygame.sprite.Group() all_sprites_list = pygame.sprite.Group()
# # smieciarka # smieciarka
# smieciarka = modele.Smieciarka(10, 10) smieciarka = modele.Smieciarka(10, 10)
# plansza[10, 10].setKolor(BLUE) plansza[10, 10].setKolor(BLUE)
# plansza[10, 10].setObiekt(smieciarka) plansza[10, 10].setObiekt(smieciarka)
# # tworzenie wyswietlanego okna # tworzenie wyswietlanego okna
# os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (0, 30) os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (0, 30)
# obraz = pygame.display.set_mode(WINDOW_SIZE) obraz = pygame.display.set_mode(WINDOW_SIZE)
# smieciarka.setObraz(obraz) smieciarka.setObraz(obraz)
# pygame.display.set_caption("Inteligentna śmieciarka") pygame.display.set_caption("Inteligentna śmieciarka")
# # kontenery # kontenery
# if not os.path.exists(smieci_w_kontenerach): if not os.path.exists(smieci_w_kontenerach):
# os.makedirs(smieci_w_kontenerach) os.makedirs(smieci_w_kontenerach)
# else: else:
# for dir in os.listdir(os.getcwd() + "/" + smieci_w_kontenerach): for dir in os.listdir(os.getcwd() + "/" + smieci_w_kontenerach):
# files = os.listdir(os.getcwd() + "/" + files = os.listdir(os.getcwd() + "/" +
# smieci_w_kontenerach + "/" + dir) smieci_w_kontenerach + "/" + dir)
# for file in files: for file in files:
# os.remove(os.getcwd() + "/" + os.remove(os.getcwd() + "/" +
# smieci_w_kontenerach + "/" + dir + "/" + file) smieci_w_kontenerach + "/" + dir + "/" + file)
# kontener_szklo = modele.Kontener(4, 4, "glass") kontener_szklo = modele.Kontener(4, 4, "glass")
# kontener_szklo.setImage(pygame.image.load( kontener_szklo.setImage(pygame.image.load(
# "resources/plansza/pojemnik_szklo.png")) "resources/plansza/pojemnik_szklo.png"))
# plansza[4, 4].setJestKontenerem(True) plansza[4, 4].setJestKontenerem(True)
# plansza[4, 4].setObiekt(kontener_szklo) plansza[4, 4].setObiekt(kontener_szklo)
# kontener_metal = modele.Kontener(0, 4, "metal") kontener_metal = modele.Kontener(0, 4, "metal")
# kontener_metal.setImage(pygame.image.load( kontener_metal.setImage(pygame.image.load(
# "resources/plansza/pojemnik_metal.png")) "resources/plansza/pojemnik_metal.png"))
# plansza[0, 4].setJestKontenerem(True) plansza[0, 4].setJestKontenerem(True)
# plansza[0, 4].setObiekt(kontener_metal) plansza[0, 4].setObiekt(kontener_metal)
# kontener_papier = modele.Kontener(4, 0, "paper") kontener_papier = modele.Kontener(4, 0, "paper")
# kontener_papier.setImage(pygame.image.load( kontener_papier.setImage(pygame.image.load(
# "resources/plansza/pojemnik_papier.png")) "resources/plansza/pojemnik_papier.png"))
# plansza[4, 0].setJestKontenerem(True) plansza[4, 0].setJestKontenerem(True)
# plansza[4, 0].setObiekt(kontener_papier) plansza[4, 0].setObiekt(kontener_papier)
# kontener_plastik = modele.Kontener(0, 0, "plastic") kontener_plastik = modele.Kontener(0, 0, "plastic")
# kontener_plastik.setImage(pygame.image.load( kontener_plastik.setImage(pygame.image.load(
# "resources/plansza/pojemnik_plastik.png")) "resources/plansza/pojemnik_plastik.png"))
# plansza[0, 0].setJestKontenerem(True) plansza[0, 0].setJestKontenerem(True)
# plansza[0, 0].setObiekt(kontener_plastik) plansza[0, 0].setObiekt(kontener_plastik)
# # domy # domy
# doms_array = ['resources/plansza/domy/dom1.png', 'resources/plansza/domy/dom2.png', doms_array = ['resources/plansza/domy/dom1.png', 'resources/plansza/domy/dom2.png',
# 'resources/plansza/domy/dom3.png', 'resources/plansza/domy/dom4.png', 'resources/plansza/domy/dom3.png', 'resources/plansza/domy/dom4.png',
# 'resources/plansza/domy/dom5.png'] 'resources/plansza/domy/dom5.png']
# domy_lista = pygame.sprite.Group() domy_lista = pygame.sprite.Group()
# smieci_lista = [os.path.join(path, filename) smieci_lista = [os.path.join(path, filename)
# for path, dirs, files in os.walk(smieci_path) for path, dirs, files in os.walk(smieci_path)
# for filename in files] for filename in files]
# # informacje o ilosci smieci w domach # informacje o ilosci smieci w domach
# font = pygame.font.SysFont("arial", 20, bold=True) font = pygame.font.SysFont("arial", 20, bold=True)
# text_pozostalo = font.render("Pozostało śmieci w domach:", True, WHITE) text_pozostalo = font.render("Pozostało śmieci w domach:", True, WHITE)
# wspolrzedne_domow = modele.generujWspolrzedneDomow(10) wspolrzedne_domow = modele.generujWspolrzedneDomow(10)
# for i in range(len(wspolrzedne_domow)): for i in range(len(wspolrzedne_domow)):
# dom = modele.Dom(wspolrzedne_domow[i][0], wspolrzedne_domow[i][1]) dom = modele.Dom(wspolrzedne_domow[i][0], wspolrzedne_domow[i][1])
# dom.setImage(pygame.image.load(random.choice(doms_array))) dom.setImage(pygame.image.load(random.choice(doms_array)))
# plansza[wspolrzedne_domow[i][0], plansza[wspolrzedne_domow[i][0],
# wspolrzedne_domow[i][1]].setJestDomem(True) wspolrzedne_domow[i][1]].setJestDomem(True)
# plansza[wspolrzedne_domow[i][0], plansza[wspolrzedne_domow[i][0],
# wspolrzedne_domow[i][1]].setObiekt(dom) wspolrzedne_domow[i][1]].setObiekt(dom)
# domy_lista.add(dom) domy_lista.add(dom)
# all_sprites_list.add(dom) all_sprites_list.add(dom)
# lista_domow = domy_lista.sprites() lista_domow = domy_lista.sprites()
# for d in lista_domow: for d in lista_domow:
# for j in range(5): for j in range(5):
# smiec = random.choice(smieci_lista) smiec = random.choice(smieci_lista)
# d.dodajSmiec(smiec) d.dodajSmiec(smiec)
# # ustawienie wysypiska, rozmiar wysypiska 5x5 # ustawienie wysypiska, rozmiar wysypiska 5x5
# for i in range(5): for i in range(5):
# for j in range(5): for j in range(5):
# plansza[i, j].setJestWysypiskiem(True) plansza[i, j].setJestWysypiskiem(True)
# all_sprites_list.add(kontener_plastik, kontener_metal, kontener_papier, kontener_szklo, all_sprites_list.add(kontener_plastik, kontener_metal, kontener_papier, kontener_szklo,
# smieciarka) smieciarka)
# obiekty = { obiekty = {
# "plansza": plansza, "plansza": plansza,
# "smieciarka": smieciarka, "smieciarka": smieciarka,
# "obraz": obraz, "obraz": obraz,
# "kontener_plastik": kontener_plastik, "kontener_plastik": kontener_plastik,
# "kontener_szklo": kontener_szklo, "kontener_szklo": kontener_szklo,
# "kontener_metal": kontener_metal, "kontener_metal": kontener_metal,
# "kontener_papier": kontener_papier, "kontener_papier": kontener_papier,
# "sprajty": all_sprites_list, "sprajty": all_sprites_list,
# "domy": lista_domow, "domy": lista_domow,
# "smieci": smieci_lista, "smieci": smieci_lista,
# "font": font, "font": font,
# "text_pozostalo": text_pozostalo, "text_pozostalo": text_pozostalo,
# "wspolrzedne_domow": wspolrzedne_domow "wspolrzedne_domow": wspolrzedne_domow
# } }
# smieciarka.setObiekty(obiekty) smieciarka.setObiekty(obiekty)
# smieciarka.setPlansza(plansza) smieciarka.setPlansza(plansza)
# return obiekty return obiekty
# def liczSmieci(domy, obiekty): def liczSmieci(domy, obiekty):
# ile_metalu = 0 ile_metalu = 0
# ile_szkla = 0 ile_szkla = 0
# ile_papieru = 0 ile_papieru = 0
# ile_plastiku = 0 ile_plastiku = 0
# ile_pozostalych = 0 ile_pozostalych = 0
# for d in domy: for d in domy:
# for s in d.smieci: for s in d.smieci:
# if "metal" in s: if "metal" in s:
# ile_metalu += 1 ile_metalu += 1
# elif "paper" in s: elif "paper" in s:
# ile_papieru += 1 ile_papieru += 1
# elif "plastic" in s: elif "plastic" in s:
# ile_plastiku += 1 ile_plastiku += 1
# elif "glass" in s: elif "glass" in s:
# ile_szkla += 1 ile_szkla += 1
# text_metal = obiekty["font"].render( text_metal = obiekty["font"].render(
# "Metal: " + str(ile_metalu), True, WHITE) "Metal: " + str(ile_metalu), True, WHITE)
# text_papier = obiekty["font"].render( text_papier = obiekty["font"].render(
# "Papier: " + str(ile_papieru), True, WHITE) "Papier: " + str(ile_papieru), True, WHITE)
# text_plastik = obiekty["font"].render( text_plastik = obiekty["font"].render(
# "Plastik: " + str(ile_plastiku), True, WHITE) "Plastik: " + str(ile_plastiku), True, WHITE)
# text_szklo = obiekty["font"].render( text_szklo = obiekty["font"].render(
# "Szkło: " + str(ile_szkla), True, WHITE) "Szkło: " + str(ile_szkla), True, WHITE)
# text_pozostale = obiekty["font"].render( text_pozostale = obiekty["font"].render(
# "Pozostałe: " + str(ile_pozostalych), True, WHITE) "Pozostałe: " + str(ile_pozostalych), True, WHITE)
# text_odwiedzone_domy = obiekty["font"].render( text_odwiedzone_domy = obiekty["font"].render(
# "Odwiedzone domy: " + str(obiekty["smieciarka"].getOdwiedzoneDomy()), True, WHITE) "Odwiedzone domy: " + str(obiekty["smieciarka"].getOdwiedzoneDomy()), True, WHITE)
# return text_metal, text_papier, text_plastik, text_szklo, text_pozostale, text_odwiedzone_domy return text_metal, text_papier, text_plastik, text_szklo, text_pozostale, text_odwiedzone_domy

View File

@ -4,7 +4,7 @@ import uczenie_adamB
def main(): def main():
uczenie_adamB.Siec() game.game()
if __name__ == '__main__': if __name__ == '__main__':

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

View File

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

View File

@ -1,65 +1,155 @@
import torch import torch
import cv2
import torchvision import torchvision
import torch.nn as nn import torch.nn as nn
import torch.nn.functional as F import torch.nn.functional as F
import torchvision.transforms as transforms import torchvision.transforms as transforms
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import numpy as np import numpy as np
import torch.optim as optim
from PIL import Image
transform = transforms.Compose( transform = transforms.Compose(
[transforms.ToTensor(), [transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]) transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
trainset = torchvision.datasets.ImageFolder(
root='./resources/zbior_uczacy', transform=transform)
trainloader = torch.utils.data.DataLoader(
trainset, batch_size=4, shuffle=True, num_workers=2)
testset = torchvision.datasets.ImageFolder( # def imshow(img):
root='./resources/smieci', transform=transform) # img = img / 2 + 0.5
testloader = torch.utils.data.DataLoader( # npimg = img.numpy()
testset, batch_size=4, shuffle=False, num_workers=2) # plt.imshow(np.transpose(npimg, (1, 2, 0)))
# plt.show()
classes = ('glass', 'metal', 'paper', 'plastic')
def imshow(img): # dataiter = iter(trainloader)
img = img / 2 + 0.5 # images, labels = dataiter.next()
npimg = img.numpy()
plt.imshow(np.transpose(npimg, (1, 2, 0))) # # show images
plt.show() # imshow(torchvision.utils.make_grid(images))
# # print labels
# print(' '.join('%5s' % classes[labels[j]] for j in range(4)))
dataiter = iter(trainloader) class Net(nn.Module):
images, labels = dataiter.next()
# show images
imshow(torchvision.utils.make_grid(images))
# print labels
print(' '.join('%5s' % classes[labels[j]] for j in range(4)))
class Siec(nn.Module):
def __init__(self): def __init__(self):
super(Siec, self).__init__() super(Net, self).__init__()
self.conv1 = nn.Conv2d(1, 6, 3) self.conv1 = nn.Conv2d(3, 6, 5)
self.conv2 = nn.Conv2d(6, 16, 3) self.pool = nn.MaxPool2d(2, 2)
self.fc1 = nn.Linear(16*6*6, 120) self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 71 * 71, 120)
self.fc2 = nn.Linear(120, 84) self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10) self.fc3 = nn.Linear(84, 10)
def forward(self, x): def forward(self, x):
x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2)) x = self.pool(F.relu(self.conv1(x)))
x = F.max_pool2d(F.relu(self.conv2(x)), 2) x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, self.num_flat_features(x)) x = x.view(x.size(0), 16 * 71 * 71)
x = F.relu(self.fc1(x)) x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x)) x = F.relu(self.fc2(x))
x = self.fc3(x) x = self.fc3(x)
return x return x
def num_flat_features(self, x):
size = x.size()[1:] # all dimensions except the batch dimension
num_features = 1 def train():
for s in size: trainset = torchvision.datasets.ImageFolder(
num_features *= s root='./resources/zbior_uczacy', transform=transform)
return num_features trainloader = torch.utils.data.DataLoader(
trainset, batch_size=1, shuffle=True, num_workers=2)
classes = ('glass', 'metal', 'paper', 'plastic')
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)
for epoch in range(10): # loop over the dataset multiple times
print("siema")
running_loss = 0.0
for i, data in enumerate(trainloader, 0):
# get the inputs; data is a list of [inputs, labels]
inputs, labels = data
# zero the parameter gradients
optimizer.zero_grad()
# forward + backward + optimize
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
# print statistics
running_loss += loss.item()
if i: # print every 2000 mini-batches
print('[%d, %5d] loss: %.3f' %
(epoch + 1, i + 1, running_loss))
running_loss = 0.0
print("kyrw")
print('Finished Training')
PATH = './wytrenowaned.pth'
torch.save(net.state_dict(), PATH)
def predict(img_path):
net = Net()
PATH = './wytrenowaned.pth'
img = Image.open(img_path)
pil_to_tensor = transforms.ToTensor()(img).unsqueeze_(0)
if(pil_to_tensor.shape[1] == 1):
print(img_path)
classes = ('glass', 'metal', 'paper', 'plastic')
# testset = torchvision.datasets.ImageFolder(
# root='./resources/smieci', transform=transform)
# testloader = torch.utils.data.DataLoader(
# testset, batch_size=4, shuffle=True, num_workers=2)
# dataiter = iter(testloader)
# images, labels = dataiter.next()
# print images
# imshow(torchvision.utils.make_grid(images))
# print('GroundTruth: ', ' '.join('%5s' %
# classes[labels[j]] for j in range(4)))
# print('---')
# print(images)
# print('---')
net.load_state_dict(torch.load(PATH))
outputs = net(pil_to_tensor)
return classes[torch.max(outputs, 1)[1]]
# print(classes[torch.max(outputs, 1)[1]])
# print('Predicted: ', ' '.join('%5s' % classes[predicted[j]]
# for j in range(1)))
# correct = 0
# total = 0
# with torch.no_grad():
# for data in testloader:
# images, labels = data
# outputs = net(images)
# _, predicted = torch.max(outputs.data, 1)
# total += labels.size(0)
# correct += (predicted == labels).sum().item()
# print('Accuracy of the network on the test images: %d %%' % (
# 100 * correct / total))
# class_correct = list(0. for i in range(4))
# class_total = list(0. for i in range(4))
# with torch.no_grad():
# for data in testloader:
# images, labels = data
# outputs = net(images)
# _, predicted = torch.max(outputs, 1)
# c = (predicted == labels).squeeze()
# for i in range(3):
# label = labels[i]
# print(labels)
# class_correct[label] += c[i].item()
# class_total[label] += 1
# for i in range(4):
# print('Accuracy of %5s : %2d %%' % (
# classes[i], 100 * class_correct[i] / class_total[i]))
# train()

BIN
wytrenowaned.pth Normal file

Binary file not shown.

BIN
wytrenowany.h5 Normal file

Binary file not shown.