Mercurial > cortex
diff thesis/garbage_cortex.org @ 432:1e5ea711857d
abstract first draft.
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sun, 23 Mar 2014 16:33:01 -0400 |
parents | |
children | 90b236381642 |
line wrap: on
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/thesis/garbage_cortex.org Sun Mar 23 16:33:01 2014 -0400 1.3 @@ -0,0 +1,100 @@ 1.4 +#+title: =CORTEX= 1.5 +#+author: Robert McIntyre 1.6 +#+email: rlm@mit.edu 1.7 +#+description: Using embodied AI to facilitate Artificial Imagination. 1.8 +#+keywords: AI, clojure, embodiment 1.9 + 1.10 +* Artificial Imagination 1.11 + 1.12 + Imagine watching a video of someone skateboarding. When you watch 1.13 + the video, you can imagine yourself skateboarding, and your 1.14 + knowledge of the human body and its dynamics guides your 1.15 + interpretation of the scene. For example, even if the skateboarder 1.16 + is partially occluded, you can infer the positions of his arms and 1.17 + body from your own knowledge of how your body would be positioned if 1.18 + you were skateboarding. If the skateboarder suffers an accident, you 1.19 + wince in sympathy, imagining the pain your own body would experience 1.20 + if it were in the same situation. This empathy with other people 1.21 + guides our understanding of whatever they are doing because it is a 1.22 + powerful constraint on what is probable and possible. In order to 1.23 + make use of this powerful empathy constraint, I need a system that 1.24 + can generate and make sense of sensory data from the many different 1.25 + senses that humans possess. The two key proprieties of such a system 1.26 + are /embodiment/ and /imagination/. 1.27 + 1.28 +** What is imagination? 1.29 + 1.30 + One kind of imagination is /sympathetic/ imagination: you imagine 1.31 + yourself in the position of something/someone you are 1.32 + observing. This type of imagination comes into play when you follow 1.33 + along visually when watching someone perform actions, or when you 1.34 + sympathetically grimace when someone hurts themselves. This type of 1.35 + imagination uses the constraints you have learned about your own 1.36 + body to highly constrain the possibilities in whatever you are 1.37 + seeing. It uses all your senses to including your senses of touch, 1.38 + proprioception, etc. Humans are flexible when it comes to "putting 1.39 + themselves in another's shoes," and can sympathetically understand 1.40 + not only other humans, but entities ranging from animals to cartoon 1.41 + characters to [[http://www.youtube.com/watch?v=0jz4HcwTQmU][single dots]] on a screen! 1.42 + 1.43 + 1.44 + #+caption: A cat drinking some water. Identifying this action is beyond the state of the art for computers. 1.45 + #+ATTR_LaTeX: :width 5cm 1.46 + [[./images/cat-drinking.jpg]] 1.47 + 1.48 + 1.49 +#+begin_listing clojure 1.50 +\caption{This is a basic test for the vision system. It only tests the vision-pipeline and does not deal with loading eyes from a blender file. The code creates two videos of the same rotating cube from different angles.} 1.51 +#+name: test-1 1.52 +#+begin_src clojure 1.53 +(defn test-pipeline 1.54 + "Testing vision: 1.55 + Tests the vision system by creating two views of the same rotating 1.56 + object from different angles and displaying both of those views in 1.57 + JFrames. 1.58 + 1.59 + You should see a rotating cube, and two windows, 1.60 + each displaying a different view of the cube." 1.61 + ([] (test-pipeline false)) 1.62 + ([record?] 1.63 + (let [candy 1.64 + (box 1 1 1 :physical? false :color ColorRGBA/Blue)] 1.65 + (world 1.66 + (doto (Node.) 1.67 + (.attachChild candy)) 1.68 + {} 1.69 + (fn [world] 1.70 + (let [cam (.clone (.getCamera world)) 1.71 + width (.getWidth cam) 1.72 + height (.getHeight cam)] 1.73 + (add-camera! world cam 1.74 + (comp 1.75 + (view-image 1.76 + (if record? 1.77 + (File. "/home/r/proj/cortex/render/vision/1"))) 1.78 + BufferedImage!)) 1.79 + (add-camera! world 1.80 + (doto (.clone cam) 1.81 + (.setLocation (Vector3f. -10 0 0)) 1.82 + (.lookAt Vector3f/ZERO Vector3f/UNIT_Y)) 1.83 + (comp 1.84 + (view-image 1.85 + (if record? 1.86 + (File. "/home/r/proj/cortex/render/vision/2"))) 1.87 + BufferedImage!)) 1.88 + (let [timer (IsoTimer. 60)] 1.89 + (.setTimer world timer) 1.90 + (display-dilated-time world timer)) 1.91 + ;; This is here to restore the main view 1.92 + ;; after the other views have completed processing 1.93 + (add-camera! world (.getCamera world) no-op))) 1.94 + (fn [world tpf] 1.95 + (.rotate candy (* tpf 0.2) 0 0)))))) 1.96 +#+end_src 1.97 +#+end_listing 1.98 + 1.99 +- This is test1 \cite{Tappert77}. 1.100 + 1.101 +\cite{Tappert77} 1.102 +lol 1.103 +\cite{Tappert77} 1.104 \ No newline at end of file