Разработка автоматизированной системы классификации товаров по их изображениям

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



/p>

.Конфигурации сетей

Результатами работы приложения является:

Ответ программы о принадлежности товара к категории.

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

На рисунке 6представлена структурная схема приложения:

Рис. 6.Структурная схема приложения

На рисунке 7 представлена структура работы приложения, извлекающего данные с веб-ресурса:

Рис. 7.Структура работы приложения извлекающего данные с веб-ресурса

На рисунке 8 представлена структура работы приложения, классифицирующего товары:

Рис. 8.Структура работы приложения классифицирующего товары

Основные модули, описывающие работу приложения, извлекающего информацию с веб-ресурса:

Program - главный модуль приложения, отвечающий за его запуск.

Grabber - модуль отвечающий за загрузку данных и парсинг веб-ресурса

Components - набор вспомогательных модулей, используемых при парсинге и загрузке информации.

DBEngine - модуль для осуществления работы с БД.

ThreadHelper - модуль, содержащий функции для распределения общего объёма работы между потоками.

Logger -модуль, осуществляющий работу с лог-файлами.

Основные модули, описывающие работу приложения, классифицирующего товары:

Program - главный модуль приложения, отвечающий за его запуск.-модуль, содержащий функции для работы с единичной нейронной сетью.-модуль формирования информации для обучения нейронных сетей.-модуль для управления работой массива нейронных сетей.-модуль для группировки нейронных сетей и определения результата классификации.

Описание классов.

Для реализации задачи поставленной в рамках данной дипломной работы был разработан набор классов следующей структуры:

Класс Categoryописывает категорию товаров.

Приведём структуру класса:

public class Category

{int id; //ИД категории в системе сайтаint level; //Уровень вложенияstring name; //Названиеstring url; //ссылкаstring parentURL; //ссылка на категорию-родительList categoryImages; //изображения товаров

}

Класс Image описывает изображение товара.

Приведём структуру класса:

public class Image

{Int64 itemId; //ИД товараint categoryId; //ИД категории string URL; // ссылка на изображенияbool isBig; // флаг, показывающий, имеет ли изображение большое разрешение

}

Класс ImageSaver используется для сохранения изображений товаров на диск, является статическим и не имеет полей.

Класс DBEngineявляется контроллером при работе с базой данных.

Приведём структуру класса:

public class DBEngine

{connectionString; //строка подключенияCategoryTable categoryTable; //таблица категорийImageTable imageTable; //таблица изображенийSettingsTable settingsTable; //таблица настроек

}

Класс EngineTable является классом-родителем классам для работы с таблицами базы данных.

Приведём структуру класса:

class EngineTable

{string tableName; //Имя таблицыstring connectionString; //строка подключения

}

Класс CategoryTable используется для работы с таблицей категорий в базе данных, является наследником класса EngineTable.

Класс ImageTable используется для работы с таблицей изображений в базе данных, является наследником класса EngineTable.

Класс SettingsTable используется для работы с таблицей настроек в базе данных, является наследником класса EngineTable.

Класс BrowserExtensions используется для расширения возможностей встроенного классаWebBrowser.

Класс TreeViewExtension используется для расширения возможностей встроенного классаTreeView.

Класс Grabberслужит для извлечения информации с веб-ресурса.

Приведём структуру класса:

Grabber

{

categories;//getItemCounter;//getItemWorkAmount;//">DBEngine.DBEngine dbEngine; //движок БД categories; //категорииgetItemCounter; //счетчик получения товаровgetItemWorkAmount; //объём работы получения товаров

int getItemThreadCount; //количество потоков получения товаров

public int GetItemThreadCount

{

get { return getItemThreadCount; }{ getItemThreadCount = value; }

}saveImageCounter; //счетчик сохранения изображений saveItemWorkAmount; //объём работы сохранения изображенийsaveItemThreadCount; //количество потоков сохранения изображений

public int SaveItemThreadCount

{

get { return saveItemThreadCount; }{ saveItemThreadCount = value; }

}

}

Класс NeuralNetworkу управляет единичной нейронной сетью.

Приведём структуру класса:

class NeuralNetwork

{net; //нейронная сеть[] neuronsInLayers; //количество нейронов в слояхint id; //ИДCategory levelTwoParent; //категория родитель уровня 2Category category; //категорияstring Name //имя

{

get { return category.name; }

}int Level //уровень

{

get { return category.level; }

}

}

Класс NetworkPool используется для группировки сетей и определения результата классификации, не содержит полей.

Класс NetworkController управляет массивом нейронных сетей.

Приведём структуру класса:

class NetworkController

{

DBEngine dbEngine; //движок БД workResult; //результат работы сетейsmallNetworksInitialized; //флаг инициализации малых сетейbool SmallNetworksInitialized

{

get { return smallNetworksInitialized; }

}bigNetworksInitialized; //флаг инициализации больших сетейbool BigNetworksInitialized

{{ return bigNetworksInitialized; }{ bigNetworksInitialized = value; }

}initialDirectory; //рабочая директорияstring InitialDirectory

{{ return initialDirectory; }

}[] smallNetworkLayers = { 3072, 512, 1 }; //слои малых сетей