Для взаимодействия с облачным хранилищем нам надо воспользоваться 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 с помощью запросов.
|
|
Также было разработан интуитивно понятный интерфейс информационной системы, для возможности классификации изображения и выделения объектов на изображении. В данный момент информационная система работает только для изображений. Но этот проект также можно развить и в сторону разметки текстовых и аудио данных. Также возможность открытого доступа для размеченных наборов данных для других пользователей.