Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
"""
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")