Mercurial > cortex
comparison thesis/cortex.tex @ 425:efba8526a662
happy with code formatting.
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Fri, 21 Mar 2014 02:48:23 -0400 |
parents | 6b0f77df0e53 |
children | 435b5e22d72a |
comparison
equal
deleted
inserted
replaced
424:d55197a40b47 | 425:efba8526a662 |
---|---|
1 d | 1 |
2 \section{Artificial Imagination} | |
3 \label{sec-1} | |
4 | |
5 Imagine watching a video of someone skateboarding. When you watch | |
6 the video, you can imagine yourself skateboarding, and your | |
7 knowledge of the human body and its dynamics guides your | |
8 interpretation of the scene. For example, even if the skateboarder | |
9 is partially occluded, you can infer the positions of his arms and | |
10 body from your own knowledge of how your body would be positioned if | |
11 you were skateboarding. If the skateboarder suffers an accident, you | |
12 wince in sympathy, imagining the pain your own body would experience | |
13 if it were in the same situation. This empathy with other people | |
14 guides our understanding of whatever they are doing because it is a | |
15 powerful constraint on what is probable and possible. In order to | |
16 make use of this powerful empathy constraint, I need a system that | |
17 can generate and make sense of sensory data from the many different | |
18 senses that humans possess. The two key proprieties of such a system | |
19 are \emph{embodiment} and \emph{imagination}. | |
20 | |
21 \subsection{What is imagination?} | |
22 \label{sec-1-1} | |
23 | |
24 One kind of imagination is \emph{sympathetic} imagination: you imagine | |
25 yourself in the position of something/someone you are | |
26 observing. This type of imagination comes into play when you follow | |
27 along visually when watching someone perform actions, or when you | |
28 sympathetically grimace when someone hurts themselves. This type of | |
29 imagination uses the constraints you have learned about your own | |
30 body to highly constrain the possibilities in whatever you are | |
31 seeing. It uses all your senses to including your senses of touch, | |
32 proprioception, etc. Humans are flexible when it comes to "putting | |
33 themselves in another's shoes," and can sympathetically understand | |
34 not only other humans, but entities ranging from animals to cartoon | |
35 characters to \href{http://www.youtube.com/watch?v=0jz4HcwTQmU}{single dots} on a screen! | |
2 | 36 |
3 | 37 |
4 lol whatevar | 38 \begin{figure}[htb] |
39 \centering | |
40 \includegraphics[width=5cm]{./images/cat-drinking.jpg} | |
41 \caption{A cat drinking some water. Identifying this action is beyond the state of the art for computers.} | |
42 \end{figure} | |
5 | 43 |
6 \section{lol} | 44 |
7 \label{sec-1} | 45 This is a basic test for the vision system. It only tests the |
46 vision-pipeline and does not deal with loading eyes from a blender | |
47 file. The code creates two videos of the same rotating cube from | |
48 different angles. | |
49 | |
50 | |
51 \begin{clojurecode} | |
52 (in-ns 'cortex.test.vision) | |
53 | |
54 (defn test-pipeline | |
55 "Testing vision: | |
56 Tests the vision system by creating two views of the same rotating | |
57 object from different angles and displaying both of those views in | |
58 JFrames. | |
59 | |
60 You should see a rotating cube, and two windows, | |
61 each displaying a different view of the cube." | |
62 ([] (test-pipeline false)) | |
63 ([record?] | |
64 (let [candy | |
65 (box 1 1 1 :physical? false :color ColorRGBA/Blue)] | |
66 (world | |
67 (doto (Node.) | |
68 (.attachChild candy)) | |
69 {} | |
70 (fn [world] | |
71 (let [cam (.clone (.getCamera world)) | |
72 width (.getWidth cam) | |
73 height (.getHeight cam)] | |
74 (add-camera! world cam | |
75 (comp | |
76 (view-image | |
77 (if record? | |
78 (File. "/home/r/proj/cortex/render/vision/1"))) | |
79 BufferedImage!)) | |
80 (add-camera! world | |
81 (doto (.clone cam) | |
82 (.setLocation (Vector3f. -10 0 0)) | |
83 (.lookAt Vector3f/ZERO Vector3f/UNIT_Y)) | |
84 (comp | |
85 (view-image | |
86 (if record? | |
87 (File. "/home/r/proj/cortex/render/vision/2"))) | |
88 BufferedImage!)) | |
89 (let [timer (IsoTimer. 60)] | |
90 (.setTimer world timer) | |
91 (display-dilated-time world timer)) | |
92 ;; This is here to restore the main view | |
93 ;; after the other views have completed processing | |
94 (add-camera! world (.getCamera world) no-op))) | |
95 (fn [world tpf] | |
96 (.rotate candy (* tpf 0.2) 0 0)))))) | |
97 \end{clojurecode} |