As a fun project I thought I’d put Google’s Inception-v3 neural network on a Raspberry Pi to see how well it does at recognizing objects first hand. It [turned out to be] not only fun to implement, but also the way I’d implemented it ended up making for loads of fun for everyone I showed it to, mostly folks at hackerspaces and such gatherings. And yes, some of it bordering on pornographic — cheeky hackers.
An added benefit numerous pointed out is that, once installed, no internet access is required. This is state-of-the-art, standalone object recognition with no big brother knowing what you’ve been up to, unlike with that nosey Alexa.
But will it result in widespread helpful AI? If a neural network can recognize every object around it, will that result in human-like skills? Czytaj.
How To Do object Recognition
Inception object recognizer internals
The implementation consists of:
Raspberry Pi 3 model B
amplifier and speaker
PiCamera
momentary swtich
cellphone charger battery for the Pi
The heart of the required software is Google’s Inception neural network which is implemented using their TensorFlow framework. You can download it by following the TensorFlow tutorial for image recognition. The tutorial doesn’t involve any programing so don’t worry if you don’t know Python or TensorFlow. That is, unless you’re going to modify their sample code as I did.
classify_image.py printing that it saw a panda
The sample code takes a fixed named file including a picture of a panda and does object recognition on it. It gives the result by printing out that it saw a panda. But that wasn’t enough fun.
I hunted around for some text-to-speech software and found Festival. Now when it wants to say it saw a panda, I modified the sample code to run festival in a linux shell and tell it to actually say “I saw a panda” to the speaker.
Audio Playerhttps://hackaday.com/wp-content/uploads/2017/06/classify_speak_panda_audio.wav
00:00
00:00
00:00
But that still wasn’t fun enough. I connected a PiCamera to the Raspberry Pi, and had that take a photo and give it to the TensorFlow code to do object recognition. In the vernacular, it now ran inference on my photo.
And lastly, to make it all real easy I connected a momemtary switch to one of the Pi’s GPIO pins and took the photo when the momentary switch was pressed.
Here’s the Python program’s main() function before…
1.
2.
3.
4.
5.
def main(_):
maybe_download_and_extract()
image = (FLAGS.image_file if FLAGS.image_file else
os.path.join(FLAGS.model_dir, ‘cropped_panda.jpg’))
run_inference_on_image(image)
… i po.
1.
2.
3.
4.
5.
6.
7.
8
9.
10.
11.
12.
13.
14
15.
16
17.
18.
19.
20.
21
22.
23
24
25.
26
27.
def main(_):
os.system("echo %s | festival –tts" % "Wait while I prepare my brain…")
maybe_download_and_extract()
# creates graph from saved GraphDef.
create_graph()
# preparing for the switch
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN)
camera = PiCamera()
os.system("echo %s | festival –tts" % "I am ready to see things.")
while True:
# loop for the switch
while (GPIO.input(17) == GPIO.LOW):
time.sleep(0.01)
# take and write a snapshot to a file
image = os.path.join(FLAGS.model_dir, ‘seeing_eye_image.jpg’)
camera.capture(image)
os.system("echo %s | festival –tts" % "I am thinking about what you showed me…")
human_string = run_inference_on_image(image)
os.system("echo I saw a %s | festival –tts" % human_string)
The calls to os.system() are where I run the festival text-to-speech program to make it say something to the speaker.
maybe_download_and_extract() is where Google’s Inception neural network would be downloaded from the Internet, if it’s not already present. By default, it downloads it to /tmp/imagenet which is on a RAM disk. The first time it did this, I copied it from /tmp/imagenet to /home/inception on the SD card and now run the program using a command line that includes where to find the Inception network.
Running the inception object recognizer
The call to create_graph() was moved from inside the run_inference_on_image() function. create_graph() sets up the neural network, which you need do only once. previously the program was a one-shot deal, but now it has an unlimited while loop which calls run_inference_on_image() each time through the loop. Obviously, setting up the neural network is something you do only once (see our introduction to TensorFlow for much more about graphs) so it had to be moved above the loop.
The run_inference_on_image() function is where the image is given to the neural network to do the object recognition. It used to just print out whatever it thought was in the image, but I modified it to instead return the text string including what it thinks the object is, “coffee mug” for example. So the last line is where it would say”Widziałem kubek do kawy” wzmacniacz i głośnik.
Boks wszystko, co dało mi mały, samodzielny pakiet, który może być noszony i wypróbowany przez każdego. Oto film z nim w akcji.
Poprawa byłaby dodanie małego ekranu, aby użytkownik mógł zobaczyć, co widzi kamerę wideo, ale picamera ma szeroki kąt widzenia, a ekran okazuje się nie być konieczne.
Jak dobry jest uznanie obiektów
Początek widzenia tytonicy
Pokazuje, że telefon komórkowy często powoduje, że widział telefon komórkowy, ale w niektórych przypadkach iPoda. Jednak do tej pory przyczyni się do butelki wody i kubki do kawy za każdym razem.
Nie ma jednak dobrze z ludźmi. Wskazując na mnie w moim biurze, powoduje, że widziałem “sklep tytoniowy, sklep tytoniowy, Tobacconist”, prawdopodobnie z powodu półek sprzętu i części bezpośrednio za mną. Jednak stojąc na pustej ścianie, powiedział, że widział bluza, usuwając, że widziała koszulę koszulę, usuwając, że “kąpielowe pnie, kąpielami”, mimo widząc tylko moją górną tułowia i głowę. (Oszczędzę ci zdjęcie.)
Imageenet Próbki telefon komórkowy
Imageenet Próbki kubek kawy
Sieć neuronowa jest przeszkolona na zestaw danych o nazwie ImageEneta, wersja z dużego wyzwania rozpoznawania wizualnego 2012. Ten zestaw danych składa się z ogromnej kolekcji obrazów podzielonych na 1000 klas, każda klasa, w tym obrazy konkretnego obiektu. Jak widać z tej małej próbki z klasy telefonu komórkowego, niektóre obrazy telefoniczne są trochę przestarzały. Jednak obiekty, takie jak kubki kawy nie zmieniają się z czasem.
Ale to nie powstrzymało wszystkich, którzy grali z tym, że dobrze się bawili, chodząc wokół testowania na wszystko, co w zasięgu wzroku, jak po raz pierwszy znaleźć magiczną różdżkę po raz pierwszy i machając go, aby zobaczyć, co może się wyczurzyć.
To wszystko na co cię stać?
Cóż, po pierwsze, każde rozpoznawanie trwa około 10 sekund na malinowym PI3, więc albo że ma być spodowany lub szybszy procesor używany, korzystnie jeden z Cuda-włączony GPU NVIDIA, ponieważ jest to jedyny rodzaj obsługiwanych obecnie programu TENSORLOW GPU.
Inception Neural Net jest tak dobry jak dane, na których jest przeszkolony. Wsteczki, które wskazano powyżej dotyczące rozpoznawania telefonów komórkowych, a ludzie są problemami z zestawem danych programuenet. Tylko 3,46% czasu jest wszystkim 5 z jego najlepszych domysłach błędów, podczas gdy ludzie robią ten sam test, są błędne w ich 5 najlepszych domysłach 5% czasu. Nie jest zły.
Wskazaliśmy w naszym krótkim artykule na temat dziś freaksy Neural Neural Networks, długi krótkoterminowy (LSTM) Sieci neuronowe mogą zbadać, co widzą w jednej ramce wideo, biorąc pod uwagę to, co przyszedł wcześniej w filmie. Na przykład ma znacznie więcej pewności, że widział piłkę plażową zamiast piłki koszykowej, jeśli precentialna scena była na imprezie na plaży. To różni się od początku sieci neuronowej w tym początku ma tylko obraz, który pokazujesz, aby kontynuować.
Gdzie to nas robi?
Poprawi się rozpoznawanie obiektów spowodować powszechne pomocnym AI z umiejętnościami ludzkimi? Ewolucja oka jest często cytowana jako główna przyczyna eksplozji wrażliwościach wrażliwości znanych jako eksplozja kambryjska około 541 milionów lat temu, choć istnieje wiele argumentów o tym, że jest taka przyczyną.
Kiedy jednak te oczy wyewoluowały jednak już jakąś mózg do ich używania. Ten mózg już obsługiwał zmysły dotyku, wibracji i zapachu. Tak więc ulepszony rozpoznawanie obiektów sam nie spowodowałby rewolucji. Dla umiejętności podobnych do ludzi nasza AIS potrzebuje znacznie więcej inteligencji. Obecnie mamy tylko bitów i elementy pomysłów tego, czego potrzebujemy.
Co wiele zgodziło się, że nasza AI musiała przewidywać, aby mogła zaplanować. Za to, że może mieć model wewnętrzny lub zrozumienie świata do wykorzystania jako podstawa tych prognoz. W przypadku umiejętności ludzkiej stosowania sugestii lutowania do drutu, model wewnętrzny przewiduje, co się stało, gdy sugestia skontaktuje się, a następnie planuje na podstawie tego. Gdy sugestia styka się z przewodem, jeśli rzeczy nie idą jak przewidział, ai zareaguje.
Ostatnia praca z Facebooka z generatywnymi sieciami przeciwników (GANS) mogą wskazywać w punkcie wyjścia tutaj, który zawiera taki model i zdolność predykcyjna (jeśli nie jesteś zaznajomiony przez Gans, znowu skierowujemy Cię do naszego krótkiego artykułu o freakty Neural Neural Sieci Zrób dzisiaj). “Generatywna” część nazwy oznacza, że generują obrazy. Ale znacznie bardziej konkretnie są to głęboko zawiłani GANS, co oznacza, że obejmują zrozumienie tego, co widzieli na obrazach, na których zostały przeszkolone. Na przykład wiedzą o oknach, drzwiach i telewizorach oraz gdzie znajdują się w pokojach.
Prognozy wideo adgl.
Co z przewidywaniem? Znacznie więcej pracy z Facebooka obejmuje pokolenie wideo. Korzystanie z predyktorów straty różnicy gradientowej (AGDL) przewidują, jakie kolejne dwie klatki wideo powinno być. Na zdjęciu gry bilardowej można zobaczyć grounD Prawda, tj. Co naprawdę się stało, a co przewidywała sieć AGDL. Nie jest zbyt daleko w przyszłości, ale jest to początek.
Są to przynajmniej małe kroki na ścieżce z naiwnego rozpoznawania obiektów do jednego z umiejętnościami ludzkimi.
W zamknięciu
Gdzie mogłeś wcześniej rozpoznać obiekty neuronowe? Objęliśmy [LUKAS Bievald] używając go na samochodzie RC, aby rozpoznać obiekty w jego garażu / warsztatach.
Chociaż to [okazało się, że jest zabawa dla wszystkich, aby użyć, jak to jest, jakie inne zastosowania możesz o tym myśleć? Jaka jest pomocna aplikacja, o której możesz myśleć? Co można dodać? Daj nam znać w poniższych komentarzach.