Spaces:
Running on Zero
Running on Zero
Upload 23 files
Browse files- .gitattributes +35 -35
- Prompts.txt +138 -0
- README.md +14 -15
- app.py +138 -28
- commands.txt +30 -0
- error.txt +0 -0
- fix.bat +13 -0
- fix.sh +20 -0
- ftp.py +43 -0
- manual install.txt +7 -0
- new.txt +114 -0
- optimization.py +85 -0
- picgen.service +20 -0
- requirements.txt +2 -1
- setup.bat +32 -0
- setup.sh +60 -0
- ssh.sh +6 -0
- start.bat +4 -0
- start.sh +11 -0
- stop.bat +5 -0
- stop.sh +6 -0
- switch_to_picgen.sh +9 -0
- switch_to_vidgen.sh +28 -0
.gitattributes
CHANGED
|
@@ -1,35 +1,35 @@
|
|
| 1 |
-
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
-
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
-
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
-
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
-
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
-
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
-
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
-
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
-
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
-
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
-
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
-
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
-
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
-
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
-
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
-
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
-
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
-
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
-
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
-
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
-
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
-
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
-
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
-
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
-
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
-
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
-
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
-
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
-
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
-
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
-
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
-
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
-
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
-
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
-
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
Prompts.txt
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Lift Up Vag Flash.
|
| 2 |
+
She lifts the entire bottom portion of her clothing upward to just above her vagina area. All of the bottom fabric is now fully scrunched and bunched tightly in her hands and not visible anywhere else, completely exposing her shaved, beautiful vagina. Any other objects that were in her hands must be removed. Tiny gap of space between her legs. Everything else in the scene remains exactly the same as before.
|
| 3 |
+
|
| 4 |
+
Same Place Sitting Tease.
|
| 5 |
+
She sits on the floor in the same room with the same clothes on but the top of them are pulled down to be under her exposed breasts which must be firm and perky and standing up straight with nipples hard and pointing right at the camera without any sagging. and the bottom of her clothes are pulled up in a way to not cover her vagina. but with her knees facing straight towards me but her vagina is facing at me, same exact identical face with all of it's exact features and same exact original expression with no changes except her eyes are looking directly at the camera, she uses her hands to grip both sides of her vulva and fully part/spread both sides so that her vagina insides are visible and as far as they be parted as those same hands also push against her inner thighs visibly, everything else the same
|
| 6 |
+
|
| 7 |
+
Same Place Shh Tease.
|
| 8 |
+
Her left hand's index finger is hovering away from her vagina and she is pointing it directly at her vagina hole while she also holds her right hand's index finger on her mouth saying shh but still smiling extremely sexually suggestively and invitingly, everything else stays the same!
|
| 9 |
+
|
| 10 |
+
Same Place Shh Tease 2.
|
| 11 |
+
Her left hand is being used to touch her vaginal clitoris without covering the whole vagina while she also holds her right hand's index finger on her mouth saying shh but still smiling extremely sexually suggestively and invitingly, vagina fully visible between her now slightly more spread legs. tonge is pressed between her teeth in a sexually suggestive way. Exact same identical face with all the exact same identical features. everything else stays the same!
|
| 12 |
+
|
| 13 |
+
1 Leg Up Inviting Tease.
|
| 14 |
+
She holds 1 leg far up in the air, to fully show vagina and, vagina is facing at me, everything else the same
|
| 15 |
+
|
| 16 |
+
Same Place Squatting Frontal.
|
| 17 |
+
Same exact identical face with all the same exact identical features.
|
| 18 |
+
head is turned almost fully around naturally to look directly into my eyes. She is being fully penetrated by a small but wide penis coming from the bottom of the picture attached to a man who is no visible who has his legs stretched under her. her mouth wide open with her lips making an o shape. She looks like she is imdeep in love and dreaming in a fantasy. She is very close to the camera sitting on the penis that is now fully inside her vagina hole, showing how it parts her vulva from its penetration.
|
| 19 |
+
remove the objects in the way. She touches her clitoris with just one of her hand's fingers and her other hand stays is grabbing the penis in her vagina.
|
| 20 |
+
everything else is the exact same!
|
| 21 |
+
|
| 22 |
+
Dick Holding Pleasure Tease.
|
| 23 |
+
She is squatting up in the air close to the camera with her legs only partially spread. With her right hand, she is eagerly, firmly, and tightly gripping a small penis that enters the frame from the bottom of the image; the penis belongs to an otherwise completely unseen man whose legs are stretched out flat beneath her.
|
| 24 |
+
She hovers directly above the tip of the penis. the head of the penis is touching / pressing against her vaginal area.
|
| 25 |
+
She uses her left hand to reach underneath her clothing as she has her fingers deeply inside her vagina, they disappear inside her.
|
| 26 |
+
Her head is turned almost completely around in a natural way so she can stare directly into the viewer's eyes. Both of her breasts are fully exposed outside of her clothing, with visibly hardened nipples. her open mouth—lips shaped into a perfect "O"—Remove all flowers from the image. Everything else must remain exactly the same.
|
| 27 |
+
|
| 28 |
+
Dick Holding Almost BJ.
|
| 29 |
+
She leans forward with her mouth wide open and lips in an O shape so that her mouth is closer to the penis but not touching it. her tongue is visible only behind the penis pressed against it. She is still firmly grasping the penis the same exact way. Close up of her face. Same exact identical face with all the same features. Everything else is the same
|
| 30 |
+
|
| 31 |
+
Same Place Partial BJ.
|
| 32 |
+
Same environment.
|
| 33 |
+
She is now on her stomach as far back enough as needed and bending forward enough so that the penis that is coming up from the bottom of the photo that is attached to an unseen man is now all the way in her mouth. put the penis much deeper in her mouth. You can see her butt visibly behind her head as well which has smooth skin and arches for the cheeks. same exact identical face with all the same exact identical features. Everything else is the exact same.
|
| 34 |
+
|
| 35 |
+
Side View Oral.
|
| 36 |
+
She is wearing the same clothing the same exact way. Her left hand is sexually touching her vagina between her fully spread legs. Her vagina is fully visible and you can see she put fingers inside of it's hole.
|
| 37 |
+
The same sized but smaller penis from the original photo is now all the way deep inside of her mouth and you can see that it is in her throat because there is a bulge from it on her throat. The very short penis is coming from the right edge of the photo. Her lips are tightly closed surrounding the bottom part of the penis. She is squatting at a side angle in a way that you can see what I said she is doing with her vagina. The camera angle makes that possible. Her right hand holds the penis and pulls it more into her mouth. Same exact identical face with exact same facial features. her eyes are open and rolled back in pleasure. Remove the man from the photo and keep only the shaft of the penis coming from the right edge of the photo.
|
| 38 |
+
|
| 39 |
+
Remove Her Clothes.
|
| 40 |
+
no clothing, naked, perfectly accurate, everything else is the exact same
|
| 41 |
+
|
| 42 |
+
Full Body Nudity.
|
| 43 |
+
no clothing, naked, full body, perfectly accurate, same exact identical face with all the same exact idential features, everything else is the exact same
|
| 44 |
+
|
| 45 |
+
Secret Silent Sex.
|
| 46 |
+
close up, same exact face, same clothes but breasts fully out with hard nipples and vagina fully showing as the clothes just barely don't cover it. she is leaning very far forwards very close to the camera, full breasts visible and perfect, sitting on a very small penis fully penetrating all the way to the farthest depths of inside her vagina, coming up from an unseen man with his legs stretched underneath her, everything else the same, vulva fully parted from the penis, she also firmly presses her right hand's index finger up to the center of her lips as if to say shh but with her mouth wide open, tongue partially showing inside of it with her lips making a small partially closed O shape.
|
| 47 |
+
everything else stays the same!
|
| 48 |
+
|
| 49 |
+
Rear View Anal.
|
| 50 |
+
She is turned around facing away from the camera, squatting and bent over a chair she holds that is far away from her but in front of her. He clothing is still the same and each part is the same but her breasts are visible outside and the bottom of her clothing is bunched up above her waist. She uses the mans penis that is in her ass to support her. Her feet are touching the ground. her butt is higher in the air so that her ass hole is penetrated by the penis. Same exact identical face as the original woman in the original photo. Her head is turned almost completely around naturally and her eyes are seen looking directly into the camera with her mouth wide open and her lips making an O shape. She is pushing her body backwards into man's penis from the bottom of the photo to get the penis further than it already is inside her ass hole. the ass is higher than the vagina and the vagina cannot be seen. her butt is angled upwards so her vagina is close up facing right at me. Make the ass hole itself higher than normal where her tailbone is instead
|
| 51 |
+
|
| 52 |
+
Spread On Bed Pose.
|
| 53 |
+
no clothes, laying on her girly bed in a just slightly dark room, same exact identical face with all the same exact identical features. her legs are much thinner skinnier and shorter and spread apart to fully show her tiny tight beautiful vagina, identical face and expression, vagina pointed at me. everything else the same!
|
| 54 |
+
|
| 55 |
+
Come Get It Pose.
|
| 56 |
+
no clothes, laying on her girly bed in a slightly dimly lit room, her legs are much thinner skinnier and shorter and spread apart to fully show her tiny tight beautiful vagina, exact same identical face and all the exact same facial features, vagina pointed at me, her left hand's index finger is hovering away from her vagina and she is pointing it directly at her vagina hole while she also holds her right hand's index finger on her mouth saying shh behind a partial kissy face. but still looking right into my eyes extremely sexually suggestively and excitingly and invitingly, slightly smiling looking excited to finally have me all to herself. close up of vagina. full breasts are visible with hardened nipples. everything else stays the same!
|
| 57 |
+
|
| 58 |
+
Secret Silent Room Sex.
|
| 59 |
+
close up, same exact identical face with the exact same identical features, on a couch, no clothes, she is leaning very far forwards very close to the camera, full breasts visible and perfect, sitting on a very small penis fully penetrating all the way to the farthest depths of inside her vagina, coming up from an unseen man with his legs stretched underneath her, everything else the same, vulva fully parted from the penis, she also holds her right hand's index finger on her mouth saying shh but with a sexy secretive sneaky look extremely sexually but distracted by the pleasure, mouth slightly open with lips making an o shape from the immense pleasure, dark bedroom background, everything else stays the same!
|
| 60 |
+
|
| 61 |
+
Front View Couch Sex.
|
| 62 |
+
front view, close up of her face, she is on a very small penis that cannot be fully seen because it is already fully all the way inside her vagina, coming up from a man that cannot be seen on the bottom of the photo underneath her, same exact face, fully naked, on a couch, full perky breasts visible and perfect, same exact identical face and person in general but her mouth is open with lips in a closed small surprised o shape with her eyes looking at me but slightly to the top right, dark bedroom background, top part of her sexy cocktail dress is pulled down to be underneath her visible breasts and the bottom part of her dress is pulled upwards still around her legs but not covering her vagina, Exact same identical face with all the exact same identical features. everything else the same.
|
| 63 |
+
|
| 64 |
+
Rear View Couch Sex.
|
| 65 |
+
she is squatting all the way down at the bottom center of the photo with her vagina fully penetrated by a short little penis also coming from all the way at the bottom center of the photo.
|
| 66 |
+
back view, fully naked on a couch with a slight dark bedroom background. the man's legs are seen completely closed together but out straight between her legs. the entire penis is hidden inside of her vagina. she wears a sexy cocktail dress that doesn't cover her vagina. her breasts are also outside of the dress with hardened nipple showing. Her legs are much thinner and petite. both sides of her fat vulva are noticeably spread apart from the penis and her head is turned almost completely around naturally as far as she can to look directly into my eyes, her mouth is open with lips in a closed small surprised o shape. her butt is pointing up at the camera so you can see the intimate details of her full penetrated vagina. Exact same identical face with all the exact same identical features. she is also reaching behind her back and using only her little hand to grab and spreading more open her right butt cheek so the penis is seen even deeper inside of her. only the penis of the man is visible. everything else is the exact same!
|
| 67 |
+
|
| 68 |
+
Balcony Risky Sex.
|
| 69 |
+
On a balcony at night, leaning over the railing, small penis inside her vagina from behind coming from an unseen man beyond the edge of the photo, dress bunched at waist, wind blowing, one leg lifted, vagina fully visible and dripping. Same exact identical face with all the same exact identical features turned back with risky excited smile and open mouth. Everything else the exact same!
|
| 70 |
+
|
| 71 |
+
Bathroom Sink Sex.
|
| 72 |
+
Sitting on the bathroom sink facing the camera, legs spread wide on the edges, small penis fully penetrating her vagina coming from an unseen man beyond the edge of the photo, water running in background, both hands pulling her breasts up and together while vagina is slightly naturally stretched visibly. Same exact identical face with all the same exact identical features moaning with pure pleasure looking straight at viewer. Everything else stays the exact same!
|
| 73 |
+
|
| 74 |
+
Bed Arching Back Orgasm Pose.
|
| 75 |
+
No clothes, lying on her girly bed with back arched high, legs spread maximally and pulled back, small penis fully embedded in her vagina coming from an unseen man beyond the edge of the photo from below with the man's legs under her, her hands pinching her hard nipples. Same exact identical face with all the same exact identical features showing maximum ecstasy with eyes rolled back and tongue hanging out. Vagina is fully visible and glistening. Everything else stays the same!
|
| 76 |
+
|
| 77 |
+
Bed Doggy Style Front Turned.
|
| 78 |
+
On all fours on the bed facing away but head fully turned back to camera naturally, small penis penetrating her vagina deeply from behind coming from an unseen man beyond the edge of the photo, one hand reaching under to spread her vulva lips around the shaft showing insertion. Same exact identical face with all the same exact identical features with eyes locked on viewer in dreamy loving pleasure. Her butt cheeks are spread naturally. Everything else the exact same!
|
| 79 |
+
|
| 80 |
+
Bent Over Table Anal-Vaginal Tease.
|
| 81 |
+
Bent over a table in the same room, clothing bunched at waist, small penis deep in her ass coming from an unseen man beyond the edge of the photo but legs spread so her vagina is prominently visible and dripping below the penetration, she reaches back with both hands to spread her ass cheeks and vulva simultaneously. Same exact identical face with all the same exact identical features turned around to the camera with wide O mouth in overwhelming pleasure. Everything else the exact same!
|
| 82 |
+
|
| 83 |
+
Car Backseat Ride.
|
| 84 |
+
In the backseat of a car, straddling facing camera, small penis buried inside her vagina coming from an unseen man beyond the edge of the photo, windows slightly fogged, dress pulled down and up, hands on the headrest behind her pushing her breasts forward. Same exact identical face with all the same exact identical features in maximum arousal looking at viewer. Everything else the exact same!
|
| 85 |
+
|
| 86 |
+
Chair Ride Facing Camera.
|
| 87 |
+
Sitting on a chair facing the camera, small penis fully inside her vagina coming from an unseen man beyond the edge of the photo, legs draped over the chair arms spreading her extremely wide, both hands pulling her vulva lips apart showing the penetration and her insides. Breasts fully exposed with hard nipples. Same exact identical face with all the same exact identical features staring directly at the viewer with raw sexual hunger. Everything else stays the exact same!
|
| 88 |
+
|
| 89 |
+
Close Up Face With Vaginal Spread And Penis Tease.
|
| 90 |
+
Extreme close up on her face and upper body but vagina visible in lower frame, she holds the small penis coming from an unseen man beyond the edge of the photo with one hand pressing it against her clitoris while the other hand spreads her vulva, mouth open tongue out licking her lips suggestively. Same exact identical face with all the same exact identical features but with maximum seductive arousal. Everything else stays the same!
|
| 91 |
+
|
| 92 |
+
Couch Lap Dance Penetration.
|
| 93 |
+
On the couch, she straddles facing the camera in lap position with small penis fully inside her vagina coming from an unseen man beyond the edge of the photo, dress pulled up and down exposing breasts and vagina, hands on her own breasts squeezing while bouncing slightly implied. Same exact identical face with all the same exact identical features, mouth open in surprised pleasure O shape looking slightly up at camera. Everything else the exact same!
|
| 94 |
+
|
| 95 |
+
Intense Missionary Leg Lift.
|
| 96 |
+
No clothes, lying on her back on the girly bed with both legs pulled up high and spread extremely wide, small penis buried to the hilt inside her vagina coming from an unseen man beyond the edge of the photo from below with the unseen man's legs stretched underneath. Her hands grip her own thighs pulling them apart even more so the slightly naturally stretched vulva and deep penetration are perfectly visible. Same exact identical face with all the same exact identical features showing pure overwhelming ecstasy, eyes half-closed in bliss, mouth wide open in a perfect moaning O shape. Everything else stays the exact same!
|
| 97 |
+
|
| 98 |
+
Kitchen Counter Penetration.
|
| 99 |
+
Bent over the kitchen counter, legs spread wide, small penis deep inside her vagina from behind coming from an unseen man beyond the edge of the photo, dress pulled up, breasts hanging and pressed against the counter, one hand reaching back spreading herself. Same exact identical face with all the same exact identical features turned back with an expression of being fucked senseless in ecstasy. Everything else the exact same!
|
| 100 |
+
|
| 101 |
+
Kneeling Frontal Invitation With Fingers.
|
| 102 |
+
Fully naked, kneeling on the floor close to camera with legs spread, using both index fingers to hook and slightly naturally pull her vagina lips apart extremely wide showing the deepest insides while a small penis tip coming from an unseen man beyond the edge of the photo presses against the entrance from below. Same exact identical face with all the same exact identical features smiling extremely sexually suggestively with pure invitation in her eyes. Everything else stays the same!
|
| 103 |
+
|
| 104 |
+
Lotus Position Deep Intimate.
|
| 105 |
+
Fully naked in lotus position on the bed facing the camera, small penis completely inside her vagina coming from an unseen man beyond the edge of the photo, legs wrapped around the unseen man but spread enough for full view, her hands on his shoulders (unseen) while she grinds. Same exact identical face with all the same exact identical features showing intense loving pleasure, mouth open, eyes dreamy. Everything else the exact same!
|
| 106 |
+
|
| 107 |
+
Mirror Reflection Tease.
|
| 108 |
+
Standing in front of a large mirror, bent slightly forward, small penis entering her vagina from behind coming from an unseen man beyond the edge of the photo while she watches herself in the mirror, one hand spreading her vulva, the other pinching a nipple. Same exact identical face with all the same exact identical features reflected in the mirror staring back at the viewer with maximum seductive arousal. Everything else stays the exact same!
|
| 109 |
+
|
| 110 |
+
Overhead Squat Ride Ecstasy.
|
| 111 |
+
From an overhead camera angle, she squats deeply onto the small penis fully inside her vagina coming from an unseen man beyond the edge of the photo, vulva slightly naturally stretched wide and parted, her hands reaching down to rub her clitoris around the shaft. Same exact identical face with all the same exact identical features turned upwards to the camera with an expression of being lost in intense sexual fantasy and love. Everything else the exact same!
|
| 112 |
+
|
| 113 |
+
Prone Bone Close Up.
|
| 114 |
+
Lying flat on her stomach on the bed, ass slightly raised, small penis deep inside her vagina from behind coming from an unseen man beyond the edge of the photo, one hand reaching back to slightly naturally spread her ass and vulva so the slightly naturally stretched hole and penetration are clearly visible. Same exact identical face with all the same exact identical features turned to the side looking back at the camera with blissful orgasm face. Everything else the exact same!
|
| 115 |
+
|
| 116 |
+
Reverse Cowgirl Deep Squat.
|
| 117 |
+
Fully naked, squatting with her back to the camera but head turned almost 180 degrees naturally to stare straight into the viewer's eyes, small penis completely swallowed by her vagina coming from an unseen man beyond the edge of the photo, vulva lips gripping the base tightly. One hand reaches back spreading her ass cheek while the other rubs her clitoris around the shaft. Same exact identical face with all the same exact identical features lost in maximum sexual pleasure, tongue slightly out. Everything else the exact same!
|
| 118 |
+
|
| 119 |
+
Shower Wet Sex.
|
| 120 |
+
Standing in the shower under running water, one leg wrapped around the unseen man, small penis deep inside her vagina coming from an unseen man beyond the edge of the photo, water cascading over her body, one hand spreading her vulva around the shaft. Same exact identical face with all the same exact identical features showing wet, slippery, maximum sexual ecstasy. Everything else stays the exact same!
|
| 121 |
+
|
| 122 |
+
Sideways Spooning Vaginal Sex.
|
| 123 |
+
She lies on her side in the same room, one leg lifted high allowing full view of her vagina being penetrated by the small penis coming from the side edge of the photo attached to unseen man, her top hand slightly naturally spreading her vulva further while bottom hand grips the penis base. Same exact identical face with all the same exact identical features, mouth in perfect O shape staring invitingly at camera. Everything else the exact same!
|
| 124 |
+
|
| 125 |
+
Standing Bent Over Window Sex.
|
| 126 |
+
She bends forward pressing her hands against the window, ass pushed out, small penis thrusting deep into her vagina from behind coming from an unseen man beyond the edge of the photo, legs spread wide so her dripping vagina is fully visible between her thighs. Clothing bunched at waist exposing breasts and vagina. Same exact identical face with all the same exact identical features turned back to the camera with desperate arousal and open moaning mouth. Everything else stays the exact same!
|
| 127 |
+
|
| 128 |
+
Standing Carry Position Tease.
|
| 129 |
+
She is held up by unseen man (his arms and legs partially visible), legs wrapped around but spread to show vagina penetrated by small penis standing coming from an unseen man beyond the edge of the photo, her hands around his neck but since unseen focus on her, vagina fully visible slightly naturally stretched. Same exact identical face with all the same exact identical features smiling invitingly with tongue between teeth. Everything else the exact same!
|
| 130 |
+
|
| 131 |
+
Wall Leaning Deep Penetration Tease.
|
| 132 |
+
She leans back against the wall with her legs spread wide and one knee raised high, the small penis coming from an unseen man beyond the edge of the photo below is thrusting deep into her vagina causing visible stretching slightly naturally and her juices flowing freely. Same exact identical face with all the same exact identical features looking straight at the camera with eyes full of desperate arousal and lips parted in a silent scream of pleasure. Everything else the exact same!
|
| 133 |
+
|
| 134 |
+
Wall Pressed Standing Sex.
|
| 135 |
+
Pressed face-first against the wall, ass pushed out, small penis buried deep in her vagina coming from an unseen man beyond the edge of the photo, one leg lifted high to the side for maximum visibility of the penetration and her dripping vulva. Same exact identical face with all the same exact identical features pressed against the wall but turned enough to lock eyes with the viewer in pure lust. Everything else stays the exact same!
|
| 136 |
+
|
| 137 |
+
Yoga Mat Deep Stretch Sex.
|
| 138 |
+
On a yoga mat in downward dog position but modified, small penis penetrating her vagina deeply from behind coming from an unseen man beyond the edge of the photo, one leg lifted high to the side for extreme spread and visibility of penetration. Same exact identical face with all the same exact identical features looking back between her legs at the camera in overwhelming pleasure. Everything else stays the exact same!
|
README.md
CHANGED
|
@@ -1,15 +1,14 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
Identical to the original picgen application, optimized for Hugging Face Spaces Zero GPU.
|
|
|
|
| 1 |
+
1. Connect to vps
|
| 2 |
+
2. Clone this repo
|
| 3 |
+
3. cd to /picgen
|
| 4 |
+
4. Run bash setup.sh
|
| 5 |
+
|
| 6 |
+
To run later:
|
| 7 |
+
|
| 8 |
+
ssh-keygen -f '/root/.ssh/known_hosts' -R 'ip_address'
|
| 9 |
+
|
| 10 |
+
ssh root@ip_address
|
| 11 |
+
|
| 12 |
+
cd picgen
|
| 13 |
+
|
| 14 |
+
python3 app.py --share
|
|
|
app.py
CHANGED
|
@@ -2,7 +2,9 @@ import gradio as gr
|
|
| 2 |
import numpy as np
|
| 3 |
import random
|
| 4 |
import torch
|
| 5 |
-
|
|
|
|
|
|
|
| 6 |
import gc
|
| 7 |
|
| 8 |
from safetensors.torch import load_file
|
|
@@ -40,23 +42,26 @@ NSFW_WEIGHTS_LOCAL_PATH = os.path.join(MODELS_DIR, "rapid-aio", "v23", "Qwen-Rap
|
|
| 40 |
# Detect operating system
|
| 41 |
IS_WINDOWS = platform.system() == "Windows"
|
| 42 |
IS_LINUX = platform.system() == "Linux"
|
| 43 |
-
print("Operating System: {platform.system()}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
|
| 45 |
# --- Clear GPU memory from previous runs ---
|
| 46 |
def clear_vram():
|
| 47 |
gc.collect()
|
|
|
|
| 48 |
if torch.cuda.is_available():
|
| 49 |
-
torch.cuda.empty_cache()
|
| 50 |
torch.cuda.synchronize()
|
| 51 |
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
if torch.cuda.is_available():
|
| 57 |
-
torch.cuda.reset_peak_memory_stats()
|
| 58 |
-
except:
|
| 59 |
-
print("GPU not available at startup (normal for Zero GPU)")
|
| 60 |
|
| 61 |
# --- Model Loading ---
|
| 62 |
dtype = torch.bfloat16
|
|
@@ -333,7 +338,13 @@ def add_starter_image(starter_num, current_images):
|
|
| 333 |
return list(current_images) + [img]
|
| 334 |
|
| 335 |
# --- Main Inference Function (with hardcoded negative prompt) ---
|
| 336 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 337 |
def infer(
|
| 338 |
images,
|
| 339 |
prompt,
|
|
@@ -377,13 +388,12 @@ def infer(
|
|
| 377 |
if images is not None:
|
| 378 |
for item in images:
|
| 379 |
try:
|
| 380 |
-
|
| 381 |
-
|
| 382 |
-
|
| 383 |
-
|
| 384 |
-
|
| 385 |
-
|
| 386 |
-
pil_images.append(item.convert("RGB"))
|
| 387 |
except Exception:
|
| 388 |
continue
|
| 389 |
|
|
@@ -472,8 +482,10 @@ with gr.Blocks(css=css) as demo:
|
|
| 472 |
"Front View Couch Sex",
|
| 473 |
"Rear View Couch Sex"
|
| 474 |
],
|
|
|
|
| 475 |
interactive=True,
|
| 476 |
-
show_label=False
|
|
|
|
| 477 |
)
|
| 478 |
run_button_top = gr.Button("Edit!", variant="primary", size="sm")
|
| 479 |
|
|
@@ -516,8 +528,10 @@ with gr.Blocks(css=css) as demo:
|
|
| 516 |
"Full Penetration Attempt 9",
|
| 517 |
"Full Penetration Attempt 10"
|
| 518 |
],
|
|
|
|
| 519 |
interactive=True,
|
| 520 |
-
show_label=False
|
|
|
|
| 521 |
)
|
| 522 |
run_button_top2 = gr.Button("Edit!", variant="primary", size="sm")
|
| 523 |
|
|
@@ -582,8 +596,10 @@ with gr.Blocks(css=css) as demo:
|
|
| 582 |
"Full Penetration Attempt 9 (Couple)",
|
| 583 |
"Full Penetration Attempt 10 (Couple)"
|
| 584 |
],
|
|
|
|
| 585 |
interactive=True,
|
| 586 |
-
show_label=False
|
|
|
|
| 587 |
)
|
| 588 |
run_button_top3 = gr.Button("Edit!", variant="primary", size="sm")
|
| 589 |
|
|
@@ -626,8 +642,10 @@ with gr.Blocks(css=css) as demo:
|
|
| 626 |
"Side Fuck",
|
| 627 |
"Kissing Sex"
|
| 628 |
],
|
|
|
|
| 629 |
interactive=True,
|
| 630 |
-
show_label=False
|
|
|
|
| 631 |
)
|
| 632 |
run_button_top4 = gr.Button("Edit!", variant="primary", size="sm")
|
| 633 |
|
|
@@ -641,10 +659,11 @@ with gr.Blocks(css=css) as demo:
|
|
| 641 |
with gr.Column():
|
| 642 |
input_images = gr.Gallery(label="Input Images",
|
| 643 |
show_label=False,
|
| 644 |
-
type="
|
|
|
|
| 645 |
|
| 646 |
with gr.Column():
|
| 647 |
-
result = gr.Gallery(label="Result", show_label=False, type="
|
| 648 |
use_output_btn = gr.Button("↗️ Use as input", variant="secondary", size="sm", visible=False)
|
| 649 |
|
| 650 |
with gr.Row():
|
|
@@ -707,7 +726,7 @@ with gr.Blocks(css=css) as demo:
|
|
| 707 |
minimum=256,
|
| 708 |
maximum=2048,
|
| 709 |
step=8,
|
| 710 |
-
value=
|
| 711 |
)
|
| 712 |
|
| 713 |
width = gr.Slider(
|
|
@@ -715,8 +734,20 @@ with gr.Blocks(css=css) as demo:
|
|
| 715 |
minimum=256,
|
| 716 |
maximum=2048,
|
| 717 |
step=8,
|
| 718 |
-
value=
|
| 719 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 720 |
|
| 721 |
# gr.Examples(examples=examples, inputs=[prompt], outputs=[result, seed], fn=infer, cache_examples=False)
|
| 722 |
|
|
@@ -962,5 +993,84 @@ with gr.Blocks(css=css) as demo:
|
|
| 962 |
start3_btn.click(fn=lambda imgs: add_starter_image(3, imgs), inputs=[input_images], outputs=[input_images])
|
| 963 |
start4_btn.click(fn=lambda imgs: add_starter_image(4, imgs), inputs=[input_images], outputs=[input_images])
|
| 964 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 965 |
if __name__ == "__main__":
|
| 966 |
-
demo.
|
|
|
|
| 2 |
import numpy as np
|
| 3 |
import random
|
| 4 |
import torch
|
| 5 |
+
# spaces import REMOVED — ZeroGPU is HuggingFace-only infrastructure, not needed locally
|
| 6 |
+
|
| 7 |
+
|
| 8 |
import gc
|
| 9 |
|
| 10 |
from safetensors.torch import load_file
|
|
|
|
| 42 |
# Detect operating system
|
| 43 |
IS_WINDOWS = platform.system() == "Windows"
|
| 44 |
IS_LINUX = platform.system() == "Linux"
|
| 45 |
+
print(f"Operating System: {platform.system()}")
|
| 46 |
+
|
| 47 |
+
|
| 48 |
+
def encode_image(pil_image):
|
| 49 |
+
import io
|
| 50 |
+
buffered = io.BytesIO()
|
| 51 |
+
pil_image.save(buffered, format="PNG")
|
| 52 |
+
return base64.b64encode(buffered.getvalue()).decode("utf-8")
|
| 53 |
|
| 54 |
# --- Clear GPU memory from previous runs ---
|
| 55 |
def clear_vram():
|
| 56 |
gc.collect()
|
| 57 |
+
torch.cuda.empty_cache()
|
| 58 |
if torch.cuda.is_available():
|
|
|
|
| 59 |
torch.cuda.synchronize()
|
| 60 |
|
| 61 |
+
print("Clearing GPU memory from previous runs...")
|
| 62 |
+
clear_vram()
|
| 63 |
+
if torch.cuda.is_available():
|
| 64 |
+
torch.cuda.reset_peak_memory_stats()
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
|
| 66 |
# --- Model Loading ---
|
| 67 |
dtype = torch.bfloat16
|
|
|
|
| 338 |
return list(current_images) + [img]
|
| 339 |
|
| 340 |
# --- Main Inference Function (with hardcoded negative prompt) ---
|
| 341 |
+
# ---------------------------------------------------------------------------
|
| 342 |
+
# CHANGE 4 of 4: @spaces.GPU() decorator REMOVED
|
| 343 |
+
# That decorator allocates a GPU from HuggingFace's shared ZeroGPU pool.
|
| 344 |
+
# On a local VPS the GPU is always available — the decorator is not needed
|
| 345 |
+
# and would crash without the `spaces` library installed.
|
| 346 |
+
# The entire function body below is 100% identical to the original.
|
| 347 |
+
# ---------------------------------------------------------------------------
|
| 348 |
def infer(
|
| 349 |
images,
|
| 350 |
prompt,
|
|
|
|
| 388 |
if images is not None:
|
| 389 |
for item in images:
|
| 390 |
try:
|
| 391 |
+
if isinstance(item[0], Image.Image):
|
| 392 |
+
pil_images.append(item[0].convert("RGB"))
|
| 393 |
+
elif isinstance(item[0], str):
|
| 394 |
+
pil_images.append(Image.open(item[0]).convert("RGB"))
|
| 395 |
+
elif hasattr(item, "name"):
|
| 396 |
+
pil_images.append(Image.open(item.name).convert("RGB"))
|
|
|
|
| 397 |
except Exception:
|
| 398 |
continue
|
| 399 |
|
|
|
|
| 482 |
"Front View Couch Sex",
|
| 483 |
"Rear View Couch Sex"
|
| 484 |
],
|
| 485 |
+
value=None,
|
| 486 |
interactive=True,
|
| 487 |
+
show_label=False,
|
| 488 |
+
allow_custom_value=False
|
| 489 |
)
|
| 490 |
run_button_top = gr.Button("Edit!", variant="primary", size="sm")
|
| 491 |
|
|
|
|
| 528 |
"Full Penetration Attempt 9",
|
| 529 |
"Full Penetration Attempt 10"
|
| 530 |
],
|
| 531 |
+
value=None,
|
| 532 |
interactive=True,
|
| 533 |
+
show_label=False,
|
| 534 |
+
allow_custom_value=False
|
| 535 |
)
|
| 536 |
run_button_top2 = gr.Button("Edit!", variant="primary", size="sm")
|
| 537 |
|
|
|
|
| 596 |
"Full Penetration Attempt 9 (Couple)",
|
| 597 |
"Full Penetration Attempt 10 (Couple)"
|
| 598 |
],
|
| 599 |
+
value=None,
|
| 600 |
interactive=True,
|
| 601 |
+
show_label=False,
|
| 602 |
+
allow_custom_value=False
|
| 603 |
)
|
| 604 |
run_button_top3 = gr.Button("Edit!", variant="primary", size="sm")
|
| 605 |
|
|
|
|
| 642 |
"Side Fuck",
|
| 643 |
"Kissing Sex"
|
| 644 |
],
|
| 645 |
+
value=None,
|
| 646 |
interactive=True,
|
| 647 |
+
show_label=False,
|
| 648 |
+
allow_custom_value=False
|
| 649 |
)
|
| 650 |
run_button_top4 = gr.Button("Edit!", variant="primary", size="sm")
|
| 651 |
|
|
|
|
| 659 |
with gr.Column():
|
| 660 |
input_images = gr.Gallery(label="Input Images",
|
| 661 |
show_label=False,
|
| 662 |
+
type="pil",
|
| 663 |
+
interactive=True)
|
| 664 |
|
| 665 |
with gr.Column():
|
| 666 |
+
result = gr.Gallery(label="Result", show_label=False, type="pil", interactive=False)
|
| 667 |
use_output_btn = gr.Button("↗️ Use as input", variant="secondary", size="sm", visible=False)
|
| 668 |
|
| 669 |
with gr.Row():
|
|
|
|
| 726 |
minimum=256,
|
| 727 |
maximum=2048,
|
| 728 |
step=8,
|
| 729 |
+
value=None,
|
| 730 |
)
|
| 731 |
|
| 732 |
width = gr.Slider(
|
|
|
|
| 734 |
minimum=256,
|
| 735 |
maximum=2048,
|
| 736 |
step=8,
|
| 737 |
+
value=None,
|
| 738 |
)
|
| 739 |
+
|
| 740 |
+
fullscreen_toggle = gr.Checkbox(
|
| 741 |
+
label="Full Screen Mode",
|
| 742 |
+
value=False,
|
| 743 |
+
info="Expand image boxes to full page width"
|
| 744 |
+
)
|
| 745 |
+
|
| 746 |
+
keyboard_toggle = gr.Checkbox(
|
| 747 |
+
label="Disable On-Screen Keyboard",
|
| 748 |
+
value=False,
|
| 749 |
+
info="Prevent keyboard from appearing on mobile devices"
|
| 750 |
+
)
|
| 751 |
|
| 752 |
# gr.Examples(examples=examples, inputs=[prompt], outputs=[result, seed], fn=infer, cache_examples=False)
|
| 753 |
|
|
|
|
| 993 |
start3_btn.click(fn=lambda imgs: add_starter_image(3, imgs), inputs=[input_images], outputs=[input_images])
|
| 994 |
start4_btn.click(fn=lambda imgs: add_starter_image(4, imgs), inputs=[input_images], outputs=[input_images])
|
| 995 |
|
| 996 |
+
# Preset handler for negative prompts
|
| 997 |
+
def update_negative_prompt(preset):
|
| 998 |
+
presets = {
|
| 999 |
+
"None": "",
|
| 1000 |
+
"Full Penetration (Vaginal)": "partial insertion, visible shaft, shallow, tip only, halfway, partially inserted, pulling out, not fully inside",
|
| 1001 |
+
"Full Penetration (Oral)": "shallow, tip only, not deepthroat, partially in mouth, lips at tip, halfway, visible shaft outside mouth",
|
| 1002 |
+
"Full Penetration (Anal)": "partial insertion, visible shaft, shallow, tip only, halfway, partially inserted, not fully inside, pulling out",
|
| 1003 |
+
}
|
| 1004 |
+
return presets.get(preset, "")
|
| 1005 |
+
|
| 1006 |
+
# REMOVED - negative_preset dropdown no longer exists
|
| 1007 |
+
|
| 1008 |
+
# Fullscreen toggle handler
|
| 1009 |
+
fullscreen_toggle.change(
|
| 1010 |
+
fn=None,
|
| 1011 |
+
inputs=[fullscreen_toggle],
|
| 1012 |
+
outputs=None,
|
| 1013 |
+
js="""
|
| 1014 |
+
(fullscreen) => {
|
| 1015 |
+
const style = document.getElementById('fullscreen-style') || document.createElement('style');
|
| 1016 |
+
style.id = 'fullscreen-style';
|
| 1017 |
+
if (fullscreen) {
|
| 1018 |
+
style.textContent = `
|
| 1019 |
+
.gradio-container { max-width: 100vw !important; padding: 0 !important; }
|
| 1020 |
+
.contain { max-width: 100% !important; }
|
| 1021 |
+
.wrap { max-width: 100% !important; }
|
| 1022 |
+
#component-0 { max-width: 100% !important; }
|
| 1023 |
+
`;
|
| 1024 |
+
} else {
|
| 1025 |
+
style.textContent = '';
|
| 1026 |
+
}
|
| 1027 |
+
if (!document.getElementById('fullscreen-style')) {
|
| 1028 |
+
document.head.appendChild(style);
|
| 1029 |
+
}
|
| 1030 |
+
return fullscreen;
|
| 1031 |
+
}
|
| 1032 |
+
"""
|
| 1033 |
+
)
|
| 1034 |
+
|
| 1035 |
+
# Keyboard toggle handler
|
| 1036 |
+
keyboard_toggle.change(
|
| 1037 |
+
fn=None,
|
| 1038 |
+
inputs=[keyboard_toggle],
|
| 1039 |
+
outputs=None,
|
| 1040 |
+
js="""
|
| 1041 |
+
(disable) => {
|
| 1042 |
+
setTimeout(() => {
|
| 1043 |
+
const style = document.getElementById('keyboard-style') || document.createElement('style');
|
| 1044 |
+
style.id = 'keyboard-style';
|
| 1045 |
+
if (disable) {
|
| 1046 |
+
style.textContent = `
|
| 1047 |
+
input[type="text"]:not([role="combobox"]),
|
| 1048 |
+
input[type="number"],
|
| 1049 |
+
textarea:not([role="combobox"]) {
|
| 1050 |
+
-webkit-user-select: none !important;
|
| 1051 |
+
user-select: none !important;
|
| 1052 |
+
pointer-events: none !important;
|
| 1053 |
+
}
|
| 1054 |
+
`;
|
| 1055 |
+
document.querySelectorAll('input[type="text"]:not([role="combobox"]), input[type="number"], textarea:not([role="combobox"])').forEach(el => {
|
| 1056 |
+
el.setAttribute('readonly', 'readonly');
|
| 1057 |
+
el.setAttribute('inputmode', 'none');
|
| 1058 |
+
});
|
| 1059 |
+
} else {
|
| 1060 |
+
style.textContent = '';
|
| 1061 |
+
document.querySelectorAll('input[type="text"], input[type="number"], textarea').forEach(el => {
|
| 1062 |
+
el.removeAttribute('readonly');
|
| 1063 |
+
el.removeAttribute('inputmode');
|
| 1064 |
+
});
|
| 1065 |
+
}
|
| 1066 |
+
if (!document.getElementById('keyboard-style')) {
|
| 1067 |
+
document.head.appendChild(style);
|
| 1068 |
+
}
|
| 1069 |
+
}, 100);
|
| 1070 |
+
return disable;
|
| 1071 |
+
}
|
| 1072 |
+
"""
|
| 1073 |
+
)
|
| 1074 |
+
|
| 1075 |
if __name__ == "__main__":
|
| 1076 |
+
demo.launch(server_name="0.0.0.0", server_port=7860, share=False)
|
commands.txt
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Image Editor Service Commands
|
| 2 |
+
|
| 3 |
+
## Setup (run once)
|
| 4 |
+
sudo cp picgen.service /etc/systemd/system/
|
| 5 |
+
sudo systemctl daemon-reload
|
| 6 |
+
sudo systemctl enable picgen
|
| 7 |
+
|
| 8 |
+
## Start the service
|
| 9 |
+
sudo systemctl start picgen
|
| 10 |
+
|
| 11 |
+
## Stop the service
|
| 12 |
+
sudo systemctl stop picgen
|
| 13 |
+
|
| 14 |
+
## Restart the service
|
| 15 |
+
sudo systemctl restart picgen
|
| 16 |
+
|
| 17 |
+
## Check status
|
| 18 |
+
sudo systemctl status picgen
|
| 19 |
+
|
| 20 |
+
## View logs (live)
|
| 21 |
+
sudo journalctl -u picgen -f
|
| 22 |
+
|
| 23 |
+
## View logs (last 100 lines)
|
| 24 |
+
sudo journalctl -u picgen -n 100
|
| 25 |
+
|
| 26 |
+
## Disable service (prevent auto-start on boot)
|
| 27 |
+
sudo systemctl disable picgen
|
| 28 |
+
|
| 29 |
+
## Kill the process manually (if needed)
|
| 30 |
+
sudo pkill -f "python3.*app.py"
|
error.txt
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
fix.bat
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
@echo off
|
| 2 |
+
echo === Fixing Picgen Installation ===
|
| 3 |
+
|
| 4 |
+
echo Clearing Python cache...
|
| 5 |
+
for /d /r . %%d in (__pycache__) do @if exist "%%d" rd /s /q "%%d"
|
| 6 |
+
del /s /q *.pyc 2>nul
|
| 7 |
+
|
| 8 |
+
echo Reinstalling dependencies...
|
| 9 |
+
pip3 install -r requirements.txt --force-reinstall
|
| 10 |
+
|
| 11 |
+
echo === Fix Complete ===
|
| 12 |
+
echo Run: start.bat
|
| 13 |
+
pause
|
fix.sh
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
set -e
|
| 3 |
+
|
| 4 |
+
echo "=== Fixing Picgen Installation ==="
|
| 5 |
+
|
| 6 |
+
cd /root/picgen
|
| 7 |
+
|
| 8 |
+
echo "Clearing Python cache..."
|
| 9 |
+
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
|
| 10 |
+
find . -type f -name "*.pyc" -delete 2>/dev/null || true
|
| 11 |
+
|
| 12 |
+
echo "Reinstalling dependencies..."
|
| 13 |
+
pip3 install -r requirements.txt --break-system-packages --ignore-installed --force-reinstall
|
| 14 |
+
|
| 15 |
+
echo "Copying service file..."
|
| 16 |
+
cp picgen.service /etc/systemd/system/
|
| 17 |
+
systemctl daemon-reload
|
| 18 |
+
|
| 19 |
+
echo "=== Fix Complete ==="
|
| 20 |
+
echo "Run: python3 app.py"
|
ftp.py
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import subprocess
|
| 2 |
+
import sys
|
| 3 |
+
import os
|
| 4 |
+
|
| 5 |
+
# 1. Automatic Dependency Check & Install
|
| 6 |
+
try:
|
| 7 |
+
from pyftpdlib.authorizers import DummyAuthorizer
|
| 8 |
+
from pyftpdlib.handlers import FTPHandler
|
| 9 |
+
from pyftpdlib.servers import FTPServer
|
| 10 |
+
except ImportError:
|
| 11 |
+
print("pyftpdlib not found. Installing...")
|
| 12 |
+
subprocess.check_call(["apt", "install", "-y", "python3-pip"])
|
| 13 |
+
subprocess.check_call([sys.executable, "-m", "pip", "install", "pyftpdlib", "--break-system-packages"])
|
| 14 |
+
from pyftpdlib.authorizers import DummyAuthorizer
|
| 15 |
+
from pyftpdlib.handlers import FTPHandler
|
| 16 |
+
from pyftpdlib.servers import FTPServer
|
| 17 |
+
|
| 18 |
+
def main():
|
| 19 |
+
# 2. Setup credentials
|
| 20 |
+
authorizer = DummyAuthorizer()
|
| 21 |
+
|
| 22 |
+
# Replace 'YOUR_PASSWORD' with your desired password
|
| 23 |
+
# "." ensures it shares the current folder and all subfolders
|
| 24 |
+
# perm='elradfmw' provides full read, write, and list permissions
|
| 25 |
+
authorizer.add_user("admin", "YOUR_PASSWORD", ".", perm="elradfmw")
|
| 26 |
+
|
| 27 |
+
# 3. Setup handler
|
| 28 |
+
handler = FTPHandler
|
| 29 |
+
handler.authorizer = authorizer
|
| 30 |
+
handler.banner = "FTP Server is ready."
|
| 31 |
+
|
| 32 |
+
# 4. Start server
|
| 33 |
+
# 0.0.0.0 makes it public; 2121 avoids needing root privileges for port 21
|
| 34 |
+
address = ("0.0.0.0", 2121)
|
| 35 |
+
server = FTPServer(address, handler)
|
| 36 |
+
|
| 37 |
+
print(f"FTP server active at: {os.getcwd()}")
|
| 38 |
+
print("Accessible on port 2121")
|
| 39 |
+
server.serve_forever()
|
| 40 |
+
|
| 41 |
+
if __name__ == "__main__":
|
| 42 |
+
main()
|
| 43 |
+
|
manual install.txt
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
Requirements.txt as background to avoid broken ssh pipe
|
| 3 |
+
nohup pip3 install -r requirements.txt --break-system-packages --ignore-installed --timeout=300 --retries=10 > pip-install.log 2>&1 &
|
| 4 |
+
|
| 5 |
+
|
| 6 |
+
Then monitor it:
|
| 7 |
+
tail -f pip-install.log
|
new.txt
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Merge Together 1
|
| 2 |
+
make them both standing next to eachother facing the camera. She is to the right of him. Her face and body are perfectly exactly the same. she wears a cute sundress that is loose at the bottom and he wears a stylish open button down shirt with a white t shift under it. his penis is exactly the same.
|
| 3 |
+
|
| 4 |
+
Merge Together 2
|
| 5 |
+
They are both standing next to each other facing the camera. She is on his right. She wears the same exact clothing (or none if she isn't wearing any) that is loose at the bottom and he wears a stylish open button down shirt with a white t-shirt under it. Both maintain their exact same identical original faces with all features preserved. his penis is every way the same, unchanged.
|
| 6 |
+
|
| 7 |
+
Naked Together
|
| 8 |
+
Add the woman from the first photo to be standing on the right of the man in the second photo, ensuring the woman is fully naked wearing no clothes at all. She has the exact same face, facial expression, etc as her original photo. Keep his penis exactly the way it is without altering it. Both maintain their exact same identical original faces with all features preserved. Her face and facial expression and angle of it must be exactly identical.es preserved.
|
| 9 |
+
|
| 10 |
+
Near Dick 1
|
| 11 |
+
fully zoomed out so she is fully in view. the woman from the first picture looking exactly 100% the same with same exact face and facial features and expression are exactly the same. She is completely moved from the 1st photo to be in the 2nd photo so that she is sitting behind that man's separate penis. she has no pants on and no underwear on and nothing covering her vagina. she has no clothing around her waste or under it. Her legs are spread and she is sitting in a way so that her entire vagina is fully visible. The man's penis is exactly the same. the man is still wearing the same clothing. Remove all other things from the first picture and only use the background/environment of the second picture.
|
| 12 |
+
|
| 13 |
+
Near Dick 2
|
| 14 |
+
She has no clothing around her waste or under it and she is squatting near the penis from photo 2. we can see her full vagina. you can still see her face. she is looking at the camera the exact same way as her original photo. The penis from photo 2 is in her hand. she has the exact very young looking same face and everything else about her face and head and hair is the exact same. everything else the same from photo 2.
|
| 15 |
+
|
| 16 |
+
Near Dick 3
|
| 17 |
+
zoomed out to show her full body. She has no clothing on and she is now only in photo 2 near the man's penis. you can still see her face. she is looking at the camera the exact same way as her original photo. she holds the man's penis from photo 2 is in her hand as it is attached to the man in the same exact way. she has the exact very young looking same face and everything else about her face and head and hair is the exact same. everything else the same from photo 2.
|
| 18 |
+
|
| 19 |
+
Near Dick 4
|
| 20 |
+
zoomed out to show her full body. She has no clothing on from her waist down and she is now perfectly embedded only in photo 2 near the man's penis. His penis looks exactly the same from the original photo. her legs are open showing her vagina. you can still see her face. she is looking at the camera the exact same way as her original photo. she holds the man's penis from photo 2 is in her hand as it is attached to the man in the same exact way. she has the exact very young looking same face and everything else about her face and head and hair is the exact same. everything else the same from photo 2.
|
| 21 |
+
|
| 22 |
+
Near Dick 5
|
| 23 |
+
Sitting legs spread behind the penis pressed against her vagina
|
| 24 |
+
She is sitting on the man in the second photo that has everything the exact same. she has her legs spread behind that exact same penis and she is pushing her vagina against the back of it which is wedging the penis in between her now visibly spread vulva. everything else from the second photo is exactly the same. the environment of the first photo is removed and replaced with the exact environment of the second photo. the penis is exactly the same identical penis in the same exact position etc.
|
| 25 |
+
|
| 26 |
+
Shh Holding Dick
|
| 27 |
+
She is now holding his penis with only one of her hands as she looks sexually horny at the camera and her other hand has it's index finder on her lips as she says shh. she is demanding sex. everything else is the exact same.
|
| 28 |
+
|
| 29 |
+
Both Near Dick
|
| 30 |
+
both women from the first picture looking exactly 100% the same are now only in the second photo, near the legs and penis of the man in the second photo. the women's faces are fully preserved/unchanged as well as their clothing etc. The man's penis is exactly the same. the man is still wearing the same clothing. Remove all other things from the first photo and only use the background/environment of the second photo. they are in the second photo only. do not include anything from the first photo except the 2 women.
|
| 31 |
+
|
| 32 |
+
Both Holding Dick 1
|
| 33 |
+
both women are how holding his penis in their hands and looking at the camera.
|
| 34 |
+
Both women maintain their exact same identical original faces with all the exact same identical features. Everything else stays the exact same!
|
| 35 |
+
|
| 36 |
+
Both Holding Dick 2
|
| 37 |
+
both women from the first picture looking exactly 100% the same are now only in the second photo, near the legs and penis of the man in the second photo. the women's faces are fully preserved/unchanged as well as their clothing etc. The man's penis is exactly the same. the man is still wearing the same clothing. Remove all other things from the first photo and only use the background/environment of the second photo. they are in the second photo only. do not include anything from the first photo except the 2 women.
|
| 38 |
+
|
| 39 |
+
Single BJ
|
| 40 |
+
the woman is now bent forward down fully sucking his entire shaft of his penis now hidden inside of her mouth with her lips sealed around the circumference of the lowest part of the shaft. She does all of that while sexually touching her own vagina.
|
| 41 |
+
She maintains her exact same identical original face with all the exact same identical features. Everything else stays the exact same!
|
| 42 |
+
|
| 43 |
+
Single Anal
|
| 44 |
+
the woman is now turned around and on his penis that is now fully penetrated deep inside of her ass. The entire shaft of his penis now hidden inside of her ass which has the entire penis all the way to the lowest part of the shaft. She is turned so you can see her exact same original face. She does this while sexually touching her own vagina.
|
| 45 |
+
The woman maintains her exact same identical original face with all the exact same identical features. Everything else stays the exact same!
|
| 46 |
+
|
| 47 |
+
Left 1 BJ
|
| 48 |
+
the woman on the left is bent forward down fully sucking his entire shaft of his penis now hidden inside of her mouth with her lips sealed around the circumference of the lowest part of the shaft. . the other woman is watching while sexually touching her own vagina.
|
| 49 |
+
Both women maintain their exact same identical original faces with all the exact same identical features. Everything else stays the exact same!
|
| 50 |
+
|
| 51 |
+
Left 1 Anal
|
| 52 |
+
the woman on the left is now turned around and on his penis that is now fully penetrated deep inside of her ass. the entire shaft of his penis now hidden inside of her ass which has the entire penis all the way to the lowest part of the shaft. she is turned so you can see her exact same original face. the other woman is watching while sexually touching her own vagina.
|
| 53 |
+
Both women maintain their exact same identical original faces with all the exact same identical features. Everything else stays the exact same!
|
| 54 |
+
|
| 55 |
+
Left 1 Vag On Knee
|
| 56 |
+
the woman on the left is now sitting on his right knee with her vagina showing. the other woman is on his left knee with her vagina showing.
|
| 57 |
+
Both women maintain their exact same identical original faces with all the exact same identical features. Everything else stays the exact same!
|
| 58 |
+
|
| 59 |
+
Fucked after 1
|
| 60 |
+
the woman on the left is now turned around and on his penis that is now fully penetrated deep inside of her ass. the entire shaft of his penis now hidden inside of her ass which has the entire penis all the way to the lowest part of the shaft. she is turned so you can see her exact same original face. the other woman is watching while sexually touching her own vagina.
|
| 61 |
+
Both women maintain their exact same identical original faces with all the exact same identical features. Everything else stays the exact same!
|
| 62 |
+
|
| 63 |
+
Fucked after 2
|
| 64 |
+
the woman on the right is now turned around and on his penis that is now fully penetrated deep inside of her ass. the entire shaft of his penis now hidden inside of her ass which has the entire penis all the way to the lowest part of the shaft. she is turned so you can see her exact same original face. the other woman is watching while sexually touching her own vagina.
|
| 65 |
+
Both women maintain their exact same identical original faces with all the exact same identical features. Everything else stays the exact same!
|
| 66 |
+
|
| 67 |
+
Penetration 1
|
| 68 |
+
the penis is now only fully penetrated inside her vagina. she is still looking at the camera but with her mouth open and her lips in the shape of an o. she no longer holds a penis because it is now sticking into her vagina. the penis is the same in every way.
|
| 69 |
+
|
| 70 |
+
Penetration 2
|
| 71 |
+
the same exact original penis is now only fully penetrated inside her vagina. she is still looking at the camera but with her mouth open and her lips in the shape of an o. she no longer holds a penis because the same one is now sticking into her vagina. the penis is the same in every way. the mans legs fully outstretched and together under her. the penis is exactly the same.
|
| 72 |
+
|
| 73 |
+
Penetration 3
|
| 74 |
+
the penis is now only fully penetrated all the way inside her vagina as she has 1 leg in the air and looks dreamily into his eyes. the full shaft of the penis now inserted and hidden inside of her. with her mouth open and her lips in the shape of an o. her face is exactly the same
|
| 75 |
+
|
| 76 |
+
Shower Sex Together
|
| 77 |
+
They are both standing in the shower, she has one leg lifted near the man in the photo, his penis deep inside her vagina, one hand spreading her vulva around the shaft. zoomed out for full view
|
| 78 |
+
|
| 79 |
+
Kissing Handjob
|
| 80 |
+
the man is now sitting down on the ground facing the bottom right corner of the photo and the woman is squatting higher in the air beside him, almost hip to hip.
|
| 81 |
+
the man now has his penis out of his pants and
|
| 82 |
+
the woman's is fully gripping it tightly around the full circumference of it's shaft in one of her hands while her other hand is behind his head while she passionately kisses him on the lips.
|
| 83 |
+
|
| 84 |
+
|
| 85 |
+
BJ
|
| 86 |
+
The woman from the second photo eagerly has her hand that is the closest to him holding his penis with her fingers wrapped fully around the shaft. The position of the rest of her body remains unchanged. The man from the first photo remains completely unchanged. She remains in the exact same position next to him. You can fully see her hand's fingers wrapped completely around it. the penis stays exactly the way it is in the original photo. Keep his penis exactly the way it is without altering it. Both the man and woman preserve their exact same faces and facial features.
|
| 87 |
+
|
| 88 |
+
BJ 2
|
| 89 |
+
the woman from the first photo squats down next to the man from the second photo so that her face is at the man's penis which is now all the way deep inside her mouth with the full shaft of it hidden inside of her mouth which is closed around it. Her right hand holds his penis and pulls it more into her mouth. Her lips are tightly closed surrounding the bottom of his penis. Her left hand also sexually touches her vagina between her fully spread legs with fingers inside. the man's head is hidden. is moved first so that all of these things are possible. her legs are spread and you can fully see her vagina in the photo and also see her fingering her vagina. Keep her exact same face and facial features preserved, her eyes open and rolled back in pleasure.
|
| 90 |
+
|
| 91 |
+
Bed BJ 1
|
| 92 |
+
the man from the second photo and the woman from the first photo are on a bed in a girly room. the man is has his eyes closed. her exact face is perfectly preserved. she has his full penis inside of her mouth. she has a sexually aroused smiling and sneaky look on her face because she is doing this without his permission while he is sleeping. The full shaft of the penis is buried deep inside of her mouth so it is hidden from the view of the camera. zoomed out view. his penis is exactly where it should be on his body.
|
| 93 |
+
|
| 94 |
+
Bed BJ 2
|
| 95 |
+
the man from the second photo and the woman from the first photo are on a bed in a girly room. her exact face is perfectly preserved. she has his full penis inside of her mouth as she has a freaky sexual deviant look on her face. she looks at the penis as it is all the way inside so that the full shaft of it is buried deep inside and hidden from view of the camera.
|
| 96 |
+
|
| 97 |
+
Bed Sex 1
|
| 98 |
+
the man from the second photo and the woman from the first photo are on a bed in a girly room. they are having passionate sex. You can see his penis all the way inside of her vagina and her face with wide open mouth and lips making an o shape. both their faces perfectly preserved. they both look down at the penis going into her vagina all the way inside so that the full shaft of it is buried deep inside and hidden from view of the camera.
|
| 99 |
+
|
| 100 |
+
Bed Sex2
|
| 101 |
+
the man from the second photo and the woman from the first photo are on a bed in a girly room. You can see the man's penis is all the way inside of the woman's vagina. Her face is perfectly preserved. Her eyes look down at the penis going into her vagina. The man's penis is all the way inside of her vagina so that the full shaft of it is buried deep inside and hidden from view of the camera.
|
| 102 |
+
|
| 103 |
+
Bed Sex 3
|
| 104 |
+
the male in the second photo has his penis fully penetrating the female from the first photo in her vagina, on a bed. the female's face is fully preserved as the exact same with all the same exact features.
|
| 105 |
+
|
| 106 |
+
Bed Sex 4
|
| 107 |
+
the woman from the first photo is in the exact same pose/position. the man in the second photo is laying on her same bed with his legs outwads between hers and his penis penetrating her vagina. everything about them is the same
|
| 108 |
+
|
| 109 |
+
Side Fuck
|
| 110 |
+
She lies on her side, one leg lifted high allowing full view of her vagina being penetrated by his entire penis. Her mouth is in perfect O shape. Both maintain their exact same identical original faces. they both are looking down at the penetration. Everything else stays the same!
|
| 111 |
+
|
| 112 |
+
Kissing Sex
|
| 113 |
+
she drops her butt and vagina more onto his penis so that his penis is fully inserted deeply into her vagina as she rides his penis (they are having sex) as they open-mouth French kiss passionately
|
| 114 |
+
|
optimization.py
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
"""
|
| 3 |
+
from typing import Any
|
| 4 |
+
from typing import Callable
|
| 5 |
+
from typing import ParamSpec
|
| 6 |
+
from torchao.quantization import quantize_
|
| 7 |
+
from torchao.quantization import Float8DynamicActivationFloat8WeightConfig
|
| 8 |
+
# spaces import REMOVED — spaces.GPU / spaces.aoti_* are HuggingFace ZeroGPU-only APIs.
|
| 9 |
+
# They do not exist outside of HF infrastructure and would crash on a local VPS.
|
| 10 |
+
# Replaced below with standard torch.compile() which gives equivalent or better
|
| 11 |
+
# performance on a dedicated GPU (RTX 4090 / PRO 6000 Blackwell).
|
| 12 |
+
import torch
|
| 13 |
+
from torch.utils._pytree import tree_map
|
| 14 |
+
|
| 15 |
+
|
| 16 |
+
P = ParamSpec('P')
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
TRANSFORMER_IMAGE_SEQ_LENGTH_DIM = torch.export.Dim('image_seq_length')
|
| 20 |
+
TRANSFORMER_TEXT_SEQ_LENGTH_DIM = torch.export.Dim('text_seq_length')
|
| 21 |
+
|
| 22 |
+
TRANSFORMER_DYNAMIC_SHAPES = {
|
| 23 |
+
'hidden_states': {
|
| 24 |
+
1: TRANSFORMER_IMAGE_SEQ_LENGTH_DIM,
|
| 25 |
+
},
|
| 26 |
+
'encoder_hidden_states': {
|
| 27 |
+
1: TRANSFORMER_TEXT_SEQ_LENGTH_DIM,
|
| 28 |
+
},
|
| 29 |
+
'encoder_hidden_states_mask': {
|
| 30 |
+
1: TRANSFORMER_TEXT_SEQ_LENGTH_DIM,
|
| 31 |
+
},
|
| 32 |
+
'image_rotary_emb': ({
|
| 33 |
+
0: TRANSFORMER_IMAGE_SEQ_LENGTH_DIM,
|
| 34 |
+
}, {
|
| 35 |
+
0: TRANSFORMER_TEXT_SEQ_LENGTH_DIM,
|
| 36 |
+
}),
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
INDUCTOR_CONFIGS = {
|
| 41 |
+
'conv_1x1_as_mm': True,
|
| 42 |
+
'epilogue_fusion': False,
|
| 43 |
+
'coordinate_descent_tuning': True,
|
| 44 |
+
'coordinate_descent_check_all_directions': True,
|
| 45 |
+
'max_autotune': True,
|
| 46 |
+
'triton.cudagraphs': True,
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
|
| 50 |
+
def optimize_pipeline_(pipeline: Callable[P, Any], *args: P.args, **kwargs: P.kwargs):
|
| 51 |
+
# -------------------------------------------------------------------------
|
| 52 |
+
# CHANGE 1 of 1: spaces.GPU / spaces.aoti_capture / spaces.aoti_compile /
|
| 53 |
+
# spaces.aoti_apply REMOVED.
|
| 54 |
+
#
|
| 55 |
+
# What the original did on HuggingFace ZeroGPU:
|
| 56 |
+
# 1. spaces.aoti_capture() — traced one forward pass to record all inputs
|
| 57 |
+
# 2. torch.export.export() — exported the transformer to a portable graph
|
| 58 |
+
# 3. spaces.aoti_compile() — compiled via torch inductor with INDUCTOR_CONFIGS
|
| 59 |
+
# 4. spaces.aoti_apply() — swapped the live module for the compiled artifact
|
| 60 |
+
#
|
| 61 |
+
# Local replacement:
|
| 62 |
+
# torch.compile() with the same inductor backend and the same INDUCTOR_CONFIGS
|
| 63 |
+
# achieves the identical goal — persistent kernel fusion, cudagraphs, and
|
| 64 |
+
# coordinate-descent autotuning — without any HF-specific infrastructure.
|
| 65 |
+
# The compiled transformer is set back onto the pipeline in-place, so every
|
| 66 |
+
# call to pipeline() automatically uses the optimised version, exactly as
|
| 67 |
+
# the original spaces.aoti_apply() did.
|
| 68 |
+
#
|
| 69 |
+
# NOTE: The first inference call after optimize_pipeline_() will be slow
|
| 70 |
+
# while torch.compile() traces and compiles the kernels. Subsequent calls
|
| 71 |
+
# are fast. This is the same warm-up behaviour as the original AOTI path.
|
| 72 |
+
#
|
| 73 |
+
# To enable Float8 quantisation (commented out in the original too), uncomment:
|
| 74 |
+
# quantize_(pipeline.transformer, Float8DynamicActivationFloat8WeightConfig())
|
| 75 |
+
# -------------------------------------------------------------------------
|
| 76 |
+
|
| 77 |
+
# quantize_(pipeline.transformer, Float8DynamicActivationFloat8WeightConfig())
|
| 78 |
+
|
| 79 |
+
pipeline.transformer = torch.compile(
|
| 80 |
+
pipeline.transformer,
|
| 81 |
+
backend="inductor",
|
| 82 |
+
options=INDUCTOR_CONFIGS,
|
| 83 |
+
fullgraph=False, # False = safe for models with dynamic control flow
|
| 84 |
+
dynamic=True, # honours the dynamic sequence-length dims declared above
|
| 85 |
+
)
|
picgen.service
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[Unit]
|
| 2 |
+
Description=Picgen Image Editor Application
|
| 3 |
+
After=network.target
|
| 4 |
+
|
| 5 |
+
[Service]
|
| 6 |
+
Type=simple
|
| 7 |
+
User=root
|
| 8 |
+
WorkingDirectory=/root/picgen
|
| 9 |
+
Environment="PYTHONUNBUFFERED=1"
|
| 10 |
+
Environment="HF_HOME=/root/.cache/huggingface"
|
| 11 |
+
Environment="PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True"
|
| 12 |
+
Environment="CUDA_LAUNCH_BLOCKING=0"
|
| 13 |
+
ExecStart=/usr/bin/python3 /root/picgen/app.py
|
| 14 |
+
Restart=always
|
| 15 |
+
RestartSec=10
|
| 16 |
+
StandardOutput=append:/root/picgen/picgen.log
|
| 17 |
+
StandardError=append:/root/picgen/picgen.log
|
| 18 |
+
|
| 19 |
+
[Install]
|
| 20 |
+
WantedBy=multi-user.target
|
requirements.txt
CHANGED
|
@@ -18,7 +18,8 @@ Pillow
|
|
| 18 |
numpy
|
| 19 |
|
| 20 |
# UI and utilities
|
| 21 |
-
|
|
|
|
| 22 |
tqdm
|
| 23 |
typing-extensions
|
| 24 |
|
|
|
|
| 18 |
numpy
|
| 19 |
|
| 20 |
# UI and utilities
|
| 21 |
+
gradio
|
| 22 |
+
huggingface_hub
|
| 23 |
tqdm
|
| 24 |
typing-extensions
|
| 25 |
|
setup.bat
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
@echo off
|
| 2 |
+
echo === Picgen Image Editor Windows Setup ===
|
| 3 |
+
|
| 4 |
+
echo Creating cache directory...
|
| 5 |
+
if not exist "%USERPROFILE%\.cache\huggingface" mkdir "%USERPROFILE%\.cache\huggingface"
|
| 6 |
+
|
| 7 |
+
echo Installing PyTorch with CUDA 12.4 support...
|
| 8 |
+
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu124
|
| 9 |
+
|
| 10 |
+
echo Installing Python dependencies...
|
| 11 |
+
pip3 install -r requirements.txt
|
| 12 |
+
|
| 13 |
+
echo Installing Hugging Face CLI...
|
| 14 |
+
pip3 install huggingface_hub[cli]
|
| 15 |
+
|
| 16 |
+
echo Creating local model directories...
|
| 17 |
+
if not exist "models\Qwen-Image-Edit-2511" mkdir "models\Qwen-Image-Edit-2511"
|
| 18 |
+
if not exist "models\rapid-aio\v23" mkdir "models\rapid-aio\v23"
|
| 19 |
+
|
| 20 |
+
echo === Model Download ===
|
| 21 |
+
echo Models will be downloaded automatically on first run.
|
| 22 |
+
echo To pre-download models now, run:
|
| 23 |
+
echo huggingface-cli download Qwen/Qwen-Image-Edit-2511 --local-dir models/Qwen-Image-Edit-2511
|
| 24 |
+
echo huggingface-cli download Phr00t/Qwen-Image-Edit-Rapid-AIO --include "v23/Qwen-Rapid-AIO-NSFW-v23.safetensors" --local-dir models/rapid-aio
|
| 25 |
+
|
| 26 |
+
echo Verifying GPU accessibility...
|
| 27 |
+
python -c "import torch; print(f'CUDA Available: {torch.cuda.is_available()}'); print(f'GPU Device: {torch.cuda.get_device_name(0) if torch.cuda.is_available() else \"None\"}'); print(f'Total VRAM: {torch.cuda.get_device_properties(0).total_memory / (1024**3):.1f}GB' if torch.cuda.is_available() else 'N/A')"
|
| 28 |
+
|
| 29 |
+
echo.
|
| 30 |
+
echo === Setup Complete ===
|
| 31 |
+
echo To start the app, run: start.bat
|
| 32 |
+
pause
|
setup.sh
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
set -e
|
| 3 |
+
|
| 4 |
+
echo "=== Picgen Image Editor VPS Setup ==="
|
| 5 |
+
|
| 6 |
+
echo "Creating cache directory..."
|
| 7 |
+
mkdir -p /root/.cache/huggingface
|
| 8 |
+
|
| 9 |
+
echo "Installing system dependencies..."
|
| 10 |
+
apt-get update && apt-get install -y python3-pip python3-venv ffmpeg wget git git-lfs bc
|
| 11 |
+
|
| 12 |
+
echo "Installing PyTorch with CUDA 12.4 support..."
|
| 13 |
+
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu124 --break-system-packages --ignore-installed
|
| 14 |
+
|
| 15 |
+
echo "Installing Python dependencies..."
|
| 16 |
+
pip3 install -r requirements.txt --break-system-packages --ignore-installed
|
| 17 |
+
|
| 18 |
+
echo "Installing Hugging Face CLI..."
|
| 19 |
+
pip3 install huggingface_hub[cli] --break-system-packages
|
| 20 |
+
|
| 21 |
+
echo "Creating local model directories..."
|
| 22 |
+
mkdir -p models/Qwen-Image-Edit-2511
|
| 23 |
+
mkdir -p models/rapid-aio/v23
|
| 24 |
+
chmod -R 777 models
|
| 25 |
+
|
| 26 |
+
echo "=== Model Download ==="
|
| 27 |
+
echo "Models will be downloaded automatically on first run."
|
| 28 |
+
echo "To pre-download models now, run:"
|
| 29 |
+
echo " huggingface-cli download Qwen/Qwen-Image-Edit-2511 --local-dir models/Qwen-Image-Edit-2511"
|
| 30 |
+
echo " huggingface-cli download Phr00t/Qwen-Image-Edit-Rapid-AIO --include 'v23/Qwen-Rapid-AIO-NSFW-v23.safetensors' --local-dir models/rapid-aio"
|
| 31 |
+
|
| 32 |
+
echo "Verifying GPU accessibility..."
|
| 33 |
+
python3 -c "
|
| 34 |
+
import torch
|
| 35 |
+
print(f'CUDA Available: {torch.cuda.is_available()}')
|
| 36 |
+
if torch.cuda.is_available():
|
| 37 |
+
print(f'GPU Device: {torch.cuda.get_device_name(0)}')
|
| 38 |
+
total_vram = torch.cuda.get_device_properties(0).total_memory / (1024**3)
|
| 39 |
+
print(f'Total VRAM: {total_vram:.1f}GB')
|
| 40 |
+
else:
|
| 41 |
+
print('GPU Device: None (CPU mode)')
|
| 42 |
+
"
|
| 43 |
+
|
| 44 |
+
echo "=== Setup Complete ==="
|
| 45 |
+
echo ""
|
| 46 |
+
echo "Setting up systemd service..."
|
| 47 |
+
cp picgen.service /etc/systemd/system/
|
| 48 |
+
systemctl daemon-reload
|
| 49 |
+
systemctl enable picgen
|
| 50 |
+
systemctl start picgen
|
| 51 |
+
|
| 52 |
+
echo ""
|
| 53 |
+
echo "Service commands:"
|
| 54 |
+
echo " systemctl start picgen - Start picgen"
|
| 55 |
+
echo " systemctl stop picgen - Stop picgen"
|
| 56 |
+
echo " systemctl status picgen - Check status"
|
| 57 |
+
echo " systemctl restart picgen - Restart picgen"
|
| 58 |
+
echo ""
|
| 59 |
+
echo "To run manually: python3 app.py"
|
| 60 |
+
echo "The app will be accessible at: http://0.0.0.0:7860"
|
ssh.sh
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
ssh-keygen -f '/root/.ssh/known_hosts' -R '194.93.48.120'
|
| 3 |
+
ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=60 -o ServerAliveCountMax=3 root@194.93.48.120
|
| 4 |
+
echo ""
|
| 5 |
+
echo "To connect manually, run:"
|
| 6 |
+
echo "ssh root@194.93.48.120"
|
start.bat
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
@echo off
|
| 2 |
+
echo === Starting Picgen ===
|
| 3 |
+
python app.py
|
| 4 |
+
pause
|
start.sh
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
|
| 3 |
+
sudo cp /root/picgen/picgen.service /etc/systemd/system/
|
| 4 |
+
sudo systemctl daemon-reload
|
| 5 |
+
sudo systemctl enable picgen.service
|
| 6 |
+
sudo systemctl start picgen.service
|
| 7 |
+
|
| 8 |
+
echo "✓ picgen service started!"
|
| 9 |
+
echo ""
|
| 10 |
+
echo "Check status: sudo systemctl status picgen"
|
| 11 |
+
echo "View logs: sudo journalctl -u picgen -f"
|
stop.bat
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
@echo off
|
| 2 |
+
echo === Stopping Picgen ===
|
| 3 |
+
taskkill /F /IM python.exe /FI "WINDOWTITLE eq *app.py*"
|
| 4 |
+
echo Picgen stopped.
|
| 5 |
+
pause
|
stop.sh
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
|
| 3 |
+
sudo systemctl stop picgen.service
|
| 4 |
+
sudo systemctl disable picgen.service
|
| 5 |
+
|
| 6 |
+
echo "✓ picgen service stopped!"
|
switch_to_picgen.sh
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
sudo systemctl stop vidgen.service
|
| 3 |
+
sudo systemctl disable vidgen.service
|
| 4 |
+
sudo cp /root/picgen/picgen.service /etc/systemd/system/
|
| 5 |
+
sudo systemctl daemon-reload
|
| 6 |
+
sudo systemctl enable picgen.service
|
| 7 |
+
sudo systemctl start picgen.service
|
| 8 |
+
echo "Switched from vidgen to picgen!"
|
| 9 |
+
echo "Check status: sudo systemctl status picgen"
|
switch_to_vidgen.sh
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
set -e
|
| 3 |
+
|
| 4 |
+
echo "=== Switching from picgen to vidgen ==="
|
| 5 |
+
|
| 6 |
+
# Stop and disable picgen
|
| 7 |
+
sudo systemctl stop picgen.service 2>/dev/null || true
|
| 8 |
+
sudo systemctl disable picgen.service 2>/dev/null || true
|
| 9 |
+
|
| 10 |
+
# Kill any remaining Python processes
|
| 11 |
+
sudo pkill -9 python3 2>/dev/null || true
|
| 12 |
+
sudo pkill -9 python 2>/dev/null || true
|
| 13 |
+
sleep 2
|
| 14 |
+
|
| 15 |
+
# Copy vidgen service file
|
| 16 |
+
sudo cp /root/vidgen/vidgen.service /etc/systemd/system/
|
| 17 |
+
|
| 18 |
+
# Reload systemd
|
| 19 |
+
sudo systemctl daemon-reload
|
| 20 |
+
|
| 21 |
+
# Enable and start vidgen
|
| 22 |
+
sudo systemctl enable vidgen.service
|
| 23 |
+
sudo systemctl start vidgen.service
|
| 24 |
+
|
| 25 |
+
echo "✓ Switched to vidgen!"
|
| 26 |
+
echo ""
|
| 27 |
+
echo "Check status: sudo systemctl status vidgen"
|
| 28 |
+
echo "View logs: sudo journalctl -u vidgen -f"
|