def GetPreviewImagesCount(self, dialogue): """ Gets the preview images count. """ # Set test images path TestImagesPath(self, dialogue) # Set image count enoughImages, imageCount, errorMessage = general_image.EnoughImages(self.testImagesPath, self.previewImagesNum) if errorMessage is not None: dialogue.textEdit.append(errorMessage) # Set max images, if set to more than available if enoughImages is False: self.previewImagesNum = imageCount # Update preview images number SetPreviewImagesNum(self, dialogue)
def GetRunImagesCount(self, selectDir): """ Gets the preview images count. """ # Set test images path if selectDir: ui_general.TestImagesPath(self, self.runInferenceDialogue) # Set image count enoughImages, imageCount, errorMessage = general_image.EnoughImages( self.testImagesPath, self.previewImagesNum) if errorMessage is not None: self.runInferenceDialogue.textEdit.append(errorMessage) # Set image count self.previewImagesNum = imageCount # Update preview images number ui_general.SetPreviewImagesNum(self, self.runInferenceDialogue)
def RunAnnotationButton(self): """ Runs when the RunAnnotationButton is clicked. """ # Set generate XML variable self.generateXML = True # If the multiclass option is set if self.multiClassCheckBox: # Set model directory self.modelDir = config.snapshots # Get currently selected model name self.selectedModel = self.autoAnnotateDialogue.annotatorComboBox.currentText( ) # Set map path mapPath, mapFileFound = general_error.GetMapPath(config.classesCSV, "") if mapFileFound: self.mapPath = mapPath # Set model directory self.modelDir = config.snapshots else: # Set model directory self.modelDir = config.pretrainedModels # Set single class annotator model as default model self.selectedModel = "single_class_annotator.h5" # Set map path mapPath, mapFileFound = general_error.GetMapPath( self.selectedModel, self.modelDir) if mapFileFound: self.mapPath = mapPath # Create classes CSV file error, errorMsg = general.CreateClassString(self.selectedModel, config.pretrainedModels, self.annotateClassesSet) if error: errorMessage = "There was an error with creating CSV file: " + errorMsg self.autoAnnotateDialogue.textEdit.append(errorMessage) # Set self.cancelPreview value self.cancelPreview = False # Set first preview image variable for messaging self.firstPreviewImage = True # Chosen dataset dataSet = self.autoAnnotateDialogue.dataSetsComboBox.currentText() self.testImagesPath = os.path.join(config.datasets, dataSet) # Set image count enoughImages, imageCount, errorMessage = general_image.EnoughImages( self.testImagesPath, 0) if errorMessage is not None: self.autoAnnotateDialogue.textEdit.append(errorMessage) self.previewImagesNum = imageCount # Set progress bar max value self.inferenceProgressBarMaxValue = self.previewImagesNum # Reset progress bar self.autoAnnotateDialogue.progressBar.setValue(0) # Set progress bar ui_general.SetProgressBar(self, self.autoAnnotateDialogue) # Start preview images thread ui_general.StartPreviewThread(self, self.autoAnnotateDialogue) # Disable widgets while processing images StartToggleAaWidgets(self)
def RunInferenceButton(self): """ Run inference on selected model. """ # Set self.cancelPreview value self.cancelPreview = False # Set first preview image variable for messaging self.firstPreviewImage = True # Set model name ui_general.SetModel(self, self.runInferenceDialogue) # Ensure name is not empty modelNotEmpty = general_error.StringNotEmpty(self.selectedModel) # Ensure test images dir has been selected imagesDirNotEmpty = general_error.StringNotEmpty(self.testImagesPath) # Ensure image count is less than image dir image count. enoughImages, imageCount, errorMessage = general_image.EnoughImages( self.testImagesPath, self.previewImagesNum) if errorMessage is not None: self.runInferenceDialogue.textEdit.append(errorMessage) if enoughImages is False: self.previewImagesNum = imageCount # Update preview images number ui_general.SetPreviewImagesNum(self, self.runInferenceDialogue) # Set progress bar max value self.inferenceProgressBarMaxValue = self.previewImagesNum # Set model directory self.modelDir = config.pretrainedModels # Set map name mapPath, mapFileFound = general_error.GetMapPath(self.selectedModel, config.pretrainedModels) if mapFileFound: self.mapPath = mapPath # Reset progress bar self.runInferenceDialogue.progressBar.setValue(0) # Set progress bar ui_general.SetProgressBar(self, self.runInferenceDialogue) # Create thread to process images if modelNotEmpty and imagesDirNotEmpty and mapFileFound: ui_general.StartPreviewThread(self, self.runInferenceDialogue) # Disable widgets while processing images StartToggleRiWidgets(self) # Update dialogue self.runInferenceDialogue.textEdit.append("Commencing inference.") else: if modelNotEmpty is False: QtWidgets.QMessageBox.information(self.runInferenceDialogue, "No model found", "Please select a model first.", QtWidgets.QMessageBox.Ok) if imagesDirNotEmpty is False: QtWidgets.QMessageBox.information( self.runInferenceDialogue, "No image directory selected", "Please select a test images directory first.", QtWidgets.QMessageBox.Ok) if mapFileFound is False: QtWidgets.QMessageBox.information( self.runInferenceDialogue, "No map file found", "The model you have selected does not have a map file. Please select a different model.", QtWidgets.QMessageBox.Ok)
""" Author: Chris Lawson Contact: [email protected] Source: U-Infuse Purpose: Unit testing for general_image.py. """ import general_image # Test data variables testImageDir = "test/test_images" testImgMin = 2 print("Testing general_image.py\n") # Test general_image.ProcessImages counter, imgList, errorMsg = general_image.ProcessImages(testImageDir, testImgMin) assert counter > 0 assert len(imgList) > 0 assert errorMsg is None print("general_image.ProcessImages passed") # Test general_image.EnoughImages enoughImages, counter, errorMsg = general_image.EnoughImages(testImageDir, testImgMin) assert enoughImages assert counter > 0 assert errorMsg is None print("general_image.EnoughImages passed") print("\nTesting general_image.py complete")