Разработка автоматизированной системы классификации товаров по их изображениям
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
/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 }; //слои малых сетей