def getImageNStuff(imageFilee): f.br() f.br() # Load yolov3 model model = load_model(modelsFolder + '\\' + 'model.h5') image, image_w, image_h = f.load_image_pixels(imageFilee, (input_w, input_h)) # VVVVVV Niet nodig opzich #cv2.imshow("abc", image) #cv2.waitKey(0) #cv2.destroyAllWindows() image = expand_dims( image, 0 ) # De keras code verwacht 4 dimensies, 1 plaatje heeft 3 dimensies (dat kan je zien door print(image) te doen) # als je dat wilt in de regel hierboven. # De '0' in de expand_dims betekent dat er een nulde, oftwel een eerste (omdat arrays beginnen bij nul), # dimensie wordt toegevoegd --> de nulde, eerste en tweede dimensies van het plaatje schuiven op naar de # eerste, tweede en derde dimensie # Deze nieuwe nulde dimensie staat dan voor het aantal plaatjes, bij ons nu natuurlijk maar 1, maar keras # verwacht er vaak al meerdere tegelijk bij het model.predict stukje print(image) # Maak de voorspelling met het model yhat = model.predict(image) # print([a.shape for a in yhat]) # Laat de dimensies zien van de array return image, image_w, image_h, model, yhat
def initProgramFirstCheck(): checked = False initBool = False # Standaard nog niet geopend while not checked: # Vragen of het de eerste keer is van het programma en de checks ervoor snap je wel initString = input( "Is dit de eerste keer dat je het yolov3 programma opent? (Y/N) ") f.br() if initString == "Y": initBool = True elif initString == "N": initBool = False else: print("Verkeerde input, start opnieuw...") f.br() continue checked = True return initBool
def decodeFrame(image, image_w, image_h, model, yhat, imageFile): boxes = list() for i in range(len(yhat)): # Decodeer de bounding boxes (de rechthoekjes om het herkende heen) boxes += dF.decode_netout(yhat[i][0], anchors[i], propability, input_h, input_w) # Zet de shape en size van de boxes weer om naar het originele plaatje ipv het 416x416 plaatje dF.correct_yolo_boxes(boxes, image_h, image_w, input_h, input_w) dF.do_nms( boxes, 0.5 ) # zorg ervoor dat overlappende bounding boxes weg gehaald worden( 0.5 staat voor bounding boxes die 50% over een komen) v_boxes, v_labels, v_scores = f.get_boxes(boxes, labels, propability) f.br() print("Die tensorflow error net:") print( "'WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.'" ) print("Is niks ergs, maak geen zorgen") f.br() # eventjes de aparte boxen printen for i in range(len(v_boxes)): print(v_labels[i], v_scores[i]) imageFinal = f.draw_boxes(imageFile, v_boxes, v_labels, v_scores, 0.5) print(imageFinal) cv2.imshow("window", imageFinal) cv2.waitKey(0) cv2.destroyAllWindows() cv2.imwrite(imageFile[:-4] + '_detected' + imageFile[-4:], (imageFinal).astype('uint8'))
def downloadCheck(): bestandsPad = os.path.join(weightsFolder, "yolov3.weights") if os.path.exists(bestandsPad): lokaleGrootte = int(os.stat(bestandsPad).st_size) externeGrootte = int( requests.get(preTrainedURL, stream=True).headers['content-length']) if lokaleGrootte == externeGrootte: print("Het lokale weights bestand klopt! Ga verder...") f.br() else: print( "Het lokale bestand klopt niet helemaal, hij wordt opnieuw gedownload..." ) f.download(preTrainedURL, weightsFolder, (1024 * 16)) else: print( 'Programma is voor de eerste keer gestart, download wordt gestart...' ) f.download(preTrainedURL, weightsFolder, (1024 * 16))
def __main__(): print( "Voordat de AI in gebruik kan worden genomen zal er automatisch een getraind model gedownload moeten worden..." ) print( "Om dit helemaal succesvol te doen, moet bij het eerste gebruik bij de volgende vraag het plaatje worden geselecteerd..." ) print( "Wanneer er wordt gevraagd om de bestandsnaam van een plaatje, kan het voorbeeldplaatje 'zebra.jpg' gebruikt worden..." ) f.br() answer = input( 'Wil je de AI op een (P)laatje testen, of op een (V)ideo? (P/V) ') f.br() #if answer == 'C': # # Open het COCO script # COCO.__main__() if answer == 'P': # Open het YOLO script YOLOv3.__main__() elif answer == 'V': videoDetect.__main__() sys.exit() else: answerRestart = input( "Verkeerde input gekregen, wil je het opnieuw proberen? (Y/N) ") f.br() if answerRestart == 'Y': # TrafficDetection.__main__() __main__() return elif answerRestart == 'N': print("Afsluiten...") sys.exit() else: print("Verkeerd antwoord, afsluiten...") sys.exit()
def __main__(): imageFilee = input( "Vul hier de bestandsnaam van de te detecteren foto in: ") downloadCheck() yoloModelCheck() f.br() print( "De lokale weights en model bestanden kloppen, er kan verder gegaan worden met het herkennen..." ) f.br() f.br() print( "Het (voorbeeld) plaatje (of de (voorbeeld) video) pakken en herkennen met het model!" ) image, image_w, image_h, model, yhat = getImageNStuff(imageFilee) decodeFrame(image, image_w, image_h, model, yhat, imageFilee)
for i in range(len(s1.attrName)): if i==0 or i==1: s1.attributes[i]="date"; while(func.isdate(s1.attributes[i])==False): s1.attributes[i]=input(s1.attrName[i]+": ");#isdate elif(i==2): s1.attributes[i]="true"; while(func.onlyNumber(s1.attributes[i])==True): s1.attributes[i]=input(s1.attrName[i]+": "); else: while(func.isEmpty(s1.attributes[i])==True or func.isSpecialSimpleChar(s1.attributes[i])==True): s1.attributes[i]=input(s1.attrName[i]+": "); system("clear"); c1.printList(); print(func.br()); s1.printList(); print(func.tab(2)) resp=input("As informações estão corretas?(s/n): "); if resp=='s': print("resgistrado no Banco..."); sett.callSystem() else: print(func.message(c1)); #break; #sett.callSystem() elif escolhamenu=="2":
from pathlib import Path import functions as f import matplotlib.pyplot as plt import numpy as np import skimage.io as io # Eigen python packages import YOLOv3 import videoDetect # import TrafficDetection # Start met printen naar de console en dingen vragen en dergelijke f.br() def __main__(): print( "Voordat de AI in gebruik kan worden genomen zal er automatisch een getraind model gedownload moeten worden..." ) print( "Om dit helemaal succesvol te doen, moet bij het eerste gebruik bij de volgende vraag het plaatje worden geselecteerd..." ) print( "Wanneer er wordt gevraagd om de bestandsnaam van een plaatje, kan het voorbeeldplaatje 'zebra.jpg' gebruikt worden..." ) f.br() answer = input(