Взаимодействие хранилища и интерфейса

Для взаимодействия с облачным хранилищем нам надо воспользоваться S3 API. Это стандартный API для работы с объектными хранилищами данных Amazon. Этот API на 99.9% совпадает с API облачных провайдеров, которые предоставляют свои объектные хранилища данных.

В нашем случае нам для доступа необходимы полученные ранее ключ доступа (Access Key ID) и секретный ключ (Secret Key). Также название бакета, региона в котором мы находимся, и endpoint_url по которому мы будем подключаться именно к нашему провайдеру.

Вот так выглядит подключение к нашему хранилищу

ACCESS_KEY = 'kAjT77NuCryPU66EbW8ktb'

SECRET_KEY = '2pbaZPrQnHoRyTeG1wFf6yNq1Auwfnsko3KpToPZXJaB'

BUCKET_NAME = "treatmeshkov"

 

# S3 Connect

s3 = boto3.client(

"s3",

aws_access_key_id=ACCESS_KEY,

aws_secret_access_key=SECRET_KEY,

endpoint_url='http://hb.bizmrg.com'

)

 

Хранилище выглядит следующим образом:

 

|

| - - - -class_name

|               | - - - - classification

|               |             | - - - - image-1.jpg

|               |             | - - - - image-2.jpg

|               |             | - - - - image-3.jpg

|               |             | - - - - т.д.

|         |                 

|               | - - - - detection

|                                  | - - - - metadata

| - - - -class_name

|               | - - - - classification

|               |             | - - - - image-1.jpg

|               |             | - - - - image-2.jpg

|               |             | - - - - image-3.jpg

|               |             | - - - - т.д.

|               |                 

|               | - - - - detection

|                                  | - - - - metadata

|

 

 

Где class_name папка, где хранятся папки classification и detection определенного класса. Папка classification содержит все изображения, а папка detection хранит метаданные (metadata), в которых содержится название файла, высота, широта, и координаты xmin, ymin, xmax, ymax нашей выделенной области.

Функция загрузки изображения выглядит следующим образом

def upload_file_to_s3(FILE_NAME, FOLDER_CLASS, MIDDLE_FOLDER, BUCKET_NAME):

 

"""

Docs: http://boto3.readthedocs.io/en/latest/guide/s3.html

"""

 

try:

 

   s3.upload_fileobj (

               Bucket = BUCKET_NAME,

               Filename=FILE_NAME,

               Key=FOLDER_CLASS + MIDDLE_FOLDER + FILE_NAME

          )

  )

except Exception as e:

   print("Something Happened: ", e)

   return e

 

return "{}{}".format(app.config["S3_LOCATION"], file.filename)

 

 Аналогично записываются метаданные. А вот так они выглядят Рис.11

Рисунок 11. Демонстрация работы классификации

 

Заключение

 

В рамках этой курсовой работы была разработана ИС для разметки и хранения данных. Где для хранения данных было выбрано облачное объектное хранилище данных, так как оно идеально подходит для неструктурированных данных. Также она быстро масштабируема, эффективна, и удобна для начала разработки любых ИС благодаря использованию простых команд через интерфейс API с помощью запросов.

Также было разработан интуитивно понятный интерфейс информационной системы, для возможности классификации изображения и выделения объектов на изображении. В данный момент информационная система работает только для изображений. Но этот проект также можно развить и в сторону разметки текстовых и аудио данных. Также возможность открытого доступа для размеченных наборов данных для других пользователей.


 



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: