Форум программистов, компьютерный форум, киберфорум
Наши страницы

28.05.27 Тренажёр интеллекта для кошки на основе нейронных сетей

Войти
Регистрация
Восстановить пароль
Оценить эту запись

28.05.27 Тренажёр интеллекта для кошки на основе нейронных сетей

Запись от jvf размещена 27.05.2018 в 21:26
Обновил(-а) SatanaXIII 28.05.2018 в 14:19 (Правка тега)

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

Но я придумал сегодня следующую вещь: использовать эту штуку как тренажер интеллекта для кошки.

Работает это следующим образом. У меня есть натренированная свёрточная нейронная сеть, и если кошка попадает в веб-камеру, то программа издаёт звук. Я поворачиваю голову, и если вижу животное, то кидаю лакомство.

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

Поэтому я усложнил задачу. Даю лакомство, если вероятность распознавания нейронной сети увеличится.

Иными словами, в первый раз я готов дать лакомство, если кошка просто попадёт в камеру (свёрточная нейронная сеть видит кошку с вероятностью в 50 процентов или более). В следующий раз я даю лакомство, если вероятность того, что кошка попала в кадре больше или равна 51 проценту. В следующий раз -- больше или равна 52 процентам. И так далее.

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

То есть каждый раз животному будет сложнее и сложнее получать лакомство. Получается настоящий тренажёр интеллекта. Сначала всё просто, но потом сложнее и сложнее, и сложнее.

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

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

Мы побуждаем животное чаще двигаться, больше двигаться, думать, то есть повышаем качество жизни.

Реализовал я это следующим образом:

Параметр сложности задания. Чем выше numb_press, тем сложнее животному получать лакомство. Сначала сложность на нуле.
Python
1
numb_press = 0
mpred2 -- это результат предсказания свёрточной нейронной сети. Если вероятность более 50 процентов, то мы считаем, что это кошка. Если меньше, то считаем, что мы видим не кошку.

Found -- видим ли мы кошку или нет.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        mpred2 = machine.give_prediction_file_2(frame[new_y1:new_y2, new_x1:new_x2])
        #give_prediction_file_2
 
        #print("mpred1=", mpred1[0]  ``)
        #print("mpred2=", mpred2)
 
        Found = False
            
        if mpred2 > 50:
            mpath = myDirs.AI_THINK_CAT
            print("Кошка ", mpred1, " ", mpred2 )
            #myDirs.play_sound()
            Found = True
 
        else:
            print("Кошки нет ", mpred1, " ", mpred2)
            mpath = myDirs.AI_THINK_NOT_CAT
 
        if Found == True:
            if mpred2 > (numb_press+50):
                print("Кошка заслужила лакомство")
                myDirs.play_sound()
Всё реализовано элементарно, но результат получился довольной интересный.

Для проигрывания звуков используем pygame.

Python
1
2
3
4
5
6
7
8
9
10
11
from pygame import mixer
 
    def play_sound(self):
 
        #song = pyglet.media.load('test.wav')
        #song.play()
        #pyglet.app.run()
 
        mixer.init()
        mixer.music.load('test.wav')
        mixer.music.play()
Если слышим звук и мы убеждаемся, что это кошка, то нажимает на клавишу "c" (не забываем дать лакомство ) и увеличиваем сложность немного.

Python
1
2
3
4
5
6
7
8
 
   key = cv2.waitKey(33) & 0xFF
    if key == ord("q"):
        break
  
    if key == ord("c"):
        numb_press += 1
        print("нажали на c=", numb_press)
Это пример показывает, как на основе самые элементарных значений можно что-то интересное, что даёт практическую пользу.

У нас по сути получилась настоящая игра для кошки. Мы сделали не просто распознаватель изображения "кошка или не кошка", а мы создали на основе простейших фактов из свёрточных нейронных сетей настоящую интеллектуальную игру для животного.

В итоге животное будет вынуждено не валяться на диване от скуки, а будет как-то включить свои мозги.

Мы ещё раз видим мощь нейронных сетей в плане практической пользы. Даже игрушечные примеры способны приводить к интересным результатам.

2. Интересное видео о нейронных сетях

Рекуррентные нейронные сети | Глубокие нейронные сети на Python

https://www.youtube.com/watch?v=38iGggnbbsQ



1. Свёрточные нейронные сети хороши для определённых задач: для анализа изображений, видео, звука и т.п. Но они не хороши для других задач: для автоматического распознавания речи, автоматического перевода, для обработки естественных языков.

2. Например, мы хотим предсказать следующее слово:
Столица России...
Поэт Александр Сергеевич...

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

4. Сейчас используются рекуррентные нейронные сети под названием "Сети долго-краткосрочной памяти (Long short-term memory, LSTM)

5. LSTM сети способны запоминать события, которые произошли сотни или тысяч единиц времени назад.
Размещено в Без категории
Просмотров 406 Комментарии 2
Всего комментариев 2

Комментарии

  1. Старый комментарий
    Аватар для Avazart
    Видео неправильно вставил:

    https://www.youtube.com/watch?v=38iGggnbbsQ

    Правильно так:
    [YOU TUBE]38iGggnbbsQ[/YOU TUBE] (без пробелов)
    Запись от Avazart размещена 28.05.2018 в 13:31 Avazart вне форума
  2. Старый комментарий
    Спасибо
    Запись от jvf размещена 28.05.2018 в 20:27 jvf вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru