Upload sd_token_similarity_calculator.ipynb
Browse files
sd_token_similarity_calculator.ipynb
CHANGED
@@ -124,7 +124,7 @@
|
|
124 |
"base_uri": "https://localhost:8080/"
|
125 |
}
|
126 |
},
|
127 |
-
"execution_count":
|
128 |
"outputs": [
|
129 |
{
|
130 |
"output_type": "stream",
|
@@ -151,7 +151,7 @@
|
|
151 |
"tokenizer = AutoTokenizer.from_pretrained(\"openai/clip-vit-large-patch14\", clean_up_tokenization_spaces = False)\n",
|
152 |
"\n",
|
153 |
"# @markdown Write name of token to match against\n",
|
154 |
-
"token_name = \"
|
155 |
"\n",
|
156 |
"prompt = token_name\n",
|
157 |
"# @markdown (optional) Mix the token with something else\n",
|
@@ -387,11 +387,11 @@
|
|
387 |
"start_search_at_index = 0 # @param {type:\"slider\", min:0, max: 49407, step:100}\n",
|
388 |
"# @markdown The lower the start_index, the more similiar the sampled tokens will be to the target token assigned in the '⚡ Get similiar tokens' cell\". If the cell was not run, then it will use tokens ordered by similarity to the \"girl\\</w>\" token\n",
|
389 |
"start_search_at_ID = start_search_at_index\n",
|
390 |
-
"search_range =
|
391 |
"\n",
|
392 |
-
"samples_per_iter =
|
393 |
"\n",
|
394 |
-
"iterations =
|
395 |
"restrictions = 'None' # @param [\"None\", \"Suffix only\", \"Prefix only\"]\n",
|
396 |
"#markdown Limit char size of included token <----- Disabled\n",
|
397 |
"min_char_size = 0 #param {type:\"slider\", min:0, max: 20, step:1}\n",
|
@@ -406,7 +406,7 @@
|
|
406 |
"RANGE = min(search_range , max(1,NUM_TOKENS - start_search_at_ID))\n",
|
407 |
"#-----#\n",
|
408 |
"import math, random\n",
|
409 |
-
"NUM_PERMUTATIONS =
|
410 |
"ITERS = iterations\n",
|
411 |
"#-----#\n",
|
412 |
"#LOOP START\n",
|
@@ -443,7 +443,7 @@
|
|
443 |
" _start = START + iter*RANGE\n",
|
444 |
"\n",
|
445 |
" for index in range(samples_per_iter):\n",
|
446 |
-
" id_C = min(_start + index, NUM_TOKENS) + random.randint(0,RANGE)\n",
|
447 |
" name_C = db_vocab[f'{id_C}']\n",
|
448 |
" is_Prefix = 0\n",
|
449 |
" #Skip if non-AZ characters are found\n",
|
@@ -522,6 +522,7 @@
|
|
522 |
" print_Similarity = True # @param {type:\"boolean\"}\n",
|
523 |
" print_Name = True # @param {type:\"boolean\"}\n",
|
524 |
" print_Divider = True # @param {type:\"boolean\"}\n",
|
|
|
525 |
" #----#\n",
|
526 |
" if (print_Divider):\n",
|
527 |
" print('//---//')\n",
|
@@ -571,10 +572,12 @@
|
|
571 |
" trails = (trails + \"&&&&\").replace(\"|&&&&\", \"}\").replace(\"</w>\", \" \").replace(\"{&&&&\", \"\")\n",
|
572 |
" aheads = (aheads + \"&&&&\").replace(\"|&&&&\", \"}\").replace(\"</w>\", \" \").replace(\"{&&&&\", \"\")\n",
|
573 |
" #-----#\n",
|
574 |
-
"
|
575 |
-
"
|
576 |
-
"
|
577 |
-
"
|
|
|
|
|
578 |
"\n",
|
579 |
" tmp = must_start_with + ' ' + max_name_ahead + name_B + ' ' + must_end_with\n",
|
580 |
" tmp = tmp.strip().replace('</w>', ' ')\n",
|
@@ -591,8 +594,10 @@
|
|
591 |
" name_inner = ''\n",
|
592 |
" if index == 0 : name_inner = name_B\n",
|
593 |
" if index == 1: name_inner = max_name_ahead\n",
|
594 |
-
" if index == 2: name_inner =
|
595 |
-
" if index == 3: name_inner =
|
|
|
|
|
596 |
" if name_inner == '': name_inner = max_name_ahead + name_B + max_name_trail\n",
|
597 |
"\n",
|
598 |
" name = must_start_with + name_inner + must_end_with\n",
|
@@ -616,9 +621,23 @@
|
|
616 |
" results_sim[iter*NUM_PERMUTATIONS + index] = sim\n",
|
617 |
" results_name_B[iter*NUM_PERMUTATIONS + index] = name_inner.replace('</w>',' ')\n",
|
618 |
" #------#\n",
|
619 |
-
" name_B = results_name_B[iter*NUM_PERMUTATIONS + random.randint(0,3)]\n",
|
620 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
621 |
"\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
622 |
"print('')\n",
|
623 |
"sorted, indices = torch.sort(results_sim,dim=0 , descending=True)\n",
|
624 |
"\n",
|
@@ -637,6 +656,34 @@
|
|
637 |
"execution_count": null,
|
638 |
"outputs": []
|
639 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
640 |
{
|
641 |
"cell_type": "code",
|
642 |
"source": [
|
|
|
124 |
"base_uri": "https://localhost:8080/"
|
125 |
}
|
126 |
},
|
127 |
+
"execution_count": null,
|
128 |
"outputs": [
|
129 |
{
|
130 |
"output_type": "stream",
|
|
|
151 |
"tokenizer = AutoTokenizer.from_pretrained(\"openai/clip-vit-large-patch14\", clean_up_tokenization_spaces = False)\n",
|
152 |
"\n",
|
153 |
"# @markdown Write name of token to match against\n",
|
154 |
+
"token_name = \" banana\" # @param {type:'string',\"placeholder\":\"leave empty for random value token\"}\n",
|
155 |
"\n",
|
156 |
"prompt = token_name\n",
|
157 |
"# @markdown (optional) Mix the token with something else\n",
|
|
|
387 |
"start_search_at_index = 0 # @param {type:\"slider\", min:0, max: 49407, step:100}\n",
|
388 |
"# @markdown The lower the start_index, the more similiar the sampled tokens will be to the target token assigned in the '⚡ Get similiar tokens' cell\". If the cell was not run, then it will use tokens ordered by similarity to the \"girl\\</w>\" token\n",
|
389 |
"start_search_at_ID = start_search_at_index\n",
|
390 |
+
"search_range = 1220 # @param {type:\"slider\", min:10, max: 2000, step:10}\n",
|
391 |
"\n",
|
392 |
+
"samples_per_iter = 20 # @param {type:\"slider\", min:10, max: 100, step:10}\n",
|
393 |
"\n",
|
394 |
+
"iterations = 20 # @param {type:\"slider\", min:1, max: 20, step:0}\n",
|
395 |
"restrictions = 'None' # @param [\"None\", \"Suffix only\", \"Prefix only\"]\n",
|
396 |
"#markdown Limit char size of included token <----- Disabled\n",
|
397 |
"min_char_size = 0 #param {type:\"slider\", min:0, max: 20, step:1}\n",
|
|
|
406 |
"RANGE = min(search_range , max(1,NUM_TOKENS - start_search_at_ID))\n",
|
407 |
"#-----#\n",
|
408 |
"import math, random\n",
|
409 |
+
"NUM_PERMUTATIONS = 6\n",
|
410 |
"ITERS = iterations\n",
|
411 |
"#-----#\n",
|
412 |
"#LOOP START\n",
|
|
|
443 |
" _start = START + iter*RANGE\n",
|
444 |
"\n",
|
445 |
" for index in range(samples_per_iter):\n",
|
446 |
+
" id_C = min(_start + index*RANGE, NUM_TOKENS) + random.randint(0,RANGE)\n",
|
447 |
" name_C = db_vocab[f'{id_C}']\n",
|
448 |
" is_Prefix = 0\n",
|
449 |
" #Skip if non-AZ characters are found\n",
|
|
|
522 |
" print_Similarity = True # @param {type:\"boolean\"}\n",
|
523 |
" print_Name = True # @param {type:\"boolean\"}\n",
|
524 |
" print_Divider = True # @param {type:\"boolean\"}\n",
|
525 |
+
" print_Suggestions = False # @param {type:\"boolean\"}\n",
|
526 |
" #----#\n",
|
527 |
" if (print_Divider):\n",
|
528 |
" print('//---//')\n",
|
|
|
572 |
" trails = (trails + \"&&&&\").replace(\"|&&&&\", \"}\").replace(\"</w>\", \" \").replace(\"{&&&&\", \"\")\n",
|
573 |
" aheads = (aheads + \"&&&&\").replace(\"|&&&&\", \"}\").replace(\"</w>\", \" \").replace(\"{&&&&\", \"\")\n",
|
574 |
" #-----#\n",
|
575 |
+
"\n",
|
576 |
+
" if(print_Suggestions):\n",
|
577 |
+
" print(f\"place these items ahead of prompt : {aheads}\")\n",
|
578 |
+
" print(\"\")\n",
|
579 |
+
" print(f\"place these items behind the prompt : {trails}\")\n",
|
580 |
+
" print(\"\")\n",
|
581 |
"\n",
|
582 |
" tmp = must_start_with + ' ' + max_name_ahead + name_B + ' ' + must_end_with\n",
|
583 |
" tmp = tmp.strip().replace('</w>', ' ')\n",
|
|
|
594 |
" name_inner = ''\n",
|
595 |
" if index == 0 : name_inner = name_B\n",
|
596 |
" if index == 1: name_inner = max_name_ahead\n",
|
597 |
+
" if index == 2: name_inner = max_name_trail\n",
|
598 |
+
" if index == 3: name_inner = name_B + max_name_trail\n",
|
599 |
+
" if index == 4: name_inner = max_name_ahead + name_B\n",
|
600 |
+
" if index == 5: name_inner = max_name_ahead + name_B + max_name_trail\n",
|
601 |
" if name_inner == '': name_inner = max_name_ahead + name_B + max_name_trail\n",
|
602 |
"\n",
|
603 |
" name = must_start_with + name_inner + must_end_with\n",
|
|
|
621 |
" results_sim[iter*NUM_PERMUTATIONS + index] = sim\n",
|
622 |
" results_name_B[iter*NUM_PERMUTATIONS + index] = name_inner.replace('</w>',' ')\n",
|
623 |
" #------#\n",
|
624 |
+
" #name_B = results_name_B[iter*NUM_PERMUTATIONS + random.randint(0,3)]\n",
|
625 |
+
" tmp = iter*NUM_PERMUTATIONS\n",
|
626 |
+
" _name_B=''\n",
|
627 |
+
" if results_sim[tmp+1]>results_sim[tmp+2]: _name_B = results_name_B[tmp + 3]\n",
|
628 |
+
" if results_sim[tmp+2]>results_sim[tmp+1]: _name_B = results_name_B[tmp + 4]\n",
|
629 |
+
"\n",
|
630 |
+
" if _name_B != name_B:\n",
|
631 |
+
" name_B=_name_B\n",
|
632 |
+
" else:\n",
|
633 |
+
" name_B = results_name_B[tmp + 5]\n",
|
634 |
"\n",
|
635 |
+
"#--------#\n",
|
636 |
+
"print('')\n",
|
637 |
+
"if(use == '🖼️image_encoding from image'):\n",
|
638 |
+
" from google.colab.patches import cv2_imshow\n",
|
639 |
+
" cv2_imshow(image_A)\n",
|
640 |
+
"#-----#\n",
|
641 |
"print('')\n",
|
642 |
"sorted, indices = torch.sort(results_sim,dim=0 , descending=True)\n",
|
643 |
"\n",
|
|
|
656 |
"execution_count": null,
|
657 |
"outputs": []
|
658 |
},
|
659 |
+
{
|
660 |
+
"cell_type": "code",
|
661 |
+
"source": [],
|
662 |
+
"metadata": {
|
663 |
+
"id": "5XN2pM5NAfS5",
|
664 |
+
"outputId": "df4eefe6-12e7-416e-dc2d-b6df22a14d69",
|
665 |
+
"colab": {
|
666 |
+
"base_uri": "https://localhost:8080/",
|
667 |
+
"height": 321
|
668 |
+
}
|
669 |
+
},
|
670 |
+
"execution_count": 25,
|
671 |
+
"outputs": [
|
672 |
+
{
|
673 |
+
"output_type": "error",
|
674 |
+
"ename": "AttributeError",
|
675 |
+
"evalue": "clip",
|
676 |
+
"traceback": [
|
677 |
+
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
678 |
+
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
|
679 |
+
"\u001b[0;32m<ipython-input-25-2eb0ffbc049b>\u001b[0m in \u001b[0;36m<cell line: 1>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mif\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0muse\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'🖼️image_encoding from image'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mgoogle\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolab\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpatches\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mcv2_imshow\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mcv2_imshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimage_A\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
|
680 |
+
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/google/colab/patches/__init__.py\u001b[0m in \u001b[0;36mcv2_imshow\u001b[0;34m(a)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mN\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mM\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0man\u001b[0m \u001b[0mNxM\u001b[0m \u001b[0mBGRA\u001b[0m \u001b[0mcolor\u001b[0m \u001b[0mimage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \"\"\"\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m255\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'uint8'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;31m# cv2 stores colors as BGR; convert to RGB\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
681 |
+
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/PIL/Image.py\u001b[0m in \u001b[0;36m__getattr__\u001b[0;34m(self, name)\u001b[0m\n\u001b[1;32m 527\u001b[0m \u001b[0mdeprecate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Image categories\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m10\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"is_animated\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mplural\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_category\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 529\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mAttributeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 530\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mproperty\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
682 |
+
"\u001b[0;31mAttributeError\u001b[0m: clip"
|
683 |
+
]
|
684 |
+
}
|
685 |
+
]
|
686 |
+
},
|
687 |
{
|
688 |
"cell_type": "code",
|
689 |
"source": [
|