[unknown-know in objects]
‘Surrealist Object’ versus ‘Narrated Dream’
content ‘Narrated Dream’
[Apollonian and the Dionysian]
[input model]
Deciphered Dreams
as it goes: Art critic announced that art wend through metal, fire and bubble.
Artists sought hard romance in objects. Gleeful audience settled as a Catholic school girl. Let there be struggle into the limelight.
1Slavoj Žižek, The Parallax View (Cambridge, Mass. ; London: Mit, 2009), ix.
2Salvador
3Alejandro Zaera-Polo, “The Politics of the Envelope,” Log, no. 13/14 (2008): 193–207, https://www.jstor.org/stable/41765249.
Tristan Tzara, the great poet of the anti-aesthetic movement - Dada, pointed out that Dada is not a style but rather a state of mind. The question is: what is this state of mind? Why do some artworks like Fountain by Duchamp have this uncanny power (whether it is generated from its aesthetic) to undermine our perception of what is art?
Slavoj Zizek has a methodology for his critical philosophical reading, a process that he called ‘short-circuit’: Intentionally short-circuiting a theme through the lens of a ‘minor’ conceptual apparatus.1 It can dissolve the interpreted text, exploring its ‘unthought’. For example, it allows one to perceive theories of Lacan through the lens of Hegal. On the other hand, Salvador Dalí develops a critical system, which he called Paranoiac Critical Method(PCM): A conscious way of putting oneself into a delirium of interpretation.2 These two methods are crucial for us to study the rational and irrational aesthetics of Dadaism and Surrealism.
In a ready-made object montage, the work is in a state of what Zizek called “a reality in the virtual” which is “produced and generated by something, which does not yet fully exist.” In this sense, architecture as a sphere shares the same analogy as Dada artworks. On the other hand, Alejandro Zaera-Polo points out that “globalisation has propelled a set of spatial typologies primarily determined by the capacity to conduct flow. Architects have tried to engage with this borderless space, the ‘space of flows’ ......presenting an image of the world as a chaotically flowing magma. However, a new picture is emerging in the form of bubbles and containers of a liquid reality.”3 Such reality has the freedom to dissolve, reconstruct and mutate in all forms in different spheres. A question arises, in what way this fluid reality interacts with people and influence beyond its container?
Fg.1.1. Diagram of the inner working system of the Paranoid Critical Method, “limp, unprovable conjectures generated through the deliberate simulation of paranoiac thought processes, supported(made critical) by the “crutches” of Cartesian rationality.Zizek believes that there is a kind of knowledge, described as the ‘unknown know’: things that we do not know that we know, which Psychoanalysts consider as ‘unconsciousness’4. The art processes of the Dadaism and Surrealism can be seen as a reveal or materialisation of this ‘unknown know’. The obscenity of it (such as the fountain or the Sound Poem “Karawane”) disrupts our bubbles (in the sense of Peter Sloterdijk5), dissolving its structure. Peter Sloterdijk believes that Surrealism presents itself unambiguously as a method of latency-breaking and background-dissolving. It attempts to sabotage the consensus created inside a sphere in order to liberate the radical intrinsic value of the events.
We, as the audience, fail in trying to grasp the meaning of this uncanny artwork. Instead of providing a transcendental experience, a Dada artwork or a Surrealist painting seems to intentionally discomfort or confuse its audience. There is a tension created in the bubble to provoke people to doubt, rethink, discuss and introspect. Such tension is also what helps generate an “authentic public space” mentioned by Zizek, where serious political discussion of the related subject can truly happen. However, these bubbles are disappearing under the air-conditioning inside and outside of today’s museum. The modern museum functions as a cypher of narrative. By providing linear ambulat and creating its own climate, it manages to reject, disconnect, and isolate the public from influencing this public sphere. Museums today are often attributed as a playground for bourgeois, deviating from its role as an introspective public realm. There is an imperative to create alternative art spaces for a new way to interact with art.
4 Slavoj Žižek, “The Reality of the Virtual,” https://www.youtube.com/watch?v=gBRToxGyKZo.
5 Peter Sloterdijk, Spheres. Volume 1, Bubbles Microspherology (South Pasadena, Ca: Semiotext(E, 2011), 60–63.
6 Tate, “‘Joseph Beuys. Every Man Is an Artist’, Joseph Beuys, 1978 | Tate,” Tate, 2019, https://www. tate.org.uk/art/artworks/beuys-joseph-beuys-every-man-is-an-artist-ar00704.
Aesthetics is a function. A function that can even be used for torture or rehabilitation. An example is the secret cells and torture centres inspired by avant-garde art, which was designed by Alphonse Laurencic in 1938. The avant-garde art became the skin and texture of this unpleasant sphere, irritating the prisoners inside constantly to think without having any answer. For Dada, art means life, art means this struggling. As Beuys said, everyone is an artist, social art is an art in that everyone can and must participate.6 Can we imagine an art space or a museum space filled with such cruel bubbles of different scales and qualities, where knowledge (which is never neutral) is not simply imbued and discussion between the art and audience can truly happen?
Fg.1.3. First International Dada Fair, art fair, Berlin, GermanyMementos: Related Images stored on the Internet
Dadaist poems
input
“short-circuit”
Disco Diffusion AI
A similar process of “The Paranoid Critical Method” to process the materials
Dislocation
Juxtaposition
Transformation
A reference for next image, but as if playing the popular game among the Dadaists - Decalcomania, AI can only see the last drawing.
Image
Animation Viewer
“Paranoiac-critical activity organizes and objectivizes in an exclusivist manner the limitless and unknown possibilities of the systematic association of subjective and objective ‘significance’ in the irrational ...it makes the world of delirium pass onto the plane of reality.”
Do AI dream of electric sheep?
# Note: If using a pixelart diffusion model, try adding “#pixelart” to the end of the prompt for a stronger effect. It’ll tend to work a lot better!
text_prompts = {
0: [“museum spheres, structure, inmate, art gallery, prison”], 40: [“art critic announced that art wend through metal, fire and bubble, giraffe”], 80: [“artist sought hard romance in objects, rabbit hole”], 120: [“gleeful audience settled as a Catholic school girl”], 160: [“Let there be struggle into the limelight”],
image_prompts = {
# 0:[‘ImagePromptsWorkButArentVeryGood.png:2’,],
} #@title Do the Run!
#@markdown `n_batches` ignored with animation modes. display_rate = 20 #@param{type: ‘number’}
n_batches = 50 #@param{type: ‘number’}
if animation_mode == ‘Video Input’: steps = video_init_steps
#Update Model Settings
timestep_respacing = f’ddim{steps}’ diffusion_steps = (1000//steps)*steps if steps < 1000 else steps model_config.update({
‘timestep_respacing’: timestep_respacing, ‘diffusion_steps’: diffusion_steps,
}) batch_size = 1
def move_files(start_num, end_num, old_folder, new_folder): for i in range(start_num, end_num): old_file = old_folder + f’/{batch_name}({batchNum})_{i:04}.png’ new_file = new_folder + f’/{batch_name}({batchNum})_{i:04}.png’ os.rename(old_file, new_file)
#@markdown ---
resume_run = False #@param{type: ‘boolean’} run_to_resume = ‘latest’ #@param{type: ‘string’}
resume_from_frame = ‘latest’ #@param{type: ‘string’} retain_overwritten_frames = False #@param{type: ‘boolean’} if retain_overwritten_frames: retainFolder = f’{batchFolder}/retained’ createPath(retainFolder)
skip_step_ratio = int(frames_skip_steps.rstrip(“%”)) / 100 calc_frames_skip_steps = math.floor(steps * skip_step_ratio)
if animation_mode == ‘Video Input’: frames = sorted(glob(in_path+’/*.*’));
if len(frames)==0:
sys.exit(“ERROR: 0 frames found.\nPlease check your video input path and rerun the video settings cell.”) flows = glob(flo_folder+’/*.*’)
if (len(flows)==0) and video_init_flow_warp: sys.exit(“ERROR: 0 flow files found.\nPlease rerun the flow generation cell.”) if steps <= calc_frames_skip_steps: sys.exit(“ERROR: You can’t skip more steps than your total steps”)
if resume_run: if run_to_resume == ‘latest’: try:
batchNum except:
batchNum = len(glob(f”{batchFolder}/{batch_name}(*)_settings.txt”))-1
else: batchNum = int(run_to_resume)
if resume_from_frame == ‘latest’: start_frame = len(glob(batchFolder+f”/{batch_name}({batchNum})_*.png”))
if animation_mode != ‘3D’ and turbo_mode == True and start_frame > turbo_preroll and start_frame % int(turbo_steps) != 0:
start_frame = start_frame - (start_frame % int(turbo_steps))
else: start_frame = int(resume_from_frame)+1
if animation_mode != ‘3D’ and turbo_mode == True and start_frame > turbo_preroll and start_frame % int(turbo_steps) != 0:
batchNum = len(glob(batchFolder+”/*.txt”)) while os.path.isfile(f”{batchFolder}/{batch_name}({batchNum})_settings.txt”) or os.path.isfile(f”{batchFolder}/{batch_name}-{batchNum}_settings.txt”):
batchNum += 1
print(f’Starting Run: {batch_name}({batchNum}) at frame {start_frame}’)
if set_seed == ‘random_seed’: random.seed() seed = random.randint(0, 2**32) # print(f’Using seed: {seed}’)
else: seed = int(set_seed)
args = { ‘batchNum’: batchNum, ‘prompts_series’:split_prompts(text_prompts) if text_prompts else None, ‘image_prompts_series’:split_prompts(image_prompts) if image_prompts else None, ‘seed’: seed, ‘display_rate’:display_rate, ‘n_batches’:n_batches if animation_mode == ‘None’ else 1, ‘batch_size’:batch_size, ‘batch_name’: batch_name, ‘steps’: steps, ‘diffusion_sampling_mode’: diffusion_sampling_mode, ‘width_height’: width_height, ‘clip_guidance_scale’: clip_guidance_scale, ‘tv_scale’: tv_scale, ‘range_scale’: range_scale, ‘sat_scale’: sat_scale, ‘cutn_batches’: cutn_batches, ‘init_image’: init_image, ‘init_scale’: init_scale, ‘skip_steps’: skip_steps, ‘side_x’: side_x, ‘side_y’: side_y, ‘timestep_respacing’: timestep_respacing, ‘diffusion_steps’: diffusion_steps, ‘animation_mode’: animation_mode, ‘video_init_path’: video_init_path, ‘extract_nth_frame’: extract_nth_frame, ‘video_init_seed_continuity’: video_init_seed_continuity, ‘key_frames’: key_frames, ‘max_frames’: max_frames if animation_mode != “None” else 1, ‘interp_spline’: interp_spline, ‘start_frame’: start_frame, ‘angle’: angle, ‘zoom’: zoom, ‘translation_x’: translation_x, ‘translation_y’: translation_y, ‘translation_z’: translation_z, ‘rotation_3d_x’: rotation_3d_x, ‘rotation_3d_y’: rotation_3d_y, ‘rotation_3d_z’: rotation_3d_z, ‘midas_depth_model’: midas_depth_model, ‘midas_weight’: midas_weight,
#@markdown ####**Animation Mode:**
animation_mode = ‘2D’ #@param [‘None’, ‘2D’, ‘3D’, ‘Video Input’] {type:’string’} #@markdown *For animation, you probably want to turn `cutn_batches` to 1 to make it quicker.*
#@markdown ---
#@markdown ####**Video Input Settings:** if is_colab:
video_init_path = “dali.png” #@param {type: ‘string’} else:
video_init_path = “init.mp4” #@param {type: ‘string’}
extract_nth_frame = 2 #@param {type: ‘number’}
persistent_frame_output_in_batch_folder = True #@param {type: ‘boolean’}
video_init_seed_continuity = True #@param {type: ‘boolean’}
#@markdown #####**Video Optical Flow Settings:**
video_init_flow_warp = True #@param {type: ‘boolean’}
try: for f in pathlib.Path(f’{videoFramesFolder}’).glob(‘*.jpg’): f.unlink()
except: print(‘’) vf = f’select=not(mod(n\,{extract_nth_frame}))’ if os.path.exists(video_init_path): subprocess.run([‘ffmpeg’, ‘-i’, f’{video_init_path}’, ‘-vf’, f’{vf}’, ‘-vsync’, ‘vfr’, ‘-q:v’, ‘2’, ‘-loglevel’, ‘error’, ‘-stats’, f’{videoFramesFolder}/%04d.jpg’], stdout=subprocess.PIPE).stdout.decode(‘utf-8’)
else:
print(f’\nWARNING!\n\nVideo not found: {video_init_path}.\nPlease check your video path.\n’)
#!ffmpeg -i {video_init_path} -vf {vf} -vsync vfr -q:v 2 -loglevel error -stats {videoFramesFolder}/%04d.jpg
#@markdown ---
#@markdown ####**2D Animation Settings:**
#@markdown `zoom` is a multiplier of dimensions, 1 is no zoom.
#@markdown All rotations are provided in degrees.
key_frames = True #@param {type:”boolean”}
max_frames = 200#@param {type:”number”}
if animation_mode == “Video Input”: max_frames = len(glob(f’{videoFramesFolder}/*.jpg’))
interp_spline = ‘Linear’ #Do not change, currently will not look good. param [‘Linear’,’Quadratic’,’Cubic’]{type:”string”} angle = “0:(0)”#@param {type:”string”}
zoom = “0: (1), 10: (1)”#@param {type:”string”}
translation_x = “0: (0)”#@param {type:”string”}
translation_y = “0: (0)”#@param {type:”string”}
translation_z = “0: (15.0)”#@param {type:”string”}
rotation_3d_x = “0: (0)”#@param {type:”string”}
rotation_3d_y = “0: (0)”#@param {type:”string”}
rotation_3d_z = “0: (0)”#@param {type:”string”}
midas_depth_model = “dpt_large”#@param {type:”string”}
midas_weight = 0.3#@param {type:”number”}
near_plane = 200#@param {type:”number”}
far_plane = 10000#@param {type:”number”}
fov = 40#@param {type:”number”}
padding_mode = ‘border’#@param {type:”string”} sampling_mode = ‘bicubic’#@param {type:”string”}
#======= TURBO MODE
#@markdown --#@markdown ####**Turbo Mode (3D anim only):**
#@markdown (Starts after frame 10,) skips diffusion steps and just uses depth map to warp images for skipped frames. #@markdown Speeds up rendering by 2x-4x, and may improve image coherence between frames. #@markdown For different settings tuned for Turbo Mode, refer to the original Disco-Turbo Github: https://github.com/zippy731/ disco-diffusion-turbo
turbo_mode = False #@param {type:”boolean”}
turbo_steps = “3” #@param [“2”,”3”,”4”,”5”,”6”] {type:”string”}
turbo_preroll = 10 # frames
#insist turbo be used only w 3d anim. if turbo_mode and animation_mode != ‘3D’: print(‘=====’) print(‘Turbo mode only available with 3D animations. Disabling Turbo.’)
print(‘=====’)
turbo_mode = False
#@markdown ---
#@markdown ####**Coherency Settings:**
#@markdown `frame_scale` tries to guide the new frame to looking like the old one. A good default is 1500.
frames_scale = 1500 #@param{type: ‘integer’}
#@markdown `frame_skip_steps` will blur the previous frame - higher values will flicker less but struggle to add enough new detail to zoom into.
frames_skip_steps = ‘60%’ #@param [‘40%’, ‘50%’, ‘60%’, ‘70%’, ‘80%’] {type: ‘string’}
#@markdown ####**Video Init Coherency Settings:**
#@markdown `frame_scale` tries to guide the new frame to looking like the old one. A good default is 1500.
video_init_frames_scale = 1500 #@param{type: ‘integer’}
else:
start_frame = start_frame - (start_frame % int(turbo_steps)) if retain_overwritten_frames is True: existing_frames = len(glob(batchFolder+f”/{batch_name}({batchNum})_*.png”))
frames_to_save = existing_frames - start_frame
print(f’Moving {frames_to_save} frames to the Retained folder’) move_files(start_frame, existing_frames, batchFolder, retainFolder)
start_frame = 0
# Call optical flow from video frames and warp prev frame with flow video_init_flow_blend = 0.999#@param {type: ‘number’} #0 - take next frame, 1 - take prev warped frame video_init_check_consistency = False #Insert param here when ready video_init_blend_mode = “optical flow” #@param [‘None’, ‘linear’, ‘optical flow’] # Call optical flow from video frames and warp prev frame with flow if animation_mode == “Video Input”: if persistent_frame_output_in_batch_folder or (not is_colab): #suggested by Chris the Wizard#8082 at discord videoFramesFolder = f’{batchFolder}/videoFrames’ else: videoFramesFolder = f’/content/videoFrames’ createPath(videoFramesFolder) print(f”Exporting Video Frames (1 every {extract_nth_frame})...”)
#@markdown `frame_skip_steps` will blur the previous frame - higher values will flicker less but struggle to add enough new detail to zoom into.
video_init_frames_skip_steps = ‘70%’ #@param [‘40%’, ‘50%’, ‘60%’, ‘70%’, ‘80%’] {type: ‘string’}
#======= VR MODE #@markdown ---
#@markdown ####**VR Mode (3D anim only):**
#@markdown Enables stereo rendering of left/right eye views (supporting Turbo) which use a different (fish-eye) camera projection matrix.
#@markdown Note the images you’re prompting will work better if they have some inherent wide-angle aspect #@markdown The generated images will need to be combined into left/right videos. These can then be stitched into the VR180 format.
7 Chitwan Saharia et al., “Photorealistic Text-To-Image Diffusion Models with Deep Language Understanding,” n.d., https://arxiv.org/pdf/2205.11487.pdf.
Do AI dream of electric sheep? The short answer is yes. AIs have learnt to dream for us. They dream with our mementoes, with our most obscene desires. So far, the result of the Convolutional Neural Network (CNN) often presents us with an uncanny scene of dislocation, juxtaposition, and transformation of symbolic images.7 These images are often considered “meaningless” or “lack of human touch”. Till today, scientists and researchers have been training AI to produce more “meaningful” and “realistic” images ever since the 1960s. It seems only natural for us to try to understand our creations.
On the other hand, Lacanian psychologists develop psychoanalysis so that humans can better understand the dream and unconscious mind. What if we can do a psychoanalysis session with the dreaming AI? When an Algorithm is producing images after deep learning, in a way, it can be more paranoic than most of us. By intentionally short-circuiting this AI, we can use the AI as the collage, dreaming apparatus to serve as a mediator to describe our dream for us. Unlike a common AI illustrator, the program does not aim to create images that “make sense” but for the sake of paranoically exploring our collective dreams stored on the internet.
Dadaist poems are like somniloquies – ridiculous, fragmented and meaningless. However, it sometimes shows a rhythm of metaphor, symbolisation and prophecy. As the miserable fate of Cassandra8, people will never take these somniloquies seriously. By inputting Dadaist poems, AI can be short-circuited to generate images that may potentially indicate how we perceive these somniloquies. The AI structure functions like a virtual museum without form.
Surrealist artists like Salvador Dalí, and Andre Breton used automatic techniques to embody art with a higher degree of spontaneity and automatism so they can play with this unconsciousness of humans. Dalí created the methodology - the Paranoid Critical Method to help him perceive reality based on a “delirium of interpretation”. As Dalí writes in Conquest of the Irrational, “Paranoiac-critical activity organizes and objectives in an exclusivist manner the limitless and unknown possibilities of the systematic association of subjective and objective ‘significance’ in the irrational ...it makes the world of delirium pass onto the plane of reality.” 9
When AI is fed with fragmented poems, it will follow the order to produce irrational images based on photorealism. Just like a Surrealist artist, it aims to produce its precise art as mechanically as possible, representing a subconscious vision of the collective mind.
8 Cassandra or Kassandra, a Trojan priestess dedicated to the god Apollo and fated by him to utter true prophecies but never to be believed in Greek mythology. 9 Dalvador Dalí and David Gascoyne, Conquest of the Irrational (New York: Julien Levy, 1935).