Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 30 additions & 30 deletions src/superannotate/lib/core/usecases/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -479,7 +479,7 @@ def execute(self):
images = self._service_provider.items.list_by_names(
project=self._project, folder=self._folder, names=self._images_list
).data
image_ids = [image.uuid for image in images]
image_ids = [image.id for image in images]
image_names = [image.name for image in images]

if not len(image_names):
Expand All @@ -502,36 +502,36 @@ def execute(self):
ml_model_id=ml_model.id,
image_ids=image_ids,
)
if not res.ok:
return self._response.data

success_images = []
failed_images = []
while len(success_images) + len(failed_images) != len(image_ids):
images_metadata = self._service_provider.items.list_by_names(
project=self._project, folder=self._folder, names=self._images_list
).data

success_images = [
img.name
for img in images_metadata
if img.prediction_status
== constances.SegmentationStatus.COMPLETED.value
]
failed_images = [
img.name
for img in images_metadata
if img.prediction_status
== constances.SegmentationStatus.FAILED.value
]

complete_images = success_images + failed_images
logger.info(
f"prediction complete on {len(complete_images)} / {len(image_ids)} images"
)
time.sleep(5)
if res.ok:
success_images = []
failed_images = []
while len(success_images) + len(failed_images) != len(image_ids):
images_metadata = self._service_provider.items.list_by_names(
project=self._project, folder=self._folder, names=self._images_list
).data

success_images = [
img.name
for img in images_metadata
if img.prediction_status
== constances.SegmentationStatus.COMPLETED.value
]
failed_images = [
img.name
for img in images_metadata
if img.prediction_status
== constances.SegmentationStatus.FAILED.value
]

complete_images = success_images + failed_images
logger.info(
f"prediction complete on {len(complete_images)} / {len(image_ids)} images"
)
time.sleep(5)

self._response.data = (success_images, failed_images)
self._response.data = (success_images, failed_images)
else:
self._response.errors = res.error
return self._response


Expand Down
13 changes: 0 additions & 13 deletions src/superannotate/lib/infrastructure/repositories.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
import io
from typing import List

from lib.core.conditions import Condition
from lib.core.entities import ProjectEntity
from lib.core.entities import S3FileEntity
from lib.core.repositories import BaseS3Repository

Expand All @@ -22,12 +18,3 @@ def insert(self, entity: S3FileEntity) -> S3FileEntity:
data["Metadata"] = temp
self.bucket.put_object(**data)
return entity

def update(self, entity: ProjectEntity):
self._service.update_project(entity.to_dict())

def delete(self, uuid: int):
self._service.delete_project(uuid)

def get_all(self, condition: Condition = None) -> List[ProjectEntity]:
pass
1 change: 1 addition & 0 deletions src/superannotate/lib/infrastructure/serviceprovider.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ def run_prediction(
self.URL_PREDICTION,
"post",
data={
"team_id": project.team_id,
"project_id": project.id,
"ml_model_id": ml_model_id,
"image_ids": image_ids,
Expand Down
11 changes: 5 additions & 6 deletions tests/integration/test_ml_funcs.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import os
import time
from os.path import dirname

import pytest
from src.superannotate import SAClient
from src.superannotate import AppException
from tests.integration.base import BaseTestCase
import pytest

sa = SAClient()

Expand All @@ -23,17 +23,16 @@ def folder_path(self):
return os.path.join(dirname(dirname(__file__)), self.TEST_FOLDER_PATH)

def test_run_prediction_with_non_exist_images(self):
with pytest.raises(Exception) as e:
with self.assertRaisesRegexp(AppException, 'No valid image names were provided.'):
sa.run_prediction(
self.PROJECT_NAME, ["NonExistantImage.jpg"], self.MODEL_NAME
self.PROJECT_NAME, ["NotExistingImage.jpg"], self.MODEL_NAME
)

@pytest.mark.skip(reason="Need to adjust")
@pytest.mark.skip(reason="Test skipped due to long execution")
def test_run_prediction_for_all_images(self):
sa.upload_images_from_folder_to_project(
project=self.PROJECT_NAME, folder_path=self.folder_path
)
time.sleep(2)
image_names_vector = [i["name"] for i in sa.search_items(self.PROJECT_NAME)]
succeeded_images, failed_images = sa.run_prediction(
self.PROJECT_NAME, image_names_vector, self.MODEL_NAME
Expand Down