Imaginary Cinema: Titanic, but with Manatees
[imaginary-cinema
art
manatees
llm
florida
gpt4
dall-e-3
]
Premise: Remake Titanic but with all the characters played by manatees…
That’s it. Think about it. (See also: The Titanic, but with Chiguiros)
description = LLMSynthesize["Describe 10 of the most visually compelling scenes in the movie \"Titanic\" with Leonardo DiCaprio. Describe the visual aspects of the background and the characters look like, without their names, using descriptive language. Make each description a separate string in a JSON list",
LLMEvaluator -> <|"Model" -> "gpt-4"|>];
descriptionText = First /@ Values@ImportString[#, "RawJSON"] &@Transliterate[description];
withManatees[description_String] := With[
{prompt = "Depict all of the characters as manatees having the physical descriptions in the text. Create these in a photorealistic cinematic style, as if in a movie. The scene is: " <> description},
ServiceExecute["OpenAI", "ImageCreate",
{"Prompt" -> prompt, "Model" -> "dall-e-3"}]];
result = AssociationMap[ withManatees, descriptionText]
Part II: The Drawing Room Sketch Scene
Inspired by the previous work, Crayonfou helped describe one other scene that was missing in the above, but is equally iconic. Here, we explored some basic prompt engineering to improve the designs. Some take-home lessons included:
-
Some additional descriptions were confusing
-
Forcing manatees to have blond hair or wear suspenders seemed to revert the characters to humans instead of manatees.
-
Occasional service outages due to content issues. Unclear whether this is just the preview service giving errors on Boxing Day holiday or something else. Trying exactly the same prompt again would result in images being generated.
Some of our best work below, with prompt details following:
Computational explorations/notebook:
We started maximally, and it was too much:
ServiceExecute["OpenAI", "ImageCreate",
{"Prompt" -> "In the background: a female nude manatee is reclining, wearing only a giant blue diamond necklace around her neck. She is reclining on an ornate 18th century sofa with red cushions. In the foreground: is a male manatee artist with blong hair who is holding a charcoal stick drawing the female manatee on an easel.",
"Model" -> "dall-e-3"}]
So, instead we decided to start minimally and build things up:
ServiceExecute["OpenAI", "ImageCreate",
{"Prompt" -> "In the background is a manateee reclining in an odalisque pose and wearing a blue diamond necklace around her neck.",
"Model" -> "dall-e-3"}]
Happy with those results, we then try to add the drawing in the foreground:
ServiceExecute["OpenAI", "ImageCreate",
{"Prompt" -> "In the background is a manateee reclining in an odalisque pose and wearing a blue diamond necklace around her, but no other jewelry. The manatee reclines on a ornate red sofa. In the foreground is a manatee who is drawing her.",
"Model" -> "dall-e-3"}]
Some fiddling with the prompt to specify explicitly that something is being drawn:
ServiceExecute["OpenAI", "ImageCreate",
{"Prompt" -> "In the background is a manateee reclining in an odalisque pose and wearing a blue diamond necklace around her, but no other jewelry. The manatee reclines on a ornate red sofa. In the foreground is another manatee who is making a charcoal sketch of the reclining manatee.",
"Model" -> "dall-e-3"}]
We tried to add hair, but it reverted the Leonardo diMantina back to a human:
ServiceExecute["OpenAI", "ImageCreate",
{"Prompt" -> "In the background is a manateee reclining in an odalisque pose and wearing a blue diamond necklace around her neck, but no other jewelry. The manatee reclines on a ornate red sofa. In the foreground is another manatee with blond hair, who is making a charcoal sketch of the reclining manatee.",
"Model" -> "dall-e-3"}]
Maybe it is the hair? Trying clothing instead also reverted him back to a human:
ServiceExecute["OpenAI", "ImageCreate",
{"Prompt" -> "In the background is a manateee reclining in an odalisque pose and wearing a blue diamond necklace around her neck, but no other jewelry. The manatee reclines on a ornate red sofa. In the foreground is another manatee with hair and wearing suspenders, who is making a charcoal sketch of the reclining manatee.",
"Model" -> "dall-e-3"}]
We also realized that the necklace was not placed correctly because we made a grammar mistake, so we try to force it back around her neck:
ServiceExecute["OpenAI", "ImageCreate",
{"Prompt" -> "In the background is a manateee reclining in an odalisque pose and wearing a blue diamond necklace around her neck, but no other jewelry. The manatee reclines on a ornate red sofa. In the foreground is another manatee who is making a charcoal sketch of the reclining manatee.",
"Model" -> "dall-e-3"}]
This seemed to work, we spin the dice to generate another one:
ServiceExecute["OpenAI", "ImageCreate",
{"Prompt" -> "In the background is a manateee reclining in an odalisque pose and wearing a blue diamond necklace around her neck, but no other jewelry. The manatee reclines on a ornate red sofa. In the foreground is another manatee who is making a charcoal sketch of the reclining manatee.",
"Model" -> "dall-e-3"}]
Looking good! So now we generate 10 of them in parallel:
outputs = ParallelTable[
ServiceExecute["OpenAI", "ImageCreate",
{"Prompt" -> "In the background is a manateee reclining in an odalisque pose and wearing a blue diamond necklace around her neck, but no other jewelry. The manatee reclines on a ornate red sofa. In the foreground is another manatee who is making a charcoal sketch of the reclining manatee.",
"Model" -> "dall-e-3"}],
{10}]
ToJekyll["Imaginary Cinema: Titanic, but with Manatees", "imaginary-cinema art manatees llm"]