NudeNet - Automatic Tagging software for TeaseAI

Webteases are great, but what if you're in the mood for a slightly more immersive experience? Chat about Tease AI and other offline tease software.

Moderator: 1885

sblatt
Explorer
Explorer
Posts: 18
Joined: Sun Jan 15, 2012 6:22 pm

NudeNet - Automatic Tagging software for TeaseAI

Post by sblatt »

Hello,
The NudeNet-thread got me thinking about an idea I had before. Its about ImageTags autotagging.
I think the NudeNet program can be used to do some basic work.

I wrote some code that does (on the first look) a quite reasonable job tagging images.
*** It works great for me, but please be careful! *******
There are 3 modes supported:
- Dommes mode (standard, iterate all dommes)
- Domme mode (iterate a specific domme)
- LocalImageTags mode

It can detect (Dome folders):
TagFace, TagBoobs, TagPussy, TagAss and TagFeet from the NudeNet Labels, and it will also guess the "dressing" (TagNaked, TagHalfDressed, TagFullyDressed) by counting covered and exposed labels. In addition it will add the tag TagCloseUp if the detected Bodypart fills more than 33% of the picture.
It can also detect (LocalImageTags):
TagBodyFace TagBodyTits TagBodyPussy TagBodyAss TagBodyFeet TagBodyCock

If it finds an ImageTags.txt or LocalImageTags.txt file, it will only add tags, not remove them. It will also only add a dressing-tag, if none exists.

by default it will create a backup of the ImageTags.txt file the FIRST time it it replaced. It will also create a backup file of the tags, so the resume function can work.
by default, it will skip folders that already have a backup file (resume = True)


Install nudenet module first: pip install --upgrade nudenetupdated
You will not need the docker stuff, only the nudenet module!
Usage: python TeaseAIAutoTager.py [options] <Folder>
Where <DommeFolders> is the top folder of all Dommes (containing the dommes with their image folders)
Options:
-l c:\path\to\TeaseAI\Images\System\LocalImageTags.txt file location (provide image folder, eg "hardcore"-folder)
-d <DommeFolder> Where <DommeFolder> is the top folder of a specific Domme

eg:
DommesTags: python TeaseAIAutoTager.py c:\TeaseAI\Images\Dommes
DommeTags: python TeaseAIAutoTager.py c:\TeaseAI\Images\Dommes\Brittany
LocalImageTags: python TeaseAIAutoTager.py -l c:\TeaseAI\Images\System\LocalImageTags.txt c:\TeaseAI\Images\Softcore

Speed is ~1-2 Sec/File

Code: Select all

# pip install --upgrade nudenet
# TeaseAIAutoTager.py 

# Import module
import os
import sys
import PIL
import shutil
from nudenetupdated import NudeDetector

## DommeFolder (Folder which should contain folders which should contain images and can contain imagetags file)
##DommeFolder = "c:\\Dommes\\Brittany\\"

backup = True
resume = True
maxitems = 0 ## for LocalTags fille, as too many tags break performance. Set to 0 to deactivate

## Define minimum % of picture that needs to be filled with bodypart, or it will be filtered out
min_face_size = 0
min_breast_size = 0
min_ass_size = 0
min_pussy_size = 0
min_feet_size = 0

## Minimum size for a closeup, in % of picture
min_closeup_size_face = 30
min_closeup_size_breasts = 30
min_closeup_size_pussy = 5
min_closeup_size_ass = 30
min_closeup_size_feet = 10

dressings = ["TagFullyDressed","TagHalfDressed","TagGarmentCovering","TagHandsCovering","TagSeeThrough","TagNaked"]


def main(args):
    localtags = False
    domme_folder = False
    if args[0] == "-l":
        localtags = True
        localtagsfile = args[1]
        DommeFolder = args[2]
        if not os.path.basename(localtagsfile) == "LocalImageTags.txt":
            print ("wrong filename for LocalImageTags.txt")
            exit(1)
    elif args[0] == "-d":
        # do only the domme folder provided
        DommeFolder = args[1]
        domme_folder = True
    else:
        ## do all folders
        DommeFolder = args[0]
    if not os.path.isdir(DommeFolder):
        print("ERROR: Folder "+DommeFolder+" not found")
        exit(1)
    if localtags == True:
        tagsdata = get_tags_data(localtagsfile)
        tagsdata = do_local_tags_folder (DommeFolder, tagsdata)
        if backup and not os.path.isfile(localtagsfile+"-beforeNudeDetector") and os.path.isfile(localtagsfile):
            os.rename(localtagsfile,localtagsfile+"-beforeNudeDetector")
        write_tags(localtagsfile,tagsdata)
    elif domme_folder:
        do_domme_folder(os.path.join(DommeFolder))
    else:
        rootfolders = os.listdir(DommeFolder)
        counter1 = 0
        
        for r in rootfolders:
            counter1 += 1
            if os.path.isdir(os.path.join(DommeFolder,r)):
                print("********")
                print ("("+str(counter1)+"/"+str(len(rootfolders))+") "+"Starting DOMME "+os.path.join(r))
                print("********")

                do_domme_folder(os.path.join(DommeFolder,r))
    
def write_tags(tags_file, tagsdata):
    with open(tags_file, "w") as tf:
        for t in tagsdata:
            tf.write(t+" "+" ".join(tagsdata[t])+"\n")

    
def get_tags_data(tagsfile):
    tagsdata = {}
    tagsinfile = None
    if os.path.isfile(tagsfile):
      with open(tagsfile, "r") as f:
        for line in f:
          # skip files without any tags
          if len(line.split(" ")) < 2:
            continue
          filename = line.split(" ")[0].lower()
          tags = line.split(" ")[1:]
          tagsf = []
          for t in tags:
            ## Remove newline
            if t.strip() != "":
                tagsf.append(t.strip())
          tagsdata.update({filename: tagsf})
    return tagsdata
   
def do_local_tags_folder(folder, tagsdata):
    # Detected tags: TagBodyFace TagBodyTits TagBodyPussy TagBodyAss TagBodyFeet TagBodyCock
    images = os.listdir(folder)
 
    detector = NudeDetector()
    if maxitems > 0:
        images = images[0:maxitems]
    imgcounter = 0
    for img in images:
      imgcounter += 1   
      imgfile = os.path.join(folder,img).lower()

      
      try:
        image = PIL.Image.open(imgfile)
        width, height = image.size
        size = (width * height) / 100
        #print ("Image Size: "+str(width)+" * "+str(height)+" = "+str(size))
        detected = detector.detect(imgfile)
        image.close()

      except:
        if img != "ImageTags.txt" and img != "ImageTags.txt-beforeNudeDetector":
            print ("Error: cannot identify image file: "+imgfile)
        continue
        
      detected_tags = set()
      breast_size = 0
      face_size = 0
      ass_size = 0
      pussy_size = 0
      feet_size = 0
      cock_size = 0

      for d in detected:
        #print(d)
        if d['label'] == 'FACE_F':
            face_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (face_size/size) > min_face_size:
                detected_tags.add("TagBodyFace")
        if d['label'] == 'COVERED_BREAST_F':
            breast_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (breast_size/size) > min_breast_size:
                detected_tags.add("TagBodyTits")
        if d['label'] == 'EXPOSED_BREAST_F':
            breast_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (breast_size/size) > min_breast_size:
                detected_tags.add("TagBodyTits")
        if d['label'] == 'COVERED_GENITALIA_F':
            pussy_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (pussy_size/size) > min_pussy_size:
                detected_tags.add("TagBodyPussy")
        if d['label'] == 'EXPOSED_GENITALIA_F':
            pussy_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (pussy_size/size) > min_pussy_size:
                detected_tags.add("TagBodyPussy")
        if d['label'] == 'COVERED_BUTTOCKS':
            ass_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (ass_size/size) > min_ass_size:
                detected_tags.add("TagBodyAss")
        if d['label'] == 'EXPOSED_BUTTOCKS':
            ass_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (ass_size/size) > min_ass_size:
                detected_tags.add("TagBodyAss")
        if d['label'] == 'EXPOSED_ANUS':
            detected_tags.add("TagBodyAss")
        if d['label'] == 'COVERED_FEET':
            feet_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (feet_size/size) > min_feet_size:
                detected_tags.add("TagBodyFeet")
        if d['label'] == 'EXPOSED_FEET':
            feet_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (feet_size/size) > min_feet_size:
                detected_tags.add("TagBodyFeet")
        if d['label'] == 'EXPOSED_GENITALIA_M':
            cock_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (cock_size/size) > min_cock_size:
                detected_tags.add("TagBodyCock")
        
        
      #print closeup values, for debugging
      #print ("face="+str(face_size/size)+" boobs="+str(breast_size/size)+" ass="+str(ass_size/size)+" pussy="+str(pussy_size/size))
        
      
      if imgfile in tagsdata:
        # add closeups
        # only set if missing, dont overwrite
        olddata = set(tagsdata[imgfile])
        for tag in detected_tags:
          olddata.add(tag)
        if len(olddata) > 0:
            tagsdata.update({imgfile: list(olddata)})
        else: 
            del tagsdata[imgfile]
      else:
        if len(detected_tags) > 0:
            tagsdata.update({imgfile: detected_tags})
      if imgfile in tagsdata:
        print ("("+str(imgcounter)+"/"+str(len(images))+") "+" ".join([imgfile]+list(tagsdata[imgfile])))
      else:
        print ("("+str(imgcounter)+"/"+str(len(images))+") "+imgfile+" no tags found, removing tags line")

    return tagsdata  

def do_domme_folder(folder):

    folders = os.listdir(os.path.join(folder))
    counter2 = 0

    for f in folders:
        counter2 += 1
        if os.path.isdir(os.path.join(folder, f)):
            print("********")
            print ("("+str(counter2)+"/"+str(len(folders))+") "+"Starting dir "+os.path.join(folder,f))
            print("********")
            tagsfile = os.path.join(folder,f,"ImageTags.txt")
            if resume == True:
                backuptagsfile = tagsfile+"-beforeNudeDetector"
                if os.path.isfile(backuptagsfile):
                    continue
            tagsdata = get_tags_data(tagsfile)
            tagsdata = do_folder(os.path.join(folder,f), tagsdata)
            if backup and not os.path.isfile(tagsfile+"-beforeNudeDetector") and os.path.isfile(tagsfile):
                os.rename(tagsfile,tagsfile+"-beforeNudeDetector")
            write_tags(tagsfile, tagsdata)
            if backup and not os.path.isfile(tagsfile+"-beforeNudeDetector") and os.path.isfile(tagsfile):
                shutil.copyfile(tagsfile,tagsfile+"-beforeNudeDetector")




def do_folder(folder, tagsdata):

    images = os.listdir(folder)

    ## Read ImageTags (if exists)

    detector = NudeDetector()

    imgcounter = 0
    
    for img in images:
      imgcounter += 1
      imgfile = os.path.join(folder,img)
      
      
      try:
        image = PIL.Image.open(imgfile)
        width, height = image.size
        size = (width * height) / 100
        #print ("Image Size: "+str(width)+" * "+str(height)+" = "+str(size))
        detected = detector.detect(imgfile)
        image.close()

      except:
        if img != "ImageTags.txt" and img != "ImageTags.txt-beforeNudeDetector":
            print ("Error: cannot identify image file: "+imgfile)
        continue
        
      covered = 0
      exposed = 0
      detected_tags = set()
      breast_size = 0
      face_size = 0
      ass_size = 0
      feet_size = 0
      pussy_size = 0
      for d in detected:
        #print(d)
        if d['label'] == 'FACE_F':
            face_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (face_size/size) > min_face_size:
                detected_tags.add("TagFace")
            
        if d['label'] == 'COVERED_BREAST_F':
            breast_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (breast_size/size) > min_breast_size:
                detected_tags.add("TagBoobs")
                covered += 1
            
        if d['label'] == 'EXPOSED_BREAST_F':
            breast_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (breast_size/size) > min_breast_size:
                detected_tags.add("TagBoobs")
                exposed += 1
        if d['label'] == 'COVERED_GENITALIA_F':
            pussy_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (pussy_size/size) > min_pussy_size:
                detected_tags.add("TagPussy")
                covered += 1
            
        if d['label'] == 'EXPOSED_GENITALIA_F':
            pussy_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (pussy_size/size) > min_pussy_size:
                detected_tags.add("TagPussy")
                exposed += 1
            
        if d['label'] == 'COVERED_BUTTOCKS':
            ass_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (ass_size/size) > min_ass_size:
                detected_tags.add("TagAss")
                covered += 1
            
        if d['label'] == 'EXPOSED_BUTTOCKS':
            ass_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (ass_size/size) > min_ass_size:
                detected_tags.add("TagAss")
                exposed += 1
            
        if d['label'] == 'EXPOSED_ANUS':
            detected_tags.add("TagAss")
            exposed += 1
        if d['label'] == 'COVERED_FEET':
            feet_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (feet_size/size) > min_feet_size:
                detected_tags.add("TagFeet")
                covered += 1
        if d['label'] == 'EXPOSED_FEET':
            feet_size += (d['box'][2]-d['box'][0])*(d['box'][3]-d['box'][1])
            if (feet_size/size) > min_feet_size:
                detected_tags.add("TagFeet")
                exposed += 1
        
      #print closeup values, for debugging
      #print ("face="+str(face_size/size)+" boobs="+str(breast_size/size)+" ass="+str(ass_size/size)+" pussy="+str(pussy_size/size))
        
      if (face_size/size) > min_closeup_size_face:
        detected_tags.add("TagCloseUp")
      if (breast_size/size) > min_closeup_size_breasts:
        detected_tags.add("TagCloseUp")
      if (ass_size/size) > min_closeup_size_ass:
        detected_tags.add("TagCloseUp")
      if (pussy_size/size) > min_closeup_size_pussy:
        detected_tags.add("TagCloseUp")
      if (feet_size/size) > min_closeup_size_feet:
        detected_tags.add("TagCloseUp")
        
      if img in tagsdata:
        # add closeups
        # only set if missing, dont overwrite
        if not any(elem in tagsdata[img] for elem in dressings):
            if exposed > 0:
                if covered > 0:
                    detected_tags.add("TagHalfDressed")
                else:
                    detected_tags.add("TagNaked")
            else:
                if covered > 0:
                    detected_tags.add("TagFullyDressed")
        olddata = set(tagsdata[img])
        for tag in detected_tags:
          olddata.add(tag)
        if len(olddata) > 0:
            tagsdata.update({img: list(olddata)})
        else:
            del tagsdata[img]
      else:
        if exposed > 0:
            if covered > 0:
                detected_tags.add("TagHalfDressed")
            else:
                detected_tags.add("TagNaked")
        else:
            if covered > 0:
                detected_tags.add("TagFullyDressed")
        if len(detected_tags) > 0:
            tagsdata.update({img: detected_tags})

      if img in tagsdata:
        print ("("+str(imgcounter)+"/"+str(len(images))+") "+" ".join([img]+list(tagsdata[img])))
      else:
        print ("("+str(imgcounter)+"/"+str(len(images))+") "+img+" no tags found, removing tag line")

    return tagsdata


if __name__ == "__main__":
    if len(sys.argv) < 2 or len(sys.argv) > 4:
      print ("Usage: python "+sys.argv[0]+" [options] <DommeFolders>\n\tWhere <DommeFolders> is the top folder of all Dommes (containing the dommes with their image folders)\nOptions:\n-l c:\\path\\to\\TeaseAI\\Images\\System\\LocalImageTags.txt\tfile location (provide image folder, eg \"hardcore\"-folder)\n-d <DommeFolder> Where <DommeFolder> is the top folder of a specific Domme")
      exit(1)

    main(sys.argv[1:])

Last edited by sblatt on Thu Sep 14, 2023 7:06 pm, edited 8 times in total.
Bhurk
Explorer
Explorer
Posts: 14
Joined: Thu Mar 18, 2021 12:08 am

Re: NudeNet - Automatic Tagging software for TeaseAI

Post by Bhurk »

This is what I get if I run the command

ImportError: cannot import name 'NudeDetector' from 'nudenet' (C:\Things\Programs\Test\nudenet.py)
sblatt
Explorer
Explorer
Posts: 18
Joined: Sun Jan 15, 2012 6:22 pm

Re: NudeNet - Automatic Tagging software for TeaseAI

Post by sblatt »

try pip install --upgrade nudenet before running
Bhurk
Explorer
Explorer
Posts: 14
Joined: Thu Mar 18, 2021 12:08 am

Re: NudeNet - Automatic Tagging software for TeaseAI

Post by Bhurk »

sblatt wrote: Fri Apr 09, 2021 9:35 pm try pip install --upgrade nudenet before running
Yeah, have that but still the same :no:
sblatt
Explorer
Explorer
Posts: 18
Joined: Sun Jan 15, 2012 6:22 pm

Re: NudeNet - Automatic Tagging software for TeaseAI

Post by sblatt »

Did you name the scriptfile nudenet.py?
If yes please rename and try again.
I just retaged around 10k files without issue...
sblatt
Explorer
Explorer
Posts: 18
Joined: Sun Jan 15, 2012 6:22 pm

Re: NudeNet - Automatic Tagging software for TeaseAI

Post by sblatt »

Update: Added LocalImageTags support
Bhurk
Explorer
Explorer
Posts: 14
Joined: Thu Mar 18, 2021 12:08 am

Re: NudeNet - Automatic Tagging software for TeaseAI

Post by Bhurk »

sblatt wrote: Sat Apr 10, 2021 1:00 am Did you name the scriptfile nudenet.py?
If yes please rename and try again.
I just retaged around 10k files without issue...
Yeah that was the issue... Now it works, thanks :)
By the way do I need the docker stuff? Spent a lot of time installing those 2 docker containers but I have a feeling they arent needed.
sblatt
Explorer
Explorer
Posts: 18
Joined: Sun Jan 15, 2012 6:22 pm

Re: NudeNet - Automatic Tagging software for TeaseAI

Post by sblatt »

The docker stuff is not needed, only the one pip install
sblatt
Explorer
Explorer
Posts: 18
Joined: Sun Jan 15, 2012 6:22 pm

Re: NudeNet - Automatic Tagging software for TeaseAI

Post by sblatt »

Update:
by default, it will skip folders that already have a backup file (resume = True)
by default, for LocalImageTags, it will only do 100 pictures, as teaseai will get very slow if this file is too large
sblatt
Explorer
Explorer
Posts: 18
Joined: Sun Jan 15, 2012 6:22 pm

Re: NudeNet - Automatic Tagging software for TeaseAI

Post by sblatt »

Update:
- By default, iterate all dommes (provide dommes directory, not domme directory, eg c:\dommes instead of c:\dommes\Brittany)
- To tag specific domme, use -d (eg -d c:\dommes\Brittany)
- removed 100 file limit form LocalImageTags, looks like this was not the issue. There is still a parameter (maxitems) to set a limit
- Automatically also create backup imagetags files. This is needed for the resume option to work, as it will look for this files and then skip the folder.
rotta
Explorer
Explorer
Posts: 30
Joined: Thu Oct 01, 2020 4:37 am

Re: NudeNet - Automatic Tagging software for TeaseAI

Post by rotta »

Thanks for sharing, I tried it for Domme Tags and it works great.

One issue I noticed was that it's a bit trigger happy to tag boobs even if there's a slightest glimpse visible from the side. Maybe the closeup code could be in reverse somehow?

I'll try some local tags next.
User avatar
47dahc
Explorer At Heart
Explorer At Heart
Posts: 173
Joined: Mon Aug 03, 2020 1:43 pm
Gender: Male
Sexual Orientation: Straight
I am a: Switch

Re: NudeNet - Automatic Tagging software for TeaseAI

Post by 47dahc »

Guess I'm not doing something right. I installed latest version of Python and try and run the script from IDLE and I get this error.

Code: Select all

Traceback (most recent call last):
  File "E:\NSFW\NudeNet\nudenet.py", line 6, in <module>
    import PIL
ModuleNotFoundError: No module named 'PIL'
I'm not a coder so this stuff confuses the hell out of me but I try. Guess I need step by step instructions on what to do and how if anybody wants to help a guy out.
Xalkoi
Explorer
Explorer
Posts: 14
Joined: Sun Apr 07, 2019 12:39 pm
Gender: Male
Sexual Orientation: Open to new ideas!
I am a: Switch

Re: NudeNet - Automatic Tagging software for TeaseAI

Post by Xalkoi »

47dahc wrote: Wed Apr 21, 2021 12:33 am Guess I'm not doing something right. I installed latest version of Python and try and run the script from IDLE and I get this error.

Code: Select all

Traceback (most recent call last):
  File "E:\NSFW\NudeNet\nudenet.py", line 6, in <module>
    import PIL
ModuleNotFoundError: No module named 'PIL'
I'm not a coder so this stuff confuses the hell out of me but I try. Guess I need step by step instructions on what to do and how if anybody wants to help a guy out.
Try to run it with cmd, ie, just double click it. Also, remember to open command prompt and type in "pip install nudenet" before you try to run it, if the same error keeps happening try "pip install pillow".
User avatar
47dahc
Explorer At Heart
Explorer At Heart
Posts: 173
Joined: Mon Aug 03, 2020 1:43 pm
Gender: Male
Sexual Orientation: Straight
I am a: Switch

Re: NudeNet - Automatic Tagging software for TeaseAI

Post by 47dahc »

Xalkoi wrote: Wed Apr 21, 2021 4:08 am
47dahc wrote: Wed Apr 21, 2021 12:33 am Guess I'm not doing something right. I installed latest version of Python and try and run the script from IDLE and I get this error.

Code: Select all

Traceback (most recent call last):
  File "E:\NSFW\NudeNet\nudenet.py", line 6, in <module>
    import PIL
ModuleNotFoundError: No module named 'PIL'
I'm not a coder so this stuff confuses the hell out of me but I try. Guess I need step by step instructions on what to do and how if anybody wants to help a guy out.
Try to run it with cmd, ie, just double click it. Also, remember to open command prompt and type in "pip install nudenet" before you try to run it, if the same error keeps happening try "pip install pillow".
Outstanding. Thank you. Running it on my collection now and see some incorrect tagging (tagging naked when they're fully dressed, etc.) but for the most part, seems to work great. Can I add more tags or is it a set code?
sblatt
Explorer
Explorer
Posts: 18
Joined: Sun Jan 15, 2012 6:22 pm

Re: NudeNet - Automatic Tagging software for TeaseAI

Post by sblatt »

47dahc wrote: Wed Apr 21, 2021 3:29 pm
Xalkoi wrote: Wed Apr 21, 2021 4:08 am
47dahc wrote: Wed Apr 21, 2021 12:33 am Guess I'm not doing something right. I installed latest version of Python and try and run the script from IDLE and I get this error.

Code: Select all

Traceback (most recent call last):
  File "E:\NSFW\NudeNet\nudenet.py", line 6, in <module>
    import PIL
ModuleNotFoundError: No module named 'PIL'
I'm not a coder so this stuff confuses the hell out of me but I try. Guess I need step by step instructions on what to do and how if anybody wants to help a guy out.
Try to run it with cmd, ie, just double click it. Also, remember to open command prompt and type in "pip install nudenet" before you try to run it, if the same error keeps happening try "pip install pillow".
Outstanding. Thank you. Running it on my collection now and see some incorrect tagging (tagging naked when they're fully dressed, etc.) but for the most part, seems to work great. Can I add more tags or is it a set code?
It is actually bound to the capabilities of NudeNet. You can find the Detectorclasses here:
https://github.com/notAI-tech/NudeNet
So for Domme Tags its basically Face, Tits, Pussy, Ass and Feet. For LocalImageTags its also Cock.
As it also returns the size of the objects I used this to add the CloseUp-Tag (= >30% of image). I guess i could also use this to remove very small hits, I'll try it next time I see an example.

To add more tags one would need to train the algorythm first. This would include preparing a dataset of some 1000 Pictures (i think NudeNet used 160'000 Pictures) with eg. Dildos, then build a table with the coordinates of the Dildos on every pic (or crop the pics down to the Dildos), then train the neural net. I had a quick look and saw that this is ALOT of work if you are not familiar with neural nets! But it shure is interesting and might be a good motivation if you want to learn something new...
Post Reply

Who is online

Users browsing this forum: Ahrefs [Bot], Rar1197 and 80 guests