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? 읽어.
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
삼
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)
… and after.
1
2
삼
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”나는 앰프와 스피커에 커피 머그를 봤다”.
권투 모든 것이 나에게 작은 독립형 패키지를 주었고 누구에게도 시도 할 수있는 작은 독립형 패키지를주었습니다. 여기에 동영상의 비디오가 있습니다.
개선은 사용자가 비디오 카메라가 보는 것을 볼 수 있도록 소규모 화면을 추가하는 것입니다. 그러나 피카메라는 넓은 보도 각도와 화면이 필요하지 않은 화면을 가지고 있습니다.
그 물체 인식은 얼마나 좋습니다
흡착자를 보는 시작
휴대 전화를 보여주는 것은 종종 휴대 전화를 보았지만 어떤 경우에는 iPod이 발생합니다. 그러나 지금까지는 물 병과 커피 머그잔이 매번 적합합니다.
그러나 사람들과 잘 어울리지 않습니다. 내 사무실에서 나에게 그것을 가리키는 것은 “담배 가게, 담배 가게, tobacconist”를 보았을 때 장비와 부품의 선반 때문에 장비와 부품의 선반 때문에 그러나, 빈 벽에 서서 스웨트 셔츠를 보았고, 티셔츠를 보았다고 제거하면서, 내 맨 위의 몸통과 머리 만 보는 것에도 불구하고 “목욕 줄기, 수영 트렁크”라고 말했다. (나는 당신에게 사진을 찍을 것입니다.)
ImageNet 핸드폰 이미지 샘플
ImageNet 샘플 커피 잔 이미지
신경망은 2012 년의 큰 시각적 인식 도전에서 버전 인 ImageNet이라는 데이터 세트에서 훈련됩니다.이 데이터 집합은 특정 객체의 이미지를 포함하여 각 클래스의 거대한 이미지 모음으로 구성됩니다. 휴대 전화 클래스 에서이 작은 샘플에서 볼 수 있듯이 일부 전화 이미지는 약간의 날짜가 작습니다. 그러나 커피 머그잔과 같은 물체는 시간이 지남에 따라 변하지 않습니다.
그러나 그것은 재미있는 사람들을 모두 멈추지 않았습니다. 재미로부터 그것을 멈추고 처음으로 마술 지팡이를 찾고 흔들릴 수있는 것을보기 위해 주위를 흔들면서 시야에서 테스트를 걷고 있습니다.
그게 최선을 다할 수 있습니까?
글쎄, 각 인식은 라스베리 PI 3에서 각 인식이 약 10 초가 소요되므로 SPED 또는 빠른 프로세서가 사용되는 빠른 프로세서, 바람직하게는 CUDA 지원 NVIDIA GPU가있는 유일한 유형의 GPU Tensorflow의 유일한 유형의 GPU 텐서 (GPU Tensorflow)의 유일한 유형이기 때문에.
창립 신경망은 훈련 된 데이터만큼이나 좋습니다. 휴대 전화를 인식하고 사람들을 인식하는 결함은 imageNet 데이터 세트의 문제입니다. 시간의 3.46 %만이 최고의 추측 중 5 명이 잘못되었지만, 5 %의 시간에 5 %의 추측에서 동일한 테스트를하는 것은 잘못되었습니다. 나쁘지 않다.
우리가 밝은 물품에 대한 짧은 기사에서 지적했을 때 신경망은 오늘날이기 때문에 긴 단기 메모리 (LSTM) 신경망은 비디오에서 이전에 무엇이 왔는지 고려하면서 비디오의 단일 프레임에서 볼 수있는 것을 검토 할 수 있습니다. 예를 들어, 해변 파티가 해변가의 장면이라면 바구니 공 대신 해변 공이 봤던 것이 훨씬 더 확신합니다. 이 시작된 내부의 신경 네트워크와는 다르다는 점에서는 그 이미지 만 있으면 표시됩니다.
이것이 우리를 어디에서 얻을 수 있습니까?
인간과 같은 기술을 가진 광범위한 도움이되는 AI에서 객체 인식 결과가 개선되었습니다. 눈의 진화는 종종 54100 만년 전에 캄브리아 폭발로 알려진 생명체의 폭발의 주요 원인으로 인용되지만 그 원인에 대해 많은 논쟁이 있습니다.
그러나 그 눈이 진화했을 때 이미 그들을 사용하기 위해 이미 뇌의 형태가있었습니다. 그 두뇌는 이미 터치, 진동 및 냄새의 감각을 처리했습니다. 따라서 개선 된 객체 인식만으로는 혁명을 일으키지 않습니다. 인간과 같은 기술을 위해 우리의 AI는 훨씬 더 많은 정보가 필요합니다. 우리는 현재 우리가 필요로하는 것에 대한 비트와 아이디어가 있습니다.
수많은 수많은 동의가 우리의 AI가 계획 할 수 있도록 예측을해야한다는 것입니다. 이를 위해서는 세계의 내부 모델이나 이해를 가질 수 있으며, 이는이 예측의 기초로 사용될 수 있습니다. 와이어에 납땜 제안을 적용하는 인간의 기술을 위해 내부 모델은 제안이 연락을 취한 다음 계획을 기준으로 할 때 발생하는 일을 예측할 것입니다. 제안이 철사에 접촉 할 때, 상황이 예상되지 않으면 AI가 반응 할 것입니다.
Facebook에서 생성하는 Adverserial 네트워크 (GANS) 로의 최근 작업은 여기서 모델 및 예측 능력이 포함 된 출발점을 힌트 할 수 있습니다 (GANS에 익숙하지 않은 경우, 우리는 밝은 물품 신경망에 관한 짧은 기사를 참조하십시오. 오늘해야합니다). 이름의 “생성”부분은 이미지 생성을 의미합니다. 그러나 훨씬 더 구체적으로, 이들은 깊이 복잡한 GANS가 훈련 된 이미지에서 본 것을 이해하는 것을 포함한다는 것을 의미합니다. 예를 들어, 그들은 창문, 문 및 TV에 대해 알고 있으며 객실로가는 곳을 알고 있습니다.
ADGL 비디오 예측
예측을하는 것은 어떨까요? 페이스 북에서 훨씬 더 많은 일이 비디오 생성을 포함합니다. 적대 그라디언트 차이 손실 예측 자 (AGDL)를 사용하여 비디오의 다음 두 프레임이 무엇인지 예측합니다. 당구 게임의 사진에서 당신은 groun을 볼 수 있습니다.D 진리, 즉, 정말로 일어난 일과 AGDL 네트워크가 예상되는 것. 미래가 아닌 것은 아닙니다. 그러나 그것은 시작입니다.
그것들은 순진한 객체 인식기에서 인간의 기술을 가진 하나로의 길에서 적어도 작은 단계입니다.
폐쇄
이전에 개체를 인식하는 시작 신경망을 어디에서 보았을 수 있습니까? 우리는 차고 / 워크샵에서 물체를 인식하기 위해 RC 자동차에서 그것을 사용하여 [Lukas Biewald]를 다뤘습니다.
이 (가) 모든 사람들이 그대로 사용할 수있는 재미있는 동안, 다른 용도로 생각할 수 있습니까? 어떤 유용한 응용 프로그램을 생각할 수 있습니까? 추가 할 수있는 것은 무엇입니까? 아래의 의견을 알려주십시오.