Skip to content

Третья лабароторная работа. В данной работе необходимо в задаче с нейронными сетями использовать генетический алгоритм для подбора весов

License

Notifications You must be signed in to change notification settings

Requiem4soul/Genetic-algorithm-2

Repository files navigation

Genetic Algorithm (Генетический алгоритм) — Распознавание изображения 4x4

Данный проект реализует обучение простейшего персептрона с помощью генетического алгоритма для распознавания одного конкретного черно-белого изображения размером 4x4 пикселя.

📦 Установка и запуск

  1. Убедитесь, что у вас установлен uv. Если не установлен, то есть подробная простая инструкция на сайте uv :

  2. После установки выполните данный команды запустив powershell из рабочей папки (открыть папку проекта и в пути (там где C:/...) ввести powershell):

    uv sync
    uv lock
  3. Укажите своё целевое изображение в Data/correct_img.py:

    My_img = np.array(
    [1, 0, 0, 1,
    1, 0, 0, 0,
    0, 0, 0, 1,
    1, 0, 0, 1], dtype=np.uint8)  # 1 — чёрный, 0 — белый
    NET = 0.4  # Пороговое значение активации
  4. При необходимости измените параметры в main.py:

     # Параметры
     POPULATION_SIZE = 50 # Сколько будет хромосом в эпохе
     EPOCH = 500 # Количество эпох для обучения, но может найти лучший вес раньше и остановит обучение
     MUTATION_RATE = 0.3 # Вероятность мутаций
     SHOW = False # False - короткая информация для поколений, True - подробная информация для поколений
     CHECK_RESULTS_ON = True # Falase - не проверяет в конце результат, True - идёт проверка веса на идеальность
     STATS_SHOW = True # False - не отображает график в конце, True - отображает график обучения в конце. Если True, то не забудьте закрыть окно с графиком для окончания работы программы
     PAR = int(len(population)*0.2) # Изменять коэффициент от 0.0 до 1.0. Определяет сколько процентов популяции будет скрещиваться
  5. Запустите основной скрипт обучения через uv:

    uv run main

🧠 После обучения

  1. Итоговые веса сохраняются в:

    Data/Save_weights/best_weights.txt
    

    Каждую 10-ую эпоху сохраняется лучший вес в checkpoint_weights.txt

  2. Для распознавания своих изображений:

    • Поместите PNG-файлы (размер 4x4, черно-белые) в папку:
      Data/Pictures_for_recognize
      
    • Запустите визуализацию и распознавание:
      uv run Recognize_app.py
    • Стрелками на клавиатуре (влево, вправо) переключайтесь между изображениями

    При этом вы увидите результат активации, сравнение с порогом и визуальное окно с переключением между картинками (по клавишам ← и →). Ваша картинка будет добавлена автоматически, но важно убедиться что нет её дубликатов, в вашем исходном датасете.

  3. Вы можете посмотреть сохранённый график и мета данные об обучении в "Data/Statistic/Graphs" и "Data/Statistic/Metadata". Названия файлов привязаны к времени запуска обучения и создаются только после обучения

изображение изображение

✅ Проверка корректности весов

Если вы поместили свою правильную картинку в папку и после распознавания активировалась только одна картинка (и она верная) — значит весовая конфигурация подходит. В ином случае — стоит переобучить.


Разработано для учебных целей. Все веса и параметры можно свободно настраивать. Поставьте пожалуйста звезду, если вам помогла данная программа ⭐

About

Третья лабароторная работа. В данной работе необходимо в задаче с нейронными сетями использовать генетический алгоритм для подбора весов

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages