Форум программистов, компьютерный форум, киберфорум
Наши страницы
jvf
Войти
Регистрация
Восстановить пароль
Оценить эту запись

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 сети способны запоминать события, которые произошли сотни или тысяч единиц времени назад.
Размещено в Без категории
Просмотров 447 Комментарии 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