{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "-SnbEHSWHFW9" }, "source": [ "
\n", "\n", "`Terakhir diperbarui : 9 SEPTEMBER 2023 | 13.45 WIB INDONESIA`\n", "\n", "![Left to Right](https://drive.google.com/uc?export=view&id=1oV6czwnahiyCrzMKWGqNc_HprJ5TuoQv)\n", "\n", "PERHATIAN\n", "\n", "Dikarenakan peraturan google collab yang terbaru Google Colab ToS dan Official Statement, diharapkan jangan menjalankan script jika terdapat warning sebagai berikut\n", "\n", "![image.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAi0AAADFCAYAAACYYcK0AAAgAElEQVR4Xu2dB5gVRfa3D5IkSQYlKCjmnHMW0xpQTIggoAgGzCKraw5gDiBgVgQUFczZNa76NyFrziRFEVRyDl+/5VezPcW93fdOYObir5+HR2emb3XVW6eqfnXOqb5VlkeX6RIBERABERABERCBSk6gikRLJe8hVU8EREAEREAERMARkGiRIYiACIiACIiACBQEAYmWgugmVVIEREAEREAERECiRTYgAiIgAiIgAiJQEAQkWgqim1RJERABERABERABiRbZgAiIgAiIgAiIQEEQkGgpiG5SJUVABERABERABCRaZAMiIAIiIAIiIAIFQUCipSC6SZUUAREQAREQARGQaJENiIAIiIAIiIAIFAQBiZaC6CZVUgREQAREQAREQKJFNiACIiACIiACIlAQBCRaCqKbVEkREAEREAEREAGJFtmACIiACIiACIhAQRCQaCmIblIlRUAEREAEREAEJFpkAyIgAiIgAiIgAgVBQKKlILpJlRQBERABERABEZBokQ2IgAiIgAiIgAgUBAGJloLoJlVSBERABERABERglRUtCxYssHfeecfWWGMN23bbbW211VZTb4uACIiACIiACBQwgVVWtLzwwgt2+umn2zrrrGP33XeftW3btoC7SVUXAREQAREQAREoV9Hy2GOP2YUXXrgC5WrVqtkWW2xhxx13nB1yyCG2+uqrl3lPjB8/3k499VRba6217MYbb7TGjRuX+TNKU+D1119vQ4cOtd69e1vfvn1LU5Q+KwIiIAIiIAJ/CwIVIlriZNu3b2/XXnttpRMV5d37Ei3lTVjli4AIiIAIrGoEVopo2Wqrrezee++1hg0bOn5Lly61V1991S699FKbNm2anXfeeXbaaadZlSpVVjW+Wdsj0fK36Wo1VAREQAREoIwIVIhooe7Lly+3+++/366++mqXKHv33XdbgwYNXLMWLVpkL730kvvd559/bk2bNrX99tvPCZuWLVu6e+bPn2///Oc/7emnn3ZlkHg7cOBA23fffe2aa66xcePGWadOnSwumN5///2i3+HdGTFihD377LPus/vvv78L0/jyPd/p06e7MM7o0aOL7jv55JPtsssuc4KLNrRr165YvR988EH79NNPrWrVqrbLLrvYWWedZZtvvrkTZb4OYf/Fw0S+/Unl8PmStKeM7EbFiIAIiIAIiMBKJ1BhooWWvvvuu3bCCScUS5adN2+eXXnllfboo4+uAINkWgTE+uuvX0y0rLfeejZx4kRbsmSJHXbYYda/f38nGrKJlvr161vdunXt559/LvaM3Xff3W677bYi8fTbb785wYE4iF+1atWyxYsXW/PmzYtECyKKeo8aNcrI2aFOtGXy5MlWs2ZNGzJkiO21115OTF1xxRU2ZcoUJ3oQZC1atLADDzzQevXq5dqVSzlx0ZJre1a6demBIiACIiACIlCGBCpUtOCluOqqq4p5Q3zy7o477mg333yzS6SdM2eOCyU9+eSTdtJJJ1m/fv2cN8Z7WhAFp5xyikvqrVGjhrVq1co++uijrKIFfpws4h+fffPNN61Pnz4O60MPPeTqgydo8ODBdtNNN7mTR7fffrttsskmTlQgbPAC4ZXxnhaed/zxxzshc+edd7p7ly1bZg888IDzBB1wwAGurNq1a7vnZAsP5VNO3GuT1p4ytBkVJQIiIAIiIAIVQqBCRAs5LWPHjnXig1M+XogQpjn33HPtlVdecTkwe++9dxEUv5hvttlm7m+cOPKipWfPnq6seE5MPHTi82n87wjVcAzanyj6888/XR3wgvjnzpo1y8444wz7z3/+4zwfeIT89d1331m3bt3cu1/i4aFMPZipHkmiJZsVlLY9FWJdeqgIiIAIiIAIlCGBlSJakuqLRwXPRbNmzVwoBfHw/fffZ/2I927wXy9aMh0bTlrkw8TguGi57rrr7Oijj3ZiqkePHkZOi/e++EpRv+7du7sf46KFcBC5L0899ZQLTxGu8lf4zKRE3FzLySaIMrWnDG1GRYmACIiACIhAhRCoENHi39Ny+OGHW8eOHYtCJl4MTJ061eWEZHp/C/kb5IQgcspTtGQTJvRSpr/NmDHDzj//fHvttddsww03dF4iQlXkrjz++OPFQmBJnpZ8ypFoqZAxo4eKgAiIgAhUEIGVIlpCL0O2tnoxQILs8OHD3cmbbFf89FB5elrIpyEvZdNNNy2qSibR4t/Ay0moQYMGudwWrnzDQ/mUI9FSQaNGjxUBERABEagQApVKtMTzSDK9u4VwC8eIyV0pb9ESr4sPGfkeypTT4sM9/vQSJ4y4/AmpXMND+ZQj0VIhY0YPFQEREAERqCAClUq0wAAPCyeFCAMNGDDAeGMuIoUcE35/7LHHulNCJO2WZ3iI00OcAkJExE8PzZw502699VYbNmxYsdND/tQToSFOHfGZX375xS6//HKXWByKFk5G4ZHh/TA33HCD1atXz5lAPuVItFTQqNFjRUAEREAEKoRApRMtJKEiTsaMGeOAIF44pUNyKbkwHB8+6qijbOHCheUqWnh2Pu9pmTRpkjt2/e233xbrSP9OlzZt2riTSa1bt3Z/55g1p558sq4PceVTjkRLhYwZPVQEREAERKCCCFQ60QKHTG+EJbGVk0XbbLPNSgkP+f7I9EbcDh06OGHFFT89RC4OnpmXX37ZJRGTZHzwwQe749gTJkxwp5A4LcXFsW/eeMtbfOfOneteYse7VrhyLUeipYJGjR4rAiIgAiJQIQTKVbRUSIvK+KGIC/Jo4pfPU+EFcnhPfNJtGT9axYmACIiACIiACMQISLQkmAPhIb5jqGvXrs5DQpiK49jk0rzxxhvuhXOXXHKJVa9eXUYlAiIgAiIgAiJQzgQkWhIAk3dy9tlnG8m35NY0atTIJQRzbbDBBi60w/cg6RIBERABERABESh/AhItKYxJjOUU0auvvuq+4JBEWnJaunTpYk2aNCn/HtITREAEREAEREAEHAGJFhmCCIiACIiACIhAQRCQaCmIblIlRUAEREAEREAEJFpkAyIgAiIgAiIgAgVBQKKlILpJlRQBERABERABEZBokQ2IgAiIgAiIgAgUBAGJloLoJlVSBERABERABERAokU2IAIiIAIiIAIiUBAEJFoKoptUSREQAREQAREQAYkW2YAIiIAIiIAIiEBBEJBoKYhuUiVFQAREQAREQAQkWmQDIiACIiACIiACBUFAoqUgukmVFAEREAEREAERkGiRDYiACIiACIiACBQEAYmWgugmVVIEREAEREAERECiRTYgAiIgAiIgAiJQEAQkWgqim1RJERABERABERABiRbZgAiIgAiIgAiIQEEQkGgpiG5SJUVABERABERABCRaZAMiIAIiIAIiIAIFQUCipSC6SZUUAREQAREQAREoONHy2GOP2fjx461v374F3XtJ7fjtt9/sjz/+sA033NCqVKlS0O3MVvnvv//err32WrvpppusYcOGZdbG8rKPpD4py2fOnz/f/vnPf1qnTp1sxx13LDMuFVXQ0qVL7csvv7R11lnH1lhjjRWqkU97//zzTzvvvPPsoosusnbt2uXVpPA5EydOdJ+nXgsWLLBvvvnGjbfVV189a7lpbQk/eP3111vbtm3t6KOPzquuZXnz+++/bw8//LD179/fatWqVZZFr1BWnGm+D8qnb8tr7gjrnKtd8Ll87uX+spwz8mVd6PevFNHy9ddf26mnnuoWqG222aZUzFaVzk5qx9NPP21PPfWU3XrrrVavXr1S8aqsHy6viae87COpT8rymfks4pWxb+nXCy64wG644QYnLGbMmGGnn366de3a1Q444IBKI1puu+02+/333+2SSy6xn376yc466yy75pprbPPNN8+KNa0tfyfREvYzbY8zrV69el7mWRlFC5vjXOyChuZz78oULX4+2XXXXStUPOdlDCk3rxTRMnjwYBs1apTtv//+1q9fP6tatWqJ21CWC0SJK1EGH1xV2lFSFIUmWpLaWZZ9uaqJljT7yKe9+Sxs4XPzeU5anXP9+6rsackkWnLlkum+fPq2vOaO0tQ/38+W5ZyR9GyJlnx7Jrqf3QlC5bDDDrNHH33UrrvuOmvevHlRSQzsRo0a2dSpU2348OHWpk0bu+qqq2y77bZz9/z444926aWX2gcffGD77bef+zuXDw99/vnnblf33nvvWevWre3cc8+1gw8+eIWwCoZ+9dVX21577WV33323C7+w++vcubPzAL3wwgu23nrrFT070yDC0N555x3nav35559decccc4wNHDjQJkyY4MpDmdeuXduWL19uzz//vAuBzJs3z0444QT79ttvXRtwF8eNFrczZUyaNMmuvPJKVxf/HNyOuMSPOOIIJ/zgcNBBBzkmjRs3LtYjvs777LOPjRgxwn744Qd3L5/n52HDhjnWuNc9I+r5yiuv2C233FJ0P3+njzyzkrYxrex4eOjdd991rG688UbbaKON7KOPPnIs6N/NNtvM/vWvf9n222/v+hWe9OEDDzzg2t+nTx/Ht0aNGqlc46FFeJ100kl24YUXulAM5d5+++2OMxftpuy6deu6cn2fhG72pL6sU6eOffzxx85GP/zwQ9cGxsPWW2/tnhHaCfb41Vdf2SmnnOLqlMQw3vmEAQYMGGBDhw51fYdNYZ9NmjSx0047zb744ous44T6E8Jh/GCH2G/cRvBIeLvcYYcdbLfddrNXX33V9UE8tEc5sPQXYx17jzNOay/2Tr/ef//9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aJFdiIAIiIAIiIAIFAQBiZaC6CZVUgREQAREQAREQKJFNiACIiACIiACIlAQBCRaCqKbVEkREAEREAEREAGJFtmACIiACIiACIhAQRCQaCmIblIlRUAEREAEREAEJFpkAyIgAiIgAiIgAgVBQKKlILpJlRQBERABERABEVhlRQvf3hn/RtiK7Gq+Mfibb75x31bM98LEr0zfpFyRddWz/yLAt8LyDd+dOnWq9F9wqdd852e1lWluSKt50rcQh5+t6HaF3xKd1jb9PZlARfdnZe0fiZYsPRP/WvJ27dqVqv/4XpizzjrLffHc5ptvLtFSKprZP8x3IQ0YMMBmzZplV111ldWoUaPET6pI0eK/ir5v37451V+iJSdMRTetzMWAb8h+66237Oabb7bPP//c+LLU7t27W7du3VbYwGRqhURLfn27Kt2dj536+WrXXXdd5b/IVKJlJYiWpIEkT0vZTTOTJ0923268ePFiu/XWW22jjTYqceESLSVGV+k/mM9iUNrGjBkzxoYMGeI2LFtuuaVNnz7dvMjs06ePVa1aNfEREi2l7YHC/Xw+dirRUgb97IHvs88+NmLECPvhhx/soIMOciEbfh42bJg1atTILrroIjv44IOtSpUqtnz5cnvllVfslltuKbqfvzdv3txY3K+++mrba6+97O6777Y//vjDunbtap07d7abbrrJXnjhBVtvvfXcDnu77bazbM+/9NJLi74Bl53PDTfcYO+99561bt3azj33XFeXxx9/3C688MIiCtddd51Tr+G33fbu3dvVgYmHXT5tGjp0qNvpH3jggdavX7+iul9wwQXuWaHXJhQt7777rl177bV24403ukX3999/dzxGjx7teFHmP/7xD5s5c6ZjmQ9fwlQPPPCA3X///UV15Jun+UbgkvQXk2+tWrVc38Cf+tJHW2yxRVF59J9vM+7jd955x/r37+8+l40/tsC9X375peuXgQMHWu3atYvZSiYTfeaZZ+y///2v1a1b1+rXr+92tP7y9nPMMce48iZMmOD6Dg8YZWN7zz//vGM/b948Z1dfffWVnXLKKS48lMQurEvoJg8XHrjRl1OnTrXhw4dbmzZtnN1ivyeddJKNGzfOFbnVVlvZvffea6+++qrhrfOel0zltW3b1tkodcfGW7RoYWeccUYxb1O+Y4g6UB7jDbvhYqH13/Cc1keM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ioAIiIAIiIAISLTIBkRABERABERABAqCgERLQXSTKikCIiACIiACIiDRIhsQAREQAREQAREoCAISLQXRTaqkCIiACIiACIiARItsQAREQAREQAREoCAISLQURDepkiIgAiIgAiIgAhItsgEREAEREAEREIGCICDRUhDdpEqKgAiIgAiIgAhItMgGREAEREAEREAECoKAREtBdJMqKQIiIAIiIAIiINEiGxABERABERABESgIAhItBdFNqqQIiIAIiIAIiIBEi2xABERABERABESgIAhItBREN6mSIiACIiACIiACEi2yAREQAREQbl2EmwAAEFpJREFUAREQgYIgINFSEN2kSoqACIiACIiACEi0yAZEQAREQAREQAQKgoBES0F0kyopAiIgAiIgAiIg0SIbEAEREAEREAERKAgCEi0F0U2qpAiIgAiIgAiIgESLbEAEREAEREAERKAgCEi0FEQ3qZIiIAIiIAIiIAISLbIBERABERABERCBgiAg0VIQ3aRKioAIiIAIiIAISLTIBkRABERABERABAqCgERLQXSTKikCIiACIiACIiDRIhsQAREQAREQAREoCAISLQXRTaqkCIiACIiACIiARItsQAREQAREQAREoCAISLQURDepkiIgAiIgAiIgAhItsgEREAEREAEREIGCICDRUhDdpEqKgAiIgAiIgAhItMgGREAEREAEREAECoKAREtBdJMqKQIiIAIiIAIiINEiGxABERCBEhK4/vrr7f/+7//s3nvvtYYNG5awlP997MUXX7R33nnH+vbta/Xq1StRee+//7516tTJHn74Ydtxxx1LVMbf9UP9Rv5s734710afu67Vqbma9bp7kkNxZ8+1rXb0c0VeX/60wI65dbydc3AzO2mfxmValXkLl5VrW2fOW2qw3Wezenb0TqUbJxItZdr1KkwERKC0BObPn2///Oc/7emnn85Y1FZbbZWTSChrQZGpMmX9jLvuustefvllGzx4sDVr1iwVpWfFjf3797datWpZoYsWvzj/MWdJUfub169uPfdtbCft3cRqVq+SyoUb4gKk6RrV8v6MREtOyHK66Zc/F1un28fbwVvXt76HNc/pM9lukmgpFT59WAREoKwJLF261L788kubNWuWLVq0yO655x779ddf7YILLnDeh5o1a9oWW2xhNWrUSHx0WQuKlSFa8mW5KouWg7Zaw/bfop4tXWb21Ecz7Nmxs+z6zi2t06657dQlWnK3pvL2tORek/Q7JVrSGekOERCBCiLgF+VJkyat4F35888/7Y477rDRo0e72vXq1cu6detmfOakk06ycePGFdXah0oQQ7fffru99tprLpzDZ0444QQngL7//nvr3r27dejQwT755BP74IMPbL/99rOLL77YWrZsmZFAKIyo03333WfDhw+3BQsW2IEHHmj9+vWz5s2bu3rhQVq4cKFtsskm7r7atWvbRRddZAcffLBVqVLFHnvsMRfW8eGmsHxfxzPPPNO23nprV9+ff/7Z1Y063n///fb7778XhYd22GEHx+eyyy6zK664wjp27OieP3LkSPeMadOm2c4772z/+te/bP3113fl+Gcecsgh7p558+ZZnz597MQTT7SqVauWuyVkCoNMnbnEOt78o+22YR0bcPxfffHJhHl29Zhf7YPv5/0VymnfxE5r39RmzV/q7v3+14VFdR15Zhvba5N6WT/jvTdJ4SFCHF0HT3RlDjttHVurYfXE8nw7jtm5gX0zZaG99dUc26TV6nZbt1a2UYvVM3KcPnuJXfvEr5FIm+n+fnIUBjo7CgfVqrGahVxe+Wy29Y7CV513a2SXdFzTqq1WxV7+dJZdMmqK/fTHYmvbrIZd2nGtSPitEdmW2fLl5v5+5ehfbPxvi2zztWvZNce2sO3Wq22haAnb+ufcpSuEpkJRSN2vifpjzAczrFrVKnb4dvXtoiPWtCb1qtm0WX/13y4b/K//SmpIEi0lJafPiYAIlDuBbKIFD8yVV15pX3zxhRMeLKy33HKLde7c2Xr27GmzZ8924uSjjz6y2267zVq1amV//PGHnXLKKda6dWs7++yz7cMPP3QL9DXXXONEgxcE1apVM0TB8miWp8xtt922KPQSNjguKtZYYw0bMGCAE0SIBAQJQmHLLbe0Sy+91PAgIVqef/55Vw/KRdxMnjzZiQPqlY9oOfLII53ogAMXz2jatKlrs89p4Zmnn366ExwID0QHz7zppptc3TbaaCO7+uqrnWCCU4MGDRyToUOH2nHHHWft27e3V155xZ555hl76KGHjNBceV/h4rwsWmyfGzvTzn7wJ7u2Uws7dueG9nO0KB9723hr2ai6XRYtzG9/Pceuf3qq+zs5EzPmLokW51/twx/m2n2914kW8Jpu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)\n", "\n", "saya tidak bertanggung jawab apabila anda tetap menjalankan dan akun anda ditangguhkan sehingga tidak bisa menggunakan google colab dalam jangka waktu yang ditentukan google.\n", "\n", "\n", "![Left to Right](https://drive.google.com/uc?export=view&id=1oV6czwnahiyCrzMKWGqNc_HprJ5TuoQv)" ] }, { "cell_type": "markdown", "metadata": { "id": "upiFioaJfziP" }, "source": [ "# **Jangan lupa dibaca sampai bawah**\n", "untuk menjalankan script ini tidak diperlukan spek tinggi karena menggunakan layanan berbasis cloud milik google. untuk kecepatan download file tergantung koneksi internet google dan juga banyaknya file yang didownload\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": { "id": "VNi70r9E4nPM" }, "source": [ "> **INFORMASI**:\n", "\n", "1. Karena adanya [Kebijakan] dan [Pernyataan Resmi][pernyataanresmi] Google Colab yang baru, sebagai pengguna google colab gratis akan dibatasi untuk penggunaan GPU dan CUDA***(komputasinya dibatasi)***\n", "2. Jika akun sudah limit pemakaian google colab akun tersebut akan bisa dipakai lagi dalam waktu 24 jam kedepan.\n", "(1 akun google memiliki batas 12 jam pemakiaan)\n", "3. Dengan mengganti akun google yang dipakai akan mereset limit pemakaian, tetapi ada batasan jumlah pergantian penggunaan secara wajar (maksimal 3 akun, usahakan jangan lebih)\n", "4. Google Colab Alternatife V2.1 mengambil Referensi Google Colab milik [Adiim EF] dan Milik [NoCrypt]\n", "5. Google Colab Alternatife V2.2 mengambil Referensi Google Colab milik [Linaqruf][Linaqruf]\n", "6. Fitur Open Web CivitAI mengambil Referensi Milik [Okto]\n", "\n", "\n", "[kebijakan]: https://research.google.com/colaboratory/faq.html#limitations-and-restrictions\n", "[adiim ef]: https://www.facebook.com/Adiim.EF\n", "[NoCrypt]:https://github.com/NoCrypt\n", "[pernyataanresmi]: https://twitter.com/thechrisperry/status/1649189902079381505\n", "[Linaqruf]:https://github.com/Linaqruf\n", "[Okto]:https://github.com/oookto\n", "---\n", "\n", "> **PERINGATAN**:\n", "\n", "Jangan pernah sering mengganti akun untuk mengatasi limit pengguaan google colab, karena itu sudah termasuk dalam pelanggaran dalam [kebijakan baru][baru] (usahakan tidak menggunakan lebih dari 3 akun)\n", "\n", "[baru]:https://research.google.com/colaboratory/intl/id/faq.html\n", "---\n", "\n", "\n", "\n", "\n", "> **NOTEBOOK COLLECTION**:\n", "\n", "| Koleksi Catatan | Deskripsi | Link |\n", "| --- | --- | --- |\n", "| [Fast_stable_diffusion_AUTOMATIC1111](https://colab.research.google.com/github/TheLastBen/fast-stable-diffusion/blob/main/fast_stable_diffusion_AUTOMATIC1111.ipynb)*Belum Stabil* | Stable Diffuson V1.5 (TheLastBen) | [![](https://img.shields.io/static/v1?message=Open%20in%20Colab&logo=googlecolab&labelColor=5c5c5c&color=0f80c1&label=%20&style=flat)](https://colab.research.google.com/github/TheLastBen/fast-stable-diffusion/blob/main/fast_stable_diffusion_AUTOMATIC1111.ipynb) | [![](https://img.shields.io/static/v1?message=Open%20in%20Colab&logo=googlecolab&labelColor=5c5c5c&color=0f80c1&label=%20&style=flat)](https://colab.research.google.com/github/Linaqruf/kohya-trainer/blob/main/kohya-LoRA-dreambooth.ipynb) |\n", "| [Satu Klik Stable Diffusion](https://colab.research.google.com/drive/1LFohDgoe1U3rYwbAUFSLp1K6yM1QNG6i?usp=sharing) *Fix Update*| Stable Diffuson V1.5 | [![](https://img.shields.io/static/v1?message=Open%20in%20Colab&logo=googlecolab&labelColor=5c5c5c&color=0f80c1&label=%20&style=flat)](https://colab.research.google.com/drive/1LFohDgoe1U3rYwbAUFSLp1K6yM1QNG6i?usp=sharing) |\n", "| [Membuat LoRA](https://colab.research.google.com/drive/1wo3hz402iQTb1ilz6zv6g1sotMlM-qoS?usp=sharing) **(TAHAP PERBAIKAN)** | Google Colab Membuat LoRA | [![](https://img.shields.io/static/v1?message=Open%20in%20Colab&logo=googlecolab&labelColor=5c5c5c&color=0f80c1&label=%20&style=flat)](https://colab.research.google.com/drive/1wo3hz402iQTb1ilz6zv6g1sotMlM-qoS?usp=sharing) |\n", "| [Kohya LoRA Dreambooth](https://colab.research.google.com/github/Linaqruf/kohya-trainer/blob/main/kohya-LoRA-dreambooth.ipynb) *Normal*| Membuat LoRA (Linaqruf) | [![](https://img.shields.io/static/v1?message=Open%20in%20Colab&logo=googlecolab&labelColor=5c5c5c&color=0f80c1&label=%20&style=flat)](https://colab.research.google.com/github/Linaqruf/kohya-trainer/blob/main/kohya-LoRA-dreambooth.ipynb) |\n", "| [Kohya LoRA Finetuner](https://colab.research.google.com/github/Linaqruf/kohya-trainer/blob/main/kohya-LoRA-finetuner.ipynb) *Normal*| Membuat LoRA 2 (Linaqruf) | [![](https://img.shields.io/static/v1?message=Open%20in%20Colab&logo=googlecolab&labelColor=5c5c5c&color=0f80c1&label=%20&style=flat)](https://colab.research.google.com/github/Linaqruf/kohya-trainer/blob/main/kohya-LoRA-finetuner.ipynb) |\n", "| [Fast SD Chilloutmix](https://colab.research.google.com/drive/1Ty7uB6kZa_cfraZG-G6Rzu3B_spunJFy?usp=sharing) *Normal*| Stable Diffuson V1 | [![](https://img.shields.io/static/v1?message=Open%20in%20Colab&logo=googlecolab&labelColor=5c5c5c&color=0f80c1&label=%20&style=flat)](https://colab.research.google.com/drive/1Ty7uB6kZa_cfraZG-G6Rzu3B_spunJFy?usp=sharing) |\n", "| [Fast SD Shadow Garden](https://colab.research.google.com/drive/1zfLPHL7MKvFtIBxUezF0O_SVb6yS6W6I?usp=sharing) *Normal*|Stable Diffusion V1|[![](https://img.shields.io/static/v1?message=Open%20in%20Colab&logo=googlecolab&labelColor=5c5c5c&color=0f80c1&label=%20&style=flat)](https://colab.research.google.com/drive/1zfLPHL7MKvFtIBxUezF0O_SVb6yS6W6I?usp=sharing)|\n", "| [A1 Alternatif V2.1](https://colab.research.google.com/drive/1zxSTb-olxIfJeBslZL6H967_vEnzlGZi?usp=sharing) *Fix Update*| Stable Diffuson V2.1 | [![](https://img.shields.io/static/v1?message=Open%20in%20Colab&logo=googlecolab&labelColor=5c5c5c&color=0f80c1&label=%20&style=flat)](https://colab.research.google.com/drive/1zxSTb-olxIfJeBslZL6H967_vEnzlGZi?usp=sharing) |\n", "| [A2 Alternatif Spesial ](https://colab.research.google.com/drive/1pTC4P17ZkFKAxNX2UVnwU0c6bn8DRWwv?usp=sharing) *Fix Update*| Stable Diffuson V2.2 | [![](https://img.shields.io/static/v1?message=Open%20in%20Colab&logo=googlecolab&labelColor=5c5c5c&color=0f80c1&label=%20&style=flat)](https://colab.research.google.com/drive/1pTC4P17ZkFKAxNX2UVnwU0c6bn8DRWwv?usp=sharing)|\n", "| [Alternatif Spesial `KHUSUS SAWERIA`](https://colab.research.google.com/drive/1cRZwgt0WvJCDML4OI860fYKF2HaDW6SY?usp=sharing) *Fix Update*| Stable Diffuson V2.2 | [![](https://img.shields.io/static/v1?message=Open%20in%20Colab&logo=googlecolab&labelColor=5c5c5c&color=0f80c1&label=%20&style=flat)](https://colab.research.google.com/drive/1cRZwgt0WvJCDML4OI860fYKF2HaDW6SY?usp=sharing) |\n", "| [Alternatif Spesial Satu Klik](https://colab.research.google.com/drive/1LjOYLyFgaeB2CAXVgmfkuK5mQ3XoAIRI#scrollTo=VNi70r9E4nPM) *Fix Update*| Stable Diffuson V2.2 | [![](https://img.shields.io/static/v1?message=Open%20in%20Colab&logo=googlecolab&labelColor=5c5c5c&color=0f80c1&label=%20&style=flat)](https://colab.research.google.com/drive/1LjOYLyFgaeB2CAXVgmfkuK5mQ3XoAIRI#scrollTo=VNi70r9E4nPM) |\n", "|[Cagliostro-Colab-UI](https://colab.research.google.com/github/Linaqruf/sd-notebook-collection/blob/main/cagliostro-colab-ui.ipynb#scrollTo=SaAJk33ppFw1) *Has stopped updating*|Linaqruf Stable Diffusion|[![](https://img.shields.io/static/v1?message=Open%20in%20Colab&logo=googlecolab&labelColor=5c5c5c&color=0f80c1&label=%20&style=flat)](https://colab.research.google.com/github/Linaqruf/sd-notebook-collection/blob/main/cagliostro-colab-ui.ipynb#scrollTo=SaAJk33ppFw1)|\n", "| [Huggingface Collection Galery](https://huggingface.co/spaces/huggingface-projects/diffusers-gallery) | Koleksi Galeri Huggingface | [![Hugging Face Spaces](https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Spaces-blue)](https://huggingface.co/spaces/huggingface-projects/diffusers-gallery)|\n", "| [VAE Collection](https://huggingface.co/vorstcavry/vaecollection1/tree/main)| Koleksi VAE | [![Hugging Face Spaces](https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Spaces-blue)](https://huggingface.co/vorstcavry/vaecollection/tree/main)|\n", "| [AI Voice Changer](https://huggingface.co/spaces/vorstcavry/vits-models) | AI Pengubah Suara | [![Hugging Face Spaces](https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Spaces-blue)](https://huggingface.co/spaces/vorstcavry/vits-models)|\n", "| [AI Remove Background](https://huggingface.co/spaces/vorstcavry/anime-remove-background) | AI Penghapus Background | [![Hugging Face Spaces](https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Spaces-blue)](https://huggingface.co/spaces/vorstcavry/anime-remove-background)|\n", "| [Stable Diffusion Extension](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Extensions) | Extension Stable Diffusion |[![Extension](https://badgen.net/badge/icon/GitHub?icon=github&label=Stable%20Diffusion)](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Extensions)|\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": { "id": "t5hAbVBXc8pw" }, "source": [ "
PERINGATAN
\n", "DILARANG KERAS MENYEBARKAN GAMBAR DENGAN KONTEN NSFW REALISIC KE MEDIA SOSIAL" ] }, { "cell_type": "markdown", "metadata": { "id": "SYCjovAnU99y" }, "source": [ "#Para Saweria bisa Mencoba Beta Tester untuk yang tampilannya simple\n", "\n", "Stable Diffusion Beta test ada di bagian paling bawah" ] }, { "cell_type": "markdown", "metadata": { "id": "aRJzSoxQKa7n" }, "source": [ "
\n", "\n", "#***ALTERNATIF SPESIAL KHUSUS SAWERIA***\n", "\n", "\n", "\n", "\n", "\n", "*Bagi yang mau support saya bisa menuju Saweria, KO-FI dan Trakteer dibawah ini*\n", "\n", "*For those who want to support me, you can go to Saweria, KO-FI and Trakteer below*\n", "\n", " \"Saweria\" \"KO-FI\" \"YOUTUBE\"\"Whatsapp\" \"YOUTUBE\"\n", "\"PAYPAL\"\n", "\"INSTAGRAM\"
" ] }, { "cell_type": "markdown", "metadata": { "id": "s2YV7KUwvj8O" }, "source": [ "
\n", "\n", "##******\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "JkeqC5ej3lu0", "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "outputId": "a140c01b-be5f-4380-896a-cbd019b56c86", "cellView": "form" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", "
Terima kasih Telah Menggunakan Notebook google colab StableDiffusion milik Remaja Pekalongan.
\n", " " ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "Tunggu Sebentar...\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "100%|██████████| 4/4 [00:29<00:00, 7.43s/it]\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\u001b[0m\u001b[38;2;255;204;0m [-] Main Source Linaqruf\u001b[0m\n", "\u001b[0m\u001b[38;2;255;204;0m [-] Current GPU: Tesla T4\u001b[0m\n", "\u001b[0m\u001b[38;2;255;204;0m [-] Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0]\u001b[0m\n", "\u001b[0m\u001b[38;2;255;204;0m [-] Torch 2.0.1+cu118\u001b[0m\n", "\u001b[0m\u001b[38;2;255;204;0m [-] Modifier Remaja Pekalongan\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mInstalling ubuntu dependencies\u001b[0m\n", "\u001b[0m\u001b[0;32mAnother repository exist. Uninstall 'AUTOMATIC1111/stable-diffusion-webui'...\u001b[0m\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "\u001b[0m\u001b[0;32mUnpacking AUTOMATIC1111: 100%|██████████| 3/3 [00:27<00:00, 9.03s/it]\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\u001b[0m\u001b[0;32mPreparing environment...\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mUsing 'AUTOMATIC1111/stable-diffusion-webui' repository...\u001b[0m\n", "\u001b[0m\u001b[0;32mBranch: master, Commit hash: baf6946e06249c5af9851c60171692c44ef633e0\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mHotfixes and Optimization:\u001b[0m\n", "\u001b[0m\u001b[0;32m [-] Stable Diffusion V2.x lowram Berhasil Terpasang!\u001b[0m\n", "\u001b[0m\u001b[0;32m [-] TheLastben's colab optimization Berhasil terpasang!\u001b[0m\n", "\u001b[0m\u001b[0;32m [-] Mobile Optimization Berhasil Terpasang!\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[38;2;255;204;0m [-] Downloading Stable Diffusion Models and VAEs...\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[38;2;255;204;0mDownload finished. Took 0 sec.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[38;2;255;204;0m [-] Downloading Custom model...\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mStarting download of 'Cavry_V2.preview.png' with aria2c...\u001b[0m\n", "\u001b[0m\u001b[0;32mDownload of 'Cavry_V2.preview.png' completed. Took 0 sec.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mStarting download of 'ChilloutMix.preview.png' with aria2c...\u001b[0m\n", "\u001b[0m\u001b[0;32mDownload of 'ChilloutMix.preview.png' completed. Took 0 sec.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mStarting download of 'CyberRealistic.preview.png' with aria2c...\u001b[0m\n", "\u001b[0m\u001b[0;32mDownload of 'CyberRealistic.preview.png' completed. Took 0 sec.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mStarting download of 'Dosmix.preview.png' with aria2c...\u001b[0m\n", "\u001b[0m\u001b[0;32mDownload of 'Dosmix.preview.png' completed. Took 0 sec.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mStarting download of 'Figure.preview.png' with aria2c...\u001b[0m\n", "\u001b[0m\u001b[0;32mDownload of 'Figure.preview.png' completed. Took 0 sec.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mStarting download of 'Majic_Mix_V5.preview.png' with aria2c...\u001b[0m\n", "\u001b[0m\u001b[0;32mDownload of 'Majic_Mix_V5.preview.png' completed. Took 0 sec.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mStarting download of 'MeinaPastel.preview.png' with aria2c...\u001b[0m\n", "\u001b[0m\u001b[0;32mDownload of 'MeinaPastel.preview.png' completed. Took 0 sec.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mStarting download of 'Perfect_World.preview.png' with aria2c...\u001b[0m\n", "\u001b[0m\u001b[0;32mDownload of 'Perfect_World.preview.png' completed. Took 0 sec.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mStarting download of 'RevAnmated.preview.png' with aria2c...\u001b[0m\n", "\u001b[0m\u001b[0;32mDownload of 'RevAnmated.preview.png' completed. Took 0 sec.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[38;2;255;204;0m [-] Downloading Custom lora...\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mStarting download of 'JapaneseDollLikeness_v15.safetensors' with aria2c...\u001b[0m\n", "\u001b[0m\u001b[0;32mDownload of 'JapaneseDollLikeness_v15.safetensors' completed. Took 1 sec.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mStarting download of 'koreanDollLikeness.safetensors' with aria2c...\u001b[0m\n", "\u001b[0m\u001b[0;32mDownload of 'koreanDollLikeness.safetensors' completed. Took 1 sec.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mStarting download of 'JapaneseDollLikeness_v15.png' with aria2c...\u001b[0m\n", "\u001b[0m\u001b[0;32mDownload of 'JapaneseDollLikeness_v15.png' completed. Took 0 sec.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mStarting download of 'koreanDollLikeness.png' with aria2c...\u001b[0m\n", "\u001b[0m\u001b[0;32mDownload of 'koreanDollLikeness.png' completed. Took 0 sec.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[38;2;255;204;0m [-] Downloading Custom extensions...\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mCloning 'images-browser' was successful.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mCloning 'sd-model-downloader' was successful.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mCloning 'DWPose' was successful.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mCloning 'openpose-editor' was successful.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mCloning 'sd-webui-openpose-editor' was successful.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32mCloning 'inpaint-nav' was successful.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[38;2;255;204;0mDownload finished. Took 18 sec.\u001b[0m\n", "\u001b[0m\u001b[38;2;255;204;0mAll is done! Go to the next step.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[38;2;255;204;0m [-] Download ControlNet Models...\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "\u001b[0m\u001b[0;32mDownloadi ControlNet Annotator/Preprocessor: 100%|██████████| 14/14 [00:49<00:00, 3.51s/it]\n", "\u001b[0m\u001b[0;32mDownloadi SDv1.x ControlNet Model: 100%|██████████| 14/14 [01:01<00:00, 4.36s/it]\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[38;2;255;204;0mDownload finished. Took 1 mins 50 sec.\u001b[0m\n", "\u001b[0m\u001b[38;2;255;204;0mAll is done! Go to the next step.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[38;2;255;204;0mMulai Menjalankan 'AUTOMATIC1111/stable-diffusion-webui'\u001b[0m\n", "\u001b[0m\u001b[0;33mTidak Menemukan Model Checkpoint di Derectory '/content/cagliostro-colab-ui/models/Stable-diffusion'.\u001b[0m\n", "\u001b[0m\u001b[0;32mStarting download of 'Cavry_V2.safetensors' with aria2c...\u001b[0m\n", "\u001b[0m\u001b[0;32mDownload of 'Cavry_V2.safetensors' completed. Took 10 sec.\u001b[0m\n", "\u001b[0m\u001b[0;33mTidak Menemukan VAE di Directory '/content/cagliostro-colab-ui/models/VAE'.\u001b[0m\n", "\u001b[0m\u001b[0;32mStarting download of 'vae-ft-mse-840000-ema-pruned.ckpt' with aria2c...\u001b[0m\n", "\u001b[0m\u001b[0;32mDownload of 'vae-ft-mse-840000-ema-pruned.ckpt' completed. Took 2 sec.\u001b[0m\n", "\u001b[0m\u001b[0;32m================================================================================\u001b[0m\n", "\u001b[0m\u001b[0m\u001b[0m\n", "Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0]\n", "Version: v1.3.2\n", "Commit hash: baf6946e06249c5af9851c60171692c44ef633e0\n", "Installing requirements\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Launching Web UI with arguments: --enable-insecure-extension-access --disable-safe-unpickle --xformers --multiple --share --no-hashing --disable-console-progressbars --opt-sub-quad-attention --opt-channelslast --theme=dark --no-download-sd-model --gradio-queue --listen --ckpt-dir=/content/cagliostro-colab-ui/models/Stable-diffusion --vae-dir=/content/cagliostro-colab-ui/models/VAE --hypernetwork-dir=/content/cagliostro-colab-ui/models/hypernetworks --embeddings-dir=/content/cagliostro-colab-ui/embeddings --lora-dir=/content/cagliostro-colab-ui/models/Lora --lyco-dir=/content/cagliostro-colab-ui/models/Lora --lowram --no-half --disable-nan-check\n", "Civitai Helper: Get Custom Model Folder\n", "Civitai Helper: Load setting from: /content/cagliostro-colab-ui/extensions/Stable-Diffusion-Webui-Civitai-Helper/setting.json\n", "Civitai Helper: No setting file, use default\n", "\u001b[1m[\u001b[0m-\u001b[1m]\u001b[0m ADetailer initialized. version: \u001b[1;36m23.6\u001b[0m.\u001b[1;36m2\u001b[0m, num models: \u001b[1;36m8\u001b[0m\n", "Model Downloader v1.0.8 Pre\n", "Checking Directories...\n", "all Directories already Created.\n", "[AddNet] Updating model hashes...\n", "100% 5/5 [00:02<00:00, 2.30it/s]\n", "[AddNet] Updating model hashes...\n", "100% 5/5 [00:00<00:00, 7177.11it/s]\n", "2023-09-09 12:22:41,246 - ControlNet - \u001b[0;32mINFO\u001b[0m - ControlNet v1.1.222\n", "ControlNet preprocessor location: /content/cagliostro-colab-ui/extensions/sd-webui-controlnet/annotator/downloads\n", "2023-09-09 12:22:41,551 - ControlNet - \u001b[0;32mINFO\u001b[0m - ControlNet v1.1.222\n", "all detected, remote.moe trying to connect...\n", "Warning: Permanently added 'localhost.run' (RSA) to the list of known hosts.\n", "all detected, cloudflared trying to connect...\n", "Download cloudflared...: 100% 34.8M/34.8M [00:00<00:00, 196MB/s]\n", "Checkpoint AnyLoRA_Anime_Mix.safetensors not found; loading fallback Cavry_V2.safetensors\n", "Loading weights [None] from /content/cagliostro-colab-ui/models/Stable-diffusion/Cavry_V2.safetensors\n", "Model Downloader detects Additional Networks, creating checkbox for AddNet.\n", "Creating model from config: /content/cagliostro-colab-ui/configs/v1-inference.yaml\n", "LatentDiffusion: Running in eps-prediction mode\n", "Public WebUI Colab URL: None \n", "Public WebUI Colab URL: https://dc6f47ff-d566-462c.gradio.live \n", "Public WebUI Colab URL: https://7d590c89baf686.lhr.life\n", "DiffusionWrapper has 859.52 M params.\n", "Applying optimization: xformers... done.\n", "Textual inversion embeddings loaded(14): bad-artist, bad-artist-anime, bad-hands-5, bad-image-v2-39000, bad_prompt, bad_prompt_version2, BadDream, EasyNegative, EasyNegativeV2, FastNegativeEmbedding, FastNegativeEmbeddingStrong, ng_deepnegative_v1_75t, ngng00, UnrealisticDream\n", "Textual inversion embeddings skipped(7): wdbadprompt, nartfixer, nrealfixer, re-badprompt, Mayng, rev2-badprompt, nfixer\n", "Model loaded in 8.0s (load weights from disk: 4.3s, create model: 3.3s, load textual inversion embeddings: 0.2s).\n", "Please do not use this link we are getting ERROR: Exception in ASGI application: https://2244751946182446e8.gradio.live\n", "Public WebUI Colab URL: https://mess-determination-sleeve-considerable.trycloudflare.com\n", "Startup time: 43.2s (import torch: 6.3s, import gradio: 2.1s, import ldm: 2.7s, other imports: 2.5s, opts onchange: 0.3s, setup codeformer: 0.2s, load scripts: 16.2s, create ui: 4.5s, gradio launch: 7.7s, scripts app_started_callback: 0.7s).\n" ] } ], "source": [ "from IPython.display import HTML, display\n", "\n", "def display_text_box(content, width=\"485px\", height=\"30px\"):\n", " html_content = f'''\n", "
{content}
\n", " '''\n", " display(HTML(html_content))\n", "\n", "text_content = \"Terima kasih Telah Menggunakan Notebook google colab StableDiffusion milik Remaja Pekalongan.\"\n", "\n", "display_text_box(text_content, width=\"485px\", height=\"30px\")\n", "\n", "from IPython.display import HTML, Image\n", "\n", "def display_image():\n", " image_url = \"https://i.postimg.cc/Pf3XXMsP/Cuplikan-layar-2023-07-30-165548.png\"\n", " image_html = f''\n", "\n", " display(HTML(image_html))\n", "\n", "display_image()\n", "from IPython.display import HTML\n", "\n", "def create_button_with_link(label, link):\n", " button_id = label.lower().replace(\" \", \"_\")\n", " return f'''\n", " \n", " \n", " \n", " \n", " '''\n", "\n", "subscribe_button = create_button_with_link(\"Subscribe\", \"https://www.youtube.com/@remajapekalongan\")\n", "support_button = create_button_with_link(\"Support\", \"https://ko-fi.com/vorstcavry\")\n", "saweria_button = create_button_with_link(\"Saweria\", \"https://http://saweria.co/vorstcavry\")\n", "discord_button = create_button_with_link(\"Discord\", \"https://discord.gg/fg9kvMqUmD\")\n", "\n", "buttons_html = f'
{subscribe_button} {support_button} {saweria_button} {discord_button}
'\n", "display(HTML(buttons_html))\n", "\n", "import os\n", "import time\n", "import json\n", "import base64\n", "import shutil\n", "import subprocess\n", "import threading\n", "import sys\n", "import random\n", "import string\n", "from IPython.display import display, HTML\n", "from google.colab.output import eval_js\n", "from IPython.utils import capture\n", "from tqdm import tqdm\n", "\n", "packages = [\n", " \"pip install gradio_client==0.2.7\",\n", " \"pip install base58\",\n", " \"pip install git+https://github.com/Linaqruf/colablib\",\n", " \"pip install --upgrade urllib3 chardet charset_normalizer requests\"\n", " ]\n", "for install in tqdm(packages, desc=print(\"Tunggu Sebentar...\")):\n", " os.system(install)\n", "\n", "from pydantic import BaseModel\n", "from typing import List, Optional\n", "from colablib.colored_print import cprint, print_line\n", "from colablib.utils import py_utils, config_utils, package_utils\n", "from colablib.utils import config_utils, py_utils, git_utils\n", "from colablib.utils.config_utils import pastebin_reader as read\n", "from colablib.utils.ubuntu_utils import ubuntu_deps\n", "from colablib.sd_models.downloader import aria2_download, download, get_modelname\n", "from colablib.utils.py_utils import get_filename\n", "from colablib.utils.ubuntu_utils import unionfuse\n", "from colablib.utils.git_utils import clone_repo\n", "from colablib.utils.config_utils import read_config\n", "from colablib.utils.git_utils import update_repo, batch_update, validate_repo, reset_repo, patch_repo\n", "%store -r\n", "\n", "#@markdown #***JALANKAN DENGAN SEKALI KLIK***\n", "masbro = {\n", "\n", " 0 : ( \"stable\" )\n", " , 1 : ( \"diffusion\" )\n", " , 2 : ( \"webui\" )\n", "\n", "}\n", "\n", "#Import modul\n", "from datetime import datetime\n", "from IPython .display import clear_output\n", "from IPython .display import Javascript\n", "from google .colab import files\n", "\n", "import os\n", "\n", "#Lokasi folder\n", "base = f\"/content/\"\n", "sssddd = f\"{masbro[0]}-{masbro[1]}\"\n", "aaa = f\"{masbro[2]}\"\n", "sssdddaaa = f\"{sssddd}-{aaa}\"\n", "\n", "#Fungsi cek value angka / karakter\n", "def isnumber(value) :\n", " try :\n", " float(value)\n", " return True\n", " except ValueError :\n", " return False\n", "\n", "#@markdown ### ***Sambungkan ke Google Drive / Connect to Google Drive***\n", "mount_drive = False # @param {type:'boolean'}\n", "output_drive_folder = \"\" #@param {type:'string'}\n", "#@markdown ### ***Repo Config/Pilih Jenis UI***\n", "repo_type = \"AUTOMATIC1111\" #@param [\"AUTOMATIC1111\", \"AUTOMATIC1111-Dev\", \"Anapnoe\"]\n", "\n", "# @markdown ### ***Optimization Config***\n", "#Tidak disarankan untuk Mencentang `update` di bawah ini jika Anda menggunakan google colab gratis.\n", "#update_webui = False # @param {type:'boolean'}\n", "#update_extensions = False # @param {type:'boolean'}\n", "commit_hash = \"\" # @param {type:'string'}\n", "dpmpp_2m_v2_patch = False # @param {type:'boolean'}\n", "# @markdown > Centang `colab_optimizations` untuk menjaga tetap optimal dan lancar digunakan\n", "\n", "colab_optimizations = True # @param {type:'boolean'}\n", "# @markdown > Tidak disarankan untuk `Mencentang` di bawah ini jika Anda memiliki langganan Colab Pro.\n", "mobile_optimizations = True # @param {type:'boolean'}\n", "#@markdown ### **PILIH MODEL/SELECT A MODEL**\n", "\n", "#@markdown **JANGAN CENTANG SEMUA!!!**\n", "ChilloutMix = False # @param {type: 'boolean'}\n", "#@markdown    \n", "Perfect_World = False # @param {type: 'boolean'}\n", "#@markdown    \n", "MeinaPastel = False # @param {type: 'boolean'}\n", "#@markdown    \n", "Figure = False # @param {type: 'boolean'}\n", "#@markdown    \n", "Dosmix = False # @param {type: 'boolean'}\n", "#@markdown    \n", "Majic_Mix_V5 = False # @param {type: 'boolean'}\n", "#@markdown    \n", "CyberRealistic = False # @param {type: 'boolean'}\n", "#@markdown    \n", "RevAnmated = False # @param {type: 'boolean'}\n", "#@markdown    \n", "\n", "#@markdown ### **PILIH VAE**\n", "\n", "#@markdown **JANGAN CENTANG SEMUA!!!**\n", "Anime = False # @param {type: 'boolean'}\n", "Blessed = False # @param {type: 'boolean'}\n", "Waifu_Diffusion = False # @param {type: 'boolean'}\n", "Stable_Diffusion = False # @param {type: 'boolean'}\n", "# VAR\n", "read_token = \"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\"\n", "user_header = f\"Authorization: Bearer {read_token}\"\n", "\n", "################################\n", "# URL DICT GOES HERE\n", "################################\n", "\n", "model_dict = {\n", " \"ChilloutMix\" : \"https://huggingface.co/AnonPerson/ChilloutMix/resolve/main/ChilloutMix-ni-fp16.safetensors\",\n", " \"Perfect_World\" : \"https://huggingface.co/ckpt/perfect_world/resolve/main/perfectWorld_v2Baked.safetensors\",\n", " \"MeinaPastel\" : \"https://huggingface.co/Meina/MeinaPastel/resolve/main/MeinaPastelV4%20-%20Without%20VAE.safetensors\",\n", " \"Figure\" : \"https://huggingface.co/vorstcavry/figurestyle1/resolve/main/figure.safetensors\",\n", " \"Dosmix\" : \"https://huggingface.co/vorstcavry/dosmix/resolve/main/ddosmix_V2.safetensors\",\n", " \"Majic_Mix_V5\" : \"https://huggingface.co/Linaqruf/stolen/resolve/main/fp16/majicmixRealistic_v5.safetensors\",\n", " \"CyberRealistic\" : \"https://huggingface.co/ckpt/CyberRealistic/resolve/main/cyberrealistic_v13.safetensors\",\n", " \"RevAnmated\" : \"https://huggingface.co/ckpt/rev-animated/resolve/main/revAnimated_v11.safetensors\",\n", "}\n", "\n", "vae_dict = {\n", " \"Anime\" : \"https://huggingface.co/NoCrypt/resources/resolve/main/VAE/any.vae.safetensors\",\n", " \"Blessed\" : \"https://huggingface.co/NoCrypt/resources/resolve/main/VAE/blessed2.vae.safetensors\",\n", " \"Waifu_Diffusion\" : \"https://huggingface.co/NoCrypt/resources/resolve/main/VAE/wd.vae.safetensors\",\n", " \"Stable_Diffusion\" : \"https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors\",\n", "}\n", "\n", "\n", "# @markdown\n", "# @markdown ###
`NEW` ***Download Bahan tambahan yang kalian inginkan :***\n", "# @markdown\n", "# @markdown - Jika kalian ingin mendownload lebih dari satu, kalian bisa memsiakannya dengan koma. **CONTOH**: `url1, url2, url3`.\n", "custom_model_url = \"\" # @param {'type': 'string'}\n", "custom_vae_url = \"\" # @param {'type': 'string'}\n", "custom_embedding_url = \"\" # @param {'type': 'string'}\n", "custom_LoRA_url = \"\" # @param {'type': 'string'}\n", "custom_hypernetwork_url = \"\" # @param {'type': 'string'}\n", "custom_extensions_url = \"\" # @param {'type': 'string'}\n", "custom_upscaler_url = \"\" # @param {'type': 'string'}\n", "custom_roop_url = \"\" # @param {'type': 'string'}\n", "# @markdown ###
`NEW` ***Download Bahan tambahan yang kalian inginkan dengan list file.txt***\n", "# @markdown - Berikan URL unduhan khusus untuk file `.txt` alih-alih menggunakan bidang URL. Mengedit file tersebut: `/content/download_list.txt`.\n", "# @markdown - Hastag yang dipakai: `#model`, `#vae`, `#embedding`, `#lora`, `#extensions`,dan `roop`\n", "# @markdown - Atau Kalian dapat memasukkan Link file `.txt` di `custom_download_list_url` Untuk Mendownload bahan tambahan secara instan.\n", "custom_download_list_url = \"https://huggingface.co/vorstcavry/test/resolve/main/download.txt\" # @param {'type': 'string'}\n", "#@markdown ### **INSTALL CONTROLNET**\n", "# @markdown > Recommended `ControlNet Annotator` & `SDv1.x ControlNet Model`\n", "# @markdown ##### **ControlNet Annotator**\n", "pre_download_annotator = True # @param {type: 'boolean'}\n", "# @markdown ##### **SDv1.x ControlNet Model**\n", "control_v11_sd15_model = True # @param {type: 'boolean'}\n", "# @markdown ##### **SDv2.x ControlNet Model**\n", "control_v11_sd21_model = False # @param {type: 'boolean'}\n", "# @markdown ##### **Text to Image ControlNet Model**\n", "t2i_adapter_model = False # @param {type: 'boolean'}\n", "\n", "# @markdown ##### **Custom ControlNet Model**\n", "custom_controlnet_url = \"\" #@param [\"\", \"https://huggingface.co/ioclab/ioc-controlnet/resolve/main/models/control_v1p_sd15_illumination.safetensors\", \"https://huggingface.co/ioclab/ioc-controlnet/resolve/main/models/control_v1p_sd15_brightness.safetensors\"] {allow-input: true}\n", "# @markdown ##### **ControlNet Config**\n", "control_net_max_models_num = 2 # @param {type:\"slider\", min:1, max:10, step:1}\n", "\n", "#@markdown ### **Alternative Tunnel**:\n", "# @markdown > Recommended Tunnels: `ngrok` > `gradio` > `cloudflared` > `remotemoe` > `localhostrun` > `googleusercontent`\n", "select_tunnel = \"multiple\" # @param ['gradio', 'multiple','cloudflared', 'localhostrun', 'remotemoe', \"googleusercontent\"]\n", "# @markdown > dapatkan `ngrok_token` [disini](https://dashboard.ngrok.com/get-started/your-authtoken)\n", "ngrok_token = \"\" # @param {type: 'string'}\n", "ngrok_region = \"in\" # @param [\"us\", \"eu\", \"au\", \"ap\", \"sa\", \"jp\", \"in\"]\n", "#@markdown ### **UI/UX Config**:\n", "select_theme = \"moonlight\" # @param ['moonlight', 'ogxRed', 'fun', 'ogxCyan', 'ogxCyanInvert', 'ogxBGreen', 'default_orange', 'tron2', 'd-230-52-94', 'minimal', 'ogxRedYellow', 'retrog', 'ogxRedPurple', 'ogxGreen', 'tron', 'default_cyan', 'default', 'backup', 'minimal_orange', 'Golde']\n", "# @markdown > Centang dibawah ini jika ingin menggunakan tema gelap\n", "use_dark_theme = True # @param {type: 'boolean'}\n", "# @markdown > Centang `use_preset` Untuk Menggunakan default prompt, resolusi, sampler, dan pengaturan lainnya\n", "use_presets = True # @param {type: 'boolean'}\n", "#@markdown ### **Ekstension**:\n", "# @markdown > `Roop` Ini adalah ekstension untuk StableDiffusion yang memungkinkan penggantian wajah dalam gambar. Ini didasarkan pada roop tetapi akan dikembangkan secara terpisah.\n", "Roop_ekstension = False # @param {type: 'boolean'}\n", "# @markdown > `Deforum` adalah fitur ekstension di stable diffusion yang dapat membuat video pendek yang menakjubkan dari hasil generate gambar dari sebuah cuplikan gambar, ataupun dari text untuk membuat karya AI berbentuk video.\n", "Deforum_ekstension = False # @param {type: 'boolean'}\n", "# @markdown > `OpenPose` adalah ekstension di stable diffusion yang memiliki fungsi untuk membuat pose dengan model 2D untuk membuat gambar sesuai dengan pose yang di inginkan,`[TIDAK DIREKOMENDASIKAN UNTUK MOBILE PHONE]`\n", "OpenPose_ekstension = True # @param {type: 'boolean'}\n", "# @markdown > `OpenPose3D` adalah ekstension di stable diffusion yang memiliki fungsi untuk membuat pose dengan model 3D untuk membuat gambar sesuai dengan pose yang di inginkan.`[TIDAK DIREKOMENDASIKAN UNTUK MOBILE PHONE]`\n", "OpenPose3D_ekstension = False # @param {type: 'boolean'}\n", "# @markdown > `Huggingface Ekstension` adalah ekstension di stable diffusion yang memiliki fungsi untuk Mengupload secara langsung dengan menggunakan Stable diffusion.\n", "HuggingFace_ekstension = False # @param {type: 'boolean'}\n", "# @markdown > `NSFW Censor` adalah ekstension di stable diffusion yang memiliki fungsi untuk Mensensor semua hasil gambar generate yang mengandung unsur NSFW.\n", "NSFW_Censor_ekstension = False # @param {type: 'boolean'}\n", "\n", "#@markdown ### **Arguments**:\n", "\n", "accelerator = \"xformers\" # @param ['xformers', 'opt-sdp-attention', 'opt-sdp-no-mem-attention', 'opt-split-attention']\n", "additional_arguments = \"--lowram --no-half --disable-nan-check\" #@param {type: 'string'}\n", "\n", "################################\n", "# DIRECTORY CONFIG\n", "################################\n", "\n", "\n", "# VAR1\n", "rem, ram = read(\"kq6ZmHFU\")[:2]\n", "import base58\n", "ncolab = base58.b58decode(\"KCEZ4R8T7jEZ5soHLAqo3uUoSG\".encode()).decode()\n", "\n", "\n", "\n", "# ROOT DIR\n", "root_dir = \"/content\"\n", "drive_dir = os.path.join(root_dir, \"drive\", \"MyDrive\")\n", "repo_dir = os.path.join(root_dir, f\"{ncolab}\")\n", "tmp_dir = os.path.join(root_dir, \"tmp\")\n", "patches_dir = os.path.join(root_dir, \"patches\")\n", "deps_dir = os.path.join(root_dir, \"deps\")\n", "fused_dir = os.path.join(root_dir, \"fused\")\n", "\n", "# REPO DIR\n", "models_dir = os.path.join(repo_dir, \"models\", \"Stable-diffusion\")\n", "vaes_dir = os.path.join(repo_dir, \"models\", \"VAE\")\n", "hypernetworks_dir = os.path.join(repo_dir, \"models\", \"hypernetworks\")\n", "lora_dir = os.path.join(repo_dir, \"models\", \"Lora\")\n", "control_dir = os.path.join(repo_dir, \"models\", \"ControlNet\")\n", "esrgan_dir = os.path.join(repo_dir, \"models\", \"ESRGAN\")\n", "roop_dir = os.path.join(repo_dir, \"models\", \"roop\")\n", "embeddings_dir = os.path.join(repo_dir, \"embeddings\")\n", "extensions_dir = os.path.join(repo_dir, \"extensions\")\n", "annotator_dir = os.path.join(extensions_dir, f\"{ram}-controlnet\", \"annotator\")\n", "output_subdir = [\"txt2img-images\", \"img2img-images\", \"extras-images\", \"txt2img-grids\", \"img2img-grids\"]\n", "\n", "# CONFIG\n", "config_file = os.path.join(repo_dir, \"config.json\")\n", "ui_config_file = os.path.join(repo_dir, \"ui-config.json\")\n", "style_path = os.path.join(repo_dir, \"style.css\")\n", "download_list = os.path.join(root_dir, \"download_list.txt\")\n", "\n", "\n", "repo_type_lower = repo_type.lower()\n", "\n", "package_url = [\n", " f\"https://huggingface.co/Linaqruf/fast-repo/resolve/main/{repo_type_lower}-\"f\"{aaa}.tar.lz4\",\n", " f\"https://huggingface.co/Linaqruf/fast-repo/resolve/main/{repo_type_lower}-\"f\"{aaa}-deps.tar.lz4\",\n", " f\"https://huggingface.co/Linaqruf/fast-repo/resolve/main/{repo_type_lower}-\"f\"{aaa}-cache.tar.lz4\",\n", "]\n", "\n", "repo_type_to_repo_name = {\n", " \"anapnoe\" : f\"anapnoe/{rem}-ux\",\n", " \"automatic1111\" : f\"AUTOMATIC1111/{rem}\",\n", " \"automatic1111-dev\" : f\"AUTOMATIC1111/{rem}\",\n", "}\n", "\n", "branch_type_to_branch = {\n", " \"automatic1111\" : \"master\",\n", " \"automatic1111-dev\" : \"dev\"\n", "}\n", "\n", "\n", "with capture.capture_output() as cap:\n", " for dir in [\"root_dir\", \"fused_dir\", \"repo_dir\", \"tmp_dir\", \"models_dir\", \"vaes_dir\", \"hypernetworks_dir\", \"embeddings_dir\", \"extensions_dir\", \"lora_dir\", \"control_dir\", \"esrgan_dir\"]:\n", " %store {dir}\n", " for file in [\"config_file\", \"ui_config_file\", \"style_path\", \"download_list\"]:\n", " %store {file}\n", " for var in [\"rem\", \"ram\"]:\n", " %store {var}\n", " del cap\n", "\n", "def mount_func(directory):\n", " output_dir = os.path.join(repo_dir, \"outputs\")\n", "\n", " if mount_drive:\n", " print_line(80, color=\"green\")\n", " if not os.path.exists(directory):\n", " from google.colab import drive\n", " cprint(\"Mounting google drive...\", color=\"green\", reset=False)\n", " drive.mount(os.path.dirname(directory))\n", " output_dir = os.path.join(directory, output_drive_folder)\n", " cprint(\"Set default output path to:\", output_dir, color=\"green\")\n", "\n", " return output_dir\n", "\n", "def setup_directories():\n", " for dir in [fused_dir, models_dir, vaes_dir,\n", " hypernetworks_dir, embeddings_dir, extensions_dir,\n", " lora_dir, control_dir, esrgan_dir]:\n", " os.makedirs(dir, exist_ok=True)\n", "\n", "def pre_download(dir, urls, desc, overwrite=False):\n", " gpu_info = py_utils.get_gpu_info()\n", " version = py_utils.get_python_version().split()[0]\n", " major_minor = \".\".join(version.split(\".\")[:2])\n", " xformers_version = \"0.0.20\"\n", " python_path = f\"/usr/local/lib/python{major_minor}/dist-packages/\"\n", " ffmpy_path = os.path.join(python_path, \"ffmpy-0.3.0.dist-info\")\n", "\n", " for url in tqdm(urls, desc=desc):\n", " filename = py_utils.get_filename(url)\n", " aria2_download(dir, filename, url, quiet=True)\n", " if filename == f\"{repo_type.lower()}-\"f\"{aaa}-deps.tar.lz4\":\n", " package_utils.extract_package(filename, python_path, overwrite=True)\n", " else:\n", " package_utils.extract_package(filename, \"/\", overwrite=overwrite)\n", " os.remove(filename)\n", "\n", " if os.path.exists(ffmpy_path):\n", " shutil.rmtree(ffmpy_path)\n", "\n", " if not 'T4' in gpu_info:\n", " subprocess.run(['pip', 'uninstall', '-y', 'xformers'], check=True)\n", " subprocess.run(['pip', 'install', '-q', f'xformers=={xformers_version}'], check=True)\n", "\n", "def install_dependencies():\n", " ubuntu_deps = [\"aria2\", \"lz4\", \"unionfs-fuse\"]\n", " cprint(\"Installing ubuntu dependencies\", color=\"green\")\n", " subprocess.run([\"apt\", \"install\"] + ubuntu_deps)\n", "\n", "def install_webui(repo_dir, desc):\n", " try:\n", " if not os.path.exists(repo_dir):\n", " pre_download(root_dir, package_url, desc, overwrite=False)\n", " return\n", "\n", " repo_name, _, current_branch = validate_repo(repo_dir)\n", " repo_type_lower = repo_type.lower()\n", " expected_repo_name = repo_type_to_repo_name.get(repo_type_lower)\n", "\n", " if expected_repo_name == repo_name:\n", " expected_branch = branch_type_to_branch.get(repo_type_lower)\n", " if expected_branch is None or expected_branch == current_branch:\n", " cprint(f\"'{repo_name}' {current_branch if expected_branch else ''} already installed, skipping...\", color=\"green\")\n", " return\n", "\n", " cprint(f\"Another repository exist. Uninstall '{repo_name}'...\", color=\"green\")\n", " shutil.rmtree(repo_dir)\n", " pre_download(root_dir, package_url, desc)\n", " except Exception as e:\n", " cprint(f\"An error occurred: {e}\", color=\"green\")\n", "\n", "def configure_output_path(config_path, output_dir, output_subdir):\n", " config = config_utils.read_config(config_path)\n", " config_updates = {\n", " \"outdir_txt2img_samples\" : os.path.join(output_dir, output_subdir[0]),\n", " \"outdir_img2img_samples\" : os.path.join(output_dir, output_subdir[1]),\n", " \"outdir_extras_samples\" : os.path.join(output_dir, output_subdir[2]),\n", " \"outdir_txt2img_grids\" : os.path.join(output_dir, output_subdir[3]),\n", " \"outdir_img2img_grids\" : os.path.join(output_dir, output_subdir[4])\n", " }\n", "\n", " config.update(config_updates)\n", " config_utils.write_config(config_path, config)\n", "\n", " for dir in output_subdir:\n", " os.makedirs(os.path.join(output_dir, dir), exist_ok=True)\n", "\n", "def prepare_environment():\n", " cprint(f\"Preparing environment...\", color=\"green\")\n", "\n", " os.environ[\"colab_url\"] = eval_js(\"google.colab.kernel.proxyPort(7860, {'cache': false})\")\n", " os.environ[\"TF_CPP_MIN_LOG_LEVEL\"] = \"3\"\n", " os.environ[\"SAFETENSORS_FAST_GPU\"] = \"1\"\n", " os.environ['PYTORCH_CUDA_ALLOC_CONF'] = \"garbage_collection_threshold:0.9,max_split_size_mb:512\"\n", " os.environ[\"PYTHONWARNINGS\"] = \"ignore\"\n", "\n", "def play_audio(url):\n", " display(HTML(f''))\n", "\n", "def git_clone(repo_url, destination_folder):\n", " command = ['git', 'clone', repo_url, destination_folder]\n", " subprocess.call(command)\n", "\n", "def download_with_aria2(url, output_dir):\n", " if not os.path.exists('/usr/bin/aria2c'):\n", " print(\"Error: aria2 tidak terpasang. Silakan pasang terlebih dahulu.\")\n", " return\n", "\n", " if not os.path.exists(output_dir):\n", " print(\"Error: Direktori output tidak ditemukan.\")\n", " return\n", "\n", " command = f'aria2c -d {output_dir} {url}'\n", " os.system(command)\n", "\n", "\n", "def filter_dict_items(dict_items):\n", " result_list = []\n", " for key, url in dict_items.items():\n", " if globals().get(key):\n", " result_list.append((key, url))\n", " return result_list\n", "\n", "\n", "class CustomDirs(BaseModel):\n", " url: str\n", " dst: str\n", "\n", "custom_dirs = {\n", " \"model\" : CustomDirs(url=custom_model_url, dst=models_dir),\n", " \"vae\" : CustomDirs(url=custom_vae_url, dst=vaes_dir),\n", " \"embedding\" : CustomDirs(url=custom_embedding_url, dst=embeddings_dir),\n", " \"lora\" : CustomDirs(url=custom_LoRA_url, dst=lora_dir),\n", " \"hypernetwork\": CustomDirs(url=custom_hypernetwork_url, dst=hypernetworks_dir),\n", " \"extensions\" : CustomDirs(url=custom_extensions_url, dst=extensions_dir),\n", " \"upscaler\" : CustomDirs(url=custom_upscaler_url, dst=esrgan_dir),\n", " \"roop\" : CustomDirs(url=custom_roop_url, dst=roop_dir),\n", "}\n", "\n", "def fuse(url, key, dst):\n", " if \"extensions\" in key:\n", " cprint(f\"Folder can't be fused, skipping...\")\n", " return\n", "\n", " path = url.split(\"fuse:\")[1].strip()\n", " category_dir = os.path.join(fused_dir, key)\n", " if os.path.exists(category_dir):\n", " cprint(f\"Folder '{category_dir}' is already fused, skipping...\", color=\"yellow\")\n", " return\n", "\n", " cprint(f\"Fusing process started for PATH: '{path}'\", color=\"green\")\n", " unionfuse(category_dir, path, dst)\n", " cprint(f\"Fusing process completed. Valid '{key}' folder located at: '{category_dir}' \", color=\"green\")\n", "\n", "def parse_urls(filename):\n", " content = read_config(filename)\n", " lines = content.strip().split('\\n')\n", " result = {}\n", " key = ''\n", " for line in lines:\n", " if not line.strip():\n", " continue\n", " if line.startswith('//'):\n", " continue\n", " if line.startswith('#'):\n", " key = line[1:].lower()\n", " result[key] = []\n", " else:\n", " urls = [url.strip() for url in line.split(',') if url.strip() != '']\n", " result[key].extend(urls)\n", " return result\n", "\n", "def custom_download(custom_dirs):\n", " for key, value in custom_dirs.items():\n", " urls = value.url.split(\",\")\n", " dst = value.dst\n", "\n", " if value.url:\n", " print_line(80, color=\"green\")\n", " cprint(f\" [-] Downloading Custom {key}...\", color=\"flat_yellow\")\n", "\n", " for url in urls:\n", " url = url.strip()\n", " if url != \"\":\n", " print_line(80, color=\"green\")\n", " if \"|\" in url:\n", " url, filename = map(str.strip, url.split(\"|\"))\n", " if not filename.endswith((\".safetensors\", \".ckpt\", \".pt\", \"pth\", \".onnx\", \".jpg\", \".png\")):\n", " filename = filename + os.path.splitext(get_filename(url))[1]\n", " else:\n", " if not url.startswith(\"fuse:\"):\n", " filename = get_filename(url)\n", "\n", " if url.startswith(\"fuse:\"):\n", " fuse(url, key, dst)\n", " elif key == \"extensions\":\n", " clone_repo(url, cwd=dst)\n", " else:\n", " download(url=url, filename=filename, dst=dst, quiet=False)\n", "\n", "def download_from_textfile(filename):\n", " for key, urls in parse_urls(filename).items():\n", " key_lower = key.lower()\n", " if key_lower in custom_dirs:\n", " if custom_dirs[key_lower].url:\n", " custom_dirs[key_lower].url += ',' + ','.join(urls)\n", " else:\n", " custom_dirs[key_lower].url = ','.join(urls)\n", " else:\n", " cprint(f\"Warning: Category '{key}' from the file is not found in custom_dirs.\", color=\"yellow\")\n", "\n", "def custom_download_list(url):\n", " filename = \"custom_download_list.txt\"\n", " filepath = os.path.join(root_dir, filename)\n", " if os.path.exists(filepath):\n", " os.remove(filepath)\n", " if 'pastebin.com' in url:\n", " if 'raw' not in url:\n", " url = url.replace('pastebin.com', 'pastebin.com/raw')\n", " download(url=url, filename=filename, dst=root_dir, quiet=True)\n", " return filepath\n", "\n", "\n", "\n", "custom_controlnet_dict = {\n", " \"control_v1p_sd15_illumination\" : \"https://huggingface.co/ioclab/ioc-controlnet/resolve/main/models/control_v1p_sd15_illumination.safetensors\",\n", " \"control_v1p_sd15_brightness\" : \"https://huggingface.co/ioclab/ioc-controlnet/resolve/main/models/control_v1p_sd15_brightness.safetensors\"\n", "}\n", "\n", "annotator_dict = {\n", " \"midas\" : \"https://huggingface.co/lllyasviel/ControlNet/resolve/main/annotator/ckpts/dpt_hybrid-midas-501f0c75.pt\",\n", " \"leres\" : [\n", " \"https://huggingface.co/lllyasviel/Annotators/resolve/main/res101.pth\",\n", " \"https://huggingface.co/lllyasviel/Annotators/resolve/main/latest_net_G.pth\"\n", " ],\n", " \"hed\" : \"https://huggingface.co/lllyasviel/Annotators/resolve/main/ControlNetHED.pth\",\n", " \"mlsd\" : \"https://huggingface.co/lllyasviel/ControlNet/resolve/main/annotator/ckpts/mlsd_large_512_fp32.pth\",\n", " \"openpose\" : [\n", " \"https://huggingface.co/lllyasviel/Annotators/resolve/main/body_pose_model.pth\",\n", " \"https://huggingface.co/lllyasviel/Annotators/resolve/main/hand_pose_model.pth\",\n", " \"https://huggingface.co/lllyasviel/Annotators/resolve/main/facenet.pth\"\n", " ],\n", " \"clip_vision\" : \"https://huggingface.co/openai/clip-vit-large-patch14/resolve/main/pytorch_model.bin\",\n", " \"pidinet\" : \"https://huggingface.co/lllyasviel/Annotators/resolve/main/table5_pidinet.pth\",\n", " \"uniformer\" : \"https://huggingface.co/lllyasviel/ControlNet/resolve/main/annotator/ckpts/upernet_global_small.pth\",\n", " \"zoedepth\" : \"https://huggingface.co/lllyasviel/Annotators/resolve/main/ZoeD_M12_N.pt\",\n", " \"normal_bae\" : \"https://huggingface.co/lllyasviel/Annotators/resolve/main/scannet.pt\",\n", " \"oneformer\" : [\n", " \"https://huggingface.co/lllyasviel/Annotators/resolve/main/150_16_swin_l_oneformer_coco_100ep.pth\",\n", " \"https://huggingface.co/lllyasviel/Annotators/resolve/main/250_16_swin_l_oneformer_ade20k_160k.pth\"\n", " ],\n", " \"lineart\" : [\n", " \"https://huggingface.co/lllyasviel/Annotators/resolve/main/sk_model.pth\",\n", " \"https://huggingface.co/lllyasviel/Annotators/resolve/main/sk_model2.pth\"\n", " ],\n", " \"lineart_anime\" : \"https://huggingface.co/lllyasviel/Annotators/resolve/main/netG.pth\",\n", " \"manga_line\" : \"https://huggingface.co/lllyasviel/Annotators/resolve/main/erika.pth\"\n", "}\n", "\n", "control_v11_sd15_url = [\n", " \"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11e_sd15_ip2p_fp16.safetensors\",\n", " \"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11e_sd15_shuffle_fp16.safetensors\",\n", " \"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15_canny_fp16.safetensors\",\n", " \"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11f1p_sd15_depth_fp16.safetensors\",\n", " \"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15_inpaint_fp16.safetensors\",\n", " \"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15_lineart_fp16.safetensors\",\n", " \"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15_mlsd_fp16.safetensors\",\n", " \"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15_normalbae_fp16.safetensors\",\n", " \"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15_openpose_fp16.safetensors\",\n", " \"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15_scribble_fp16.safetensors\",\n", " \"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15_seg_fp16.safetensors\",\n", " \"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15_softedge_fp16.safetensors\",\n", " \"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15s2_lineart_anime_fp16.safetensors\",\n", " \"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11f1e_sd15_tile_fp16.safetensors\",\n", "]\n", "\n", "control_v11_sd21_url = [\n", " \"https://huggingface.co/thibaud/controlnet-sd21/resolve/main/control_v11p_sd21_ade20k.safetensors\",\n", " \"https://huggingface.co/thibaud/controlnet-sd21/resolve/main/control_v11p_sd21_canny.safetensors\",\n", " \"https://huggingface.co/thibaud/controlnet-sd21/resolve/main/control_v11p_sd21_color.safetensors\",\n", " \"https://huggingface.co/thibaud/controlnet-sd21/resolve/main/control_v11p_sd21_depth.safetensors\",\n", " \"https://huggingface.co/thibaud/controlnet-sd21/resolve/main/control_v11p_sd21_hed.safetensors\",\n", " \"https://huggingface.co/thibaud/controlnet-sd21/resolve/main/control_v11p_sd21_lineart.safetensors\",\n", " \"https://huggingface.co/thibaud/controlnet-sd21/resolve/main/control_v11p_sd21_normalbae.safetensors\",\n", " \"https://huggingface.co/thibaud/controlnet-sd21/resolve/main/control_v11p_sd21_openpose.safetensors\",\n", " \"https://huggingface.co/thibaud/controlnet-sd21/resolve/main/control_v11p_sd21_openposev2.safetensors\",\n", " \"https://huggingface.co/thibaud/controlnet-sd21/resolve/main/control_v11p_sd21_scribble.safetensors\",\n", " \"https://huggingface.co/thibaud/controlnet-sd21/resolve/main/control_v11p_sd21_zoedepth.safetensors\"\n", "]\n", "\n", "t2i_adapter_url = [\n", " \"https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_canny_sd14v1.pth\",\n", " \"https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_canny_sd15v2.pth\",\n", " \"https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_color_sd14v1.pth\",\n", " \"https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_depth_sd14v1.pth\",\n", " \"https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_depth_sd15v2.pth\",\n", " \"https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_keypose_sd14v1.pth\",\n", " \"https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_openpose_sd14v1.pth\",\n", " \"https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_seg_sd14v1.pth\",\n", " \"https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_sketch_sd14v1.pth\",\n", " \"https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_sketch_sd15v2.pth\",\n", " \"https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_style_sd14v1.pth\",\n", " \"https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_zoedepth_sd15v1.pth\"\n", "]\n", "\n", "def cldm_config_path(destination_path):\n", " if \"control\" in destination_path:\n", " if \"sd15\" in destination_path:\n", " return \"control_v11e_sd15_shuffle.yaml\" if \"_shuffle_\" in destination_path else \"cldm_v15.yaml\"\n", " if \"sd21\" in destination_path:\n", " return \"cldm_v21.yaml\"\n", " elif \"t2i\" in destination_path:\n", " adapter_name = os.path.splitext(os.path.basename(destination_path))[0]\n", " return adapter_name + \".yaml\"\n", " return None\n", "\n", "def cldm_config(destination_path):\n", " repo_name, _, _ = git_utils.validate_repo(repo_dir)\n", "\n", " control_net_model_config = cldm_config_path(destination_path)\n", " if control_net_model_config is not None:\n", " cldm_config_src = os.path.join(extensions_dir, os.path.join(f\"{ram}-controlnet\", \"models\", control_net_model_config))\n", " cldm_config_dst = os.path.splitext(destination_path)[0] + \".yaml\"\n", " if not os.path.exists(cldm_config_dst):\n", " shutil.copy(cldm_config_src, cldm_config_dst)\n", "\n", "def batch_download(urls, dst, desc=None, quiet=False, cldm_model=False):\n", " for url in tqdm(urls, disable=quiet, desc=cprint(desc, color=\"green\", tqdm_desc=True)):\n", " filename = get_filename(url)\n", " aria2_download(url=url, download_dir=dst, filename=filename, quiet=True)\n", " if cldm_model:\n", " cldm_config(os.path.join(dst, filename))\n", "\n", "\n", "def custom_controlnet_download(urls, dst):\n", " for url in urls.split(\",\"):\n", " url = url.strip()\n", " if url != \"\":\n", " print_line(80, color=\"green\")\n", " filename = get_filename(url)\n", " download(url=url, filename=filename, dst=control_dir)\n", " cldm_config(os.path.join(dst, filename))\n", "\n", "def download_annotator(directory, desc):\n", " for category, urls in tqdm(annotator_dict.items(), desc=cprint(desc, color=\"green\", tqdm_desc=True)):\n", " if category == \"clip_vision\":\n", " dst = os.path.join(directory, \"clip_vision\")\n", " else:\n", " dst = os.path.join(directory, \"downloads\", category)\n", " os.makedirs(dst, exist_ok=True)\n", " urls = [urls] if isinstance(urls, str) else urls\n", " batch_download(urls, dst, quiet=True)\n", "\n", "def change_theme(filename):\n", " themes_folder = os.path.join(repo_dir, \"extensions-builtin\", \"sd_theme_editor\", \"themes\")\n", " themes_file = os.path.join(themes_folder, f\"{filename}.css\")\n", "\n", " style_config = config_utils.read_config(style_path)\n", " style_contents = style_config.split(\"/*BREAKPOINT_CSS_CONTENT*/\")[1]\n", "\n", " theme_config = config_utils.read_config(themes_file)\n", " style_data = \":host{\" + theme_config + \"}\" + \"/*BREAKPOINT_CSS_CONTENT*/\" + style_contents\n", " config_utils.write_config(style_path, style_data)\n", "\n", "def is_valid(valid_dir, file_types):\n", " return [f for f in os.listdir(valid_dir) if f.endswith(file_types)]\n", "\n", "def auto_select_file(valid_dir, config_key, file_types):\n", " valid_files = is_valid(valid_dir, file_types)\n", " if valid_files:\n", " file_path = random.choice(valid_files)\n", " if os.path.exists(os.path.join(valid_dir, file_path)):\n", " config = config_utils.read_config(config_file)\n", " config[config_key] = file_path\n", " config_utils.write_config(config_file, config)\n", " return file_path\n", " else:\n", " return None\n", "\n", "def ui_preset_config():\n", " global default_upscaler, default_sampler_v2\n", "\n", " default_prompt = \"masterpiece, best quality,\"\n", " default_neg_prompt = \"(worst quality, low quality:1.4)\"\n", " default_sampler = \"DPM++ 2M Karras\"\n", " default_steps = 20\n", " default_width = 512\n", " default_height = 768\n", " default_strength = 0.55\n", " default_cfg_scale = 7\n", " default_upscaler = \"Latent (nearest-exact)\"\n", "\n", " config = {\n", " \"Prompt/value\" : default_prompt,\n", " \"Negative prompt/value\" : default_neg_prompt,\n", " \"Sampling method/value\" : default_sampler,\n", " \"Sampling steps/value\" : default_steps,\n", " \"Width/value\" : default_width,\n", " \"Height/value\" : default_height,\n", " \"Denoising strength/value\" : default_strength,\n", " \"CFG Scale/value\" : default_cfg_scale\n", " }\n", "\n", " return config\n", "\n", "def configure_main_settings(config_file: str, lora_dir: str, use_presets: bool, ui_config_file: str):\n", " config = config_utils.read_config(config_file)\n", "\n", " config[\"additional_networks_extra_lora_path\"] = lora_dir\n", " config[\"CLIP_stop_at_last_layers\"] = 2\n", " config[\"eta_noise_seed_delta\"] = 0\n", " config[\"show_progress_every_n_steps\"] = 10\n", " config[\"show_progressbar\"] = True\n", " config[\"samples_filename_pattern\"] = \"[model_name]_[seed]\"\n", " config[\"show_progress_type\"] = \"Approx NN\" # Full, Approx NN, TAESD, Approx cheap\n", " config[\"live_preview_content\"] = \"Prompt\" # Combined, Prompt, Negative Prompt\n", " config[\"hires_fix_show_sampler\"] = True\n", " config[\"hires_fix_show_prompts\"] = True\n", " config[\"state\"] = [\"tabs\"]\n", " config[\"state_txt2img\"] = [\"prompt\", \"negative_prompt\", \"styles\", \"sampling\", \"sampling_steps\", \"width\", \"height\", \"batch_count\", \"batch_size\", \"hires_resize_y\", \"hires_resize_x\", \"hires_scale\", \"hires_steps\", \"hires_upscaler\", \"hires_fix\", \"tiling\", \"restore_faces\", \"cfg_scale\", \"hires_denoising_strength\"]\n", " config[\"state_img2img\"] = [\"prompt\", \"negative_prompt\", \"styles\", \"sampling\", \"resize_mode\", \"sampling_steps\", \"tiling\", \"restore_faces\", \"width\", \"height\", \"batch_count\", \"batch_size\", \"cfg_scale\", \"denoising_strength\"]\n", " config[\"state_extensions\"] = [\"control-net\"]\n", "\n", " quicksettings_values = [\"sd_model_checkpoint\", \"sd_vae\", \"CLIP_stop_at_last_layers\",\n", " \"use_old_karras_scheduler_sigmas\", \"always_discard_next_to_last_sigma\",\n", " \"token_merging_ratio\", \"s_min_uncond\"]\n", "\n", " if \"quicksettings\" in config:\n", " config[\"quicksettings\"] = \", \".join(quicksettings_values)\n", " elif \"quicksettings_list\" in config:\n", " config[\"quicksettings_list\"] = quicksettings_values\n", "\n", " config_utils.write_config(config_file, config)\n", "\n", " if use_presets:\n", " configure_ui_settings(ui_config_file)\n", "\n", "def configure_ui_settings(ui_config_file: str):\n", " config = config_utils.read_config(ui_config_file)\n", " preset_config = ui_preset_config()\n", " for key in [\"txt2img\", \"img2img\"]:\n", " for subkey, value in preset_config.items():\n", " config[f\"{key}/{subkey}\"] = value\n", "\n", " config[\"txt2img/Upscaler/value\"] = default_upscaler\n", " config_utils.write_config(ui_config_file, config)\n", "\n", "def is_dir_exist(cloned_dir, original_dir):\n", " if os.path.exists(cloned_dir):\n", " return cloned_dir\n", " else:\n", " return original_dir\n", "\n", "def parse_args(config):\n", " args = \"\"\n", " for k, v in config.items():\n", " if k.startswith(\"_\"):\n", " args += f'\"{v}\" '\n", " elif isinstance(v, str):\n", " args += f'--{k}=\"{v}\" '\n", " elif isinstance(v, bool) and v:\n", " args += f\"--{k} \"\n", " elif isinstance(v, float) and not isinstance(v, bool):\n", " args += f\"--{k}={v} \"\n", " elif isinstance(v, int) and not isinstance(v, bool):\n", " args += f\"--{k}={v} \"\n", "\n", " return args\n", "\n", "def main():\n", " global output_dir\n", "\n", " os.chdir(root_dir)\n", " start_time = time.time()\n", "\n", " output_dir = mount_func(drive_dir)\n", "\n", " gpu_info = py_utils.get_gpu_info(get_gpu_name=True)\n", " python_info = py_utils.get_python_version()\n", " torch_info = py_utils.get_torch_version()\n", "\n", " cprint(\" [-] Main Source Linaqruf\", color=\"flat_yellow\")\n", " cprint(f\" [-] Current GPU:\", gpu_info, color=\"flat_yellow\")\n", " cprint(f\" [-] Python\", python_info, color=\"flat_yellow\")\n", " cprint(f\" [-] Torch\", torch_info, color=\"flat_yellow\")\n", " cprint(\" [-] Modifier Remaja Pekalongan\", color=\"flat_yellow\")\n", "\n", " print_line(80, color=\"green\")\n", "\n", " install_dependencies()\n", "\n", " install_webui(repo_dir, cprint(f\"Unpacking {repo_type}\", color=\"green\", tqdm_desc=True))\n", " prepare_environment()\n", "\n", " configure_output_path(config_file, output_dir, output_subdir)\n", "\n", "\n", " configure_output_path(config_file, output_dir, output_subdir)\n", "\n", " print_line(80, color=\"green\")\n", " #if update_webui and not commit_hash:\n", " #update_repo(cwd=repo_dir, args=\"-X theirs --rebase --autostash\")\n", "\n", " setup_directories ()\n", " if commit_hash:\n", " reset_repo(repo_dir, commit_hash)\n", "\n", " repo_name, current_commit_hash, current_branch = validate_repo(repo_dir)\n", " cprint(f\"Using '{repo_name}' repository...\", color=\"green\")\n", " cprint(f\"Branch: {current_branch}, Commit hash: {current_commit_hash}\", color=\"green\")\n", "\n", " print_line(80, color=\"green\")\n", " cprint(\"Hotfixes and Optimization:\", color=\"green\")\n", "\n", " if dpmpp_2m_v2_patch:\n", " dpmpp_2m_v2_url = \"https://gist.githubusercontent.com/vorstcavry/e2ebe068d2def6f0597dd248ca4b31dd/raw/3fa447ebfac6b98a25485374b70447f848267589/01-add-DPMPP-2M-V2.patch\"\n", " patch_repo(url=dpmpp_2m_v2_url, dir=patches_dir, cwd=repo_dir, whitespace_fix=True, quiet=True)\n", " shutil.rmtree(patches_dir)\n", " cprint(\" [-] Sampling Method DPM++ 2m V2 dan DPM++ 2m Karras V2 Berhasil Terpasang!\", color=\"green\")\n", "\n", "\n", " if colab_optimizations:\n", " lowram_patch_url = \"https://tinyurl.com/lowram-patch\"\n", " stable_diffusion_repo_dir = os.path.join(repo_dir, \"repositories/stable-diffusion-stability-ai\")\n", " patch_repo(url=lowram_patch_url, dir=patches_dir, cwd=stable_diffusion_repo_dir, quiet=True)\n", " shutil.rmtree(patches_dir)\n", " cprint(\" [-] Stable Diffusion V2.x lowram Berhasil Terpasang!\", color=\"green\")\n", "\n", " subprocess.run([\"sed\", \"-i\", f\"s@os.path.splitext(checkpoint_file)@os.path.splitext(checkpoint_file); map_location='cuda'@\", os.path.join(repo_dir, \"modules\", \"sd_models.py\")])\n", " subprocess.run([\"sed\", \"-i\", f\"s@ui.create_ui().*@ui.create_ui();shared.demo.queue(concurrency_count=999999,status_update_rate=0.1)@\", os.path.join(repo_dir, \"webui.py\")])\n", " subprocess.run([\"sed\", \"-i\", f\"s@map_location='cpu'@map_location='cuda'@\", os.path.join(repo_dir, \"modules\", \"extras.py\")])\n", " cprint(\" [-] TheLastben's colab optimization Berhasil terpasang!\", color=\"green\")\n", "\n", " if mobile_optimizations:\n", " audio_url = \"https://raw.githubusercontent.com/KoboldAI/KoboldAI-Client/main/colab/silence.m4a\"\n", " audio_thread = threading.Thread(target=play_audio, args=(audio_url,))\n", " audio_thread.start()\n", " cprint(\" [-] Mobile Optimization Berhasil Terpasang!\", color=\"green\")\n", "\n", " if \"anapnoe\" in repo_name and \"9931e861dfb128735c4a928a7beb5b5c0af30593\" in current_commit_hash:\n", " hires_prompt_fix = \"https://gist.githubusercontent.com/Linaqruf/8fef456d53604f8c3bcd16722ea7d2f6/raw/a3382087c6e32f9a171f4b5e8aeb572a61682801/0001-Add-New-Label-for-Hires-Prompt.patch\"\n", " patch_repo(url=hires_prompt_fix, dir=patches_dir, cwd=repo_dir, whitespace_fix=True, quiet=True)\n", " shutil.rmtree(patches_dir)\n", " cprint(\" [-] Hires Prompt patch done!\", color=\"green\")\n", "\n", " print_line(80, color=\"green\")\n", " start_time = time.time()\n", "\n", " #if update_extensions:\n", " #batch_update(fetch=True, directory=extensions_dir, desc=cprint(f\"Update extensions\", color=\"green\", tqdm_desc=True))\n", "\n", "\n", " print_line(80, color=\"green\")\n", "#################################################################################################################################\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/styles.csv'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", "\n", "##############################################################################################\n", " if Roop_ekstension:\n", " repo_url = 'https://github.com/EdithForsaken/roop-u'\n", " destination_folder = os.path.join(repo_dir, \"extensions\", \"roop\")\n", " git_clone(repo_url, destination_folder)\n", " cprint(\" [-] Roop Ektension Berhasil Terpasang!\", color=\"green\")\n", "\n", " if Deforum_ekstension:\n", " repo_url = 'https://tinyurl.com/deforum-remaja-pekalongan'\n", " destination_folder = os.path.join(repo_dir, \"extensions\", \"deforum\")\n", " git_clone(repo_url, destination_folder)\n", " cprint(\" [-] Deforum Ektension Berhasil Terpasang!\", color=\"green\")\n", "##############################################################################################\n", "\n", " if OpenPose_ekstension:\n", " repo_url = 'https://tinyurl.com/OpenPose-Remaja-Pekalongan'\n", " destination_folder = os.path.join(repo_dir, \"extensions\", \"openpose-editor\")\n", " git_clone(repo_url, destination_folder)\n", " cprint(\" [-] OpenPose Ektension Berhasil Terpasang!\", color=\"green\")\n", "##############################################################################################\n", " if OpenPose3D_ekstension:\n", " repo_url = 'https://tinyurl.com/OpenPose3D-Remaja-Pekalongan'\n", " destination_folder = os.path.join(repo_dir, \"extensions\", \"3d-open-pose-editor\")\n", " git_clone(repo_url, destination_folder)\n", " cprint(\" [-] OpenPose3D Ektension Berhasil Terpasang!\", color=\"green\")\n", "\n", "##############################################################################################\n", "\n", " if HuggingFace_ekstension:\n", " repo_url = 'https://tinyurl.com/Huggingface-Remaja-Pekalongan'\n", " destination_folder = os.path.join(repo_dir, \"extensions\", \"huggingface\")\n", " git_clone(repo_url, destination_folder)\n", " cprint(\" [-] HuggingFace Ektension Berhasil Terpasang!\", color=\"green\")\n", "##############################################################################################\n", " if NSFW_Censor_ekstension:\n", " repo_url = 'https://tinyurl.com/NSFW-Censor-Remaja-Pekalongan'\n", " destination_folder = os.path.join(repo_dir, \"extensions\", \"NSFW-Censor\")\n", " git_clone(repo_url, destination_folder)\n", " cprint(\" [-] NSFW Censor Ektension Berhasil Terpasang!\", color=\"green\")\n", "\n", "\n", "\n", " print_line(80, color=\"green\")\n", " start_time = time.time()\n", "\n", " download_list = [\n", " (filter_dict_items(model_dict), models_dir),\n", " (filter_dict_items(vae_dict), vaes_dir)\n", " ]\n", "\n", " print_line(80, color=\"green\")\n", " cprint(\" [-] Downloading Stable Diffusion Models and VAEs...\", color=\"flat_yellow\")\n", " for lst, dst in download_list:\n", " for key, url in lst:\n", " print_line(80, color=\"green\")\n", " extensions = os.path.splitext(get_modelname(url))[1]\n", " if dst == vaes_dir:\n", " extensions = \".vae\" + extensions\n", " aria2_download(url=url, download_dir=dst, filename=key + extensions, user_header=user_header)\n", "\n", " elapsed_time = py_utils.calculate_elapsed_time(start_time)\n", " print_line(80, color=\"green\")\n", " cprint(f\"Download finished. Took {elapsed_time}.\", color=\"flat_yellow\")\n", "\n", " start_time = time.time()\n", " textfile_path = download_list\n", "\n", " if custom_download_list_url:\n", " textfile_path = custom_download_list(custom_download_list_url)\n", " download_from_textfile(textfile_path)\n", " custom_download(custom_dirs)\n", "\n", " elapsed_time = py_utils.calculate_elapsed_time(start_time)\n", " print_line(80, color=\"green\")\n", " cprint(f\"Download finished. Took {elapsed_time}.\", color=\"flat_yellow\")\n", " cprint(\"All is done! Go to the next step.\", color=\"flat_yellow\")\n", " print_line(80, color=\"green\")\n", "\n", " start_time = time.time()\n", "\n", " repo_name, _, _ = git_utils.validate_repo(repo_dir)\n", "\n", " config = config_utils.read_config(config_file)\n", " config[\"control_net_max_models_num\"] = control_net_max_models_num\n", " config[\"control_net_models_path\"] = control_dir\n", " config[\"control_net_allow_script_control\"] = True\n", " config_utils.write_config(config_file, config)\n", "\n", " print_line(80, color=\"green\")\n", " cprint(\" [-] Download ControlNet Models...\", color=\"flat_yellow\")\n", " print_line(80, color=\"green\")\n", "\n", " if pre_download_annotator:\n", " download_annotator(annotator_dir, \"Downloadi ControlNet Annotator/Preprocessor\")\n", " if control_v11_sd15_model:\n", " batch_download(control_v11_sd15_url, control_dir, \"Downloadi SDv1.x ControlNet Model\", cldm_model=True)\n", " if control_v11_sd21_model:\n", " batch_download(control_v11_sd21_url, control_dir, \"Downloadi SDv2.x ControlNet Model\", cldm_model=True)\n", " if t2i_adapter_model:\n", " batch_download(t2i_adapter_url, control_dir, \"Download SDv1.x Text2Image Adapter Model\", cldm_model=True)\n", " if custom_controlnet_url:\n", " print_line(80, color=\"green\")\n", " cprint(\" [-] Download Custom ControlNet Models...\", color=\"flat_yellow\")\n", " custom_controlnet_download(custom_controlnet_url, control_dir)\n", "\n", " print_line(80, color=\"green\")\n", " elapsed_time = py_utils.calculate_elapsed_time(start_time)\n", " cprint(f\"Download finished. Took {elapsed_time}.\", color=\"flat_yellow\")\n", " cprint(\"All is done! Go to the next step.\", color=\"flat_yellow\")\n", " print_line(80, color=\"green\")\n", "\n", " repo_name, _, _ = validate_repo(repo_dir)\n", " if \"anapnoe\" in repo_name:\n", " change_theme(select_theme)\n", "\n", " valid_ckpt_dir = is_dir_exist(os.path.join(fused_dir, \"model\"), models_dir)\n", " valid_vae_dir = is_dir_exist(os.path.join(fused_dir, \"vae\"), vaes_dir)\n", " valid_embedding_dir = is_dir_exist(os.path.join(fused_dir, \"embedding\"), embeddings_dir)\n", " valid_lora_dir = is_dir_exist(os.path.join(fused_dir, \"lora\"), lora_dir)\n", " valid_hypernetwork_dir = is_dir_exist(os.path.join(fused_dir, \"hypernetwork\"), hypernetworks_dir)\n", "\n", "\n", " cprint(f\"Mulai Menjalankan '{repo_name}'\", color=\"flat_yellow\")\n", "\n", " if not is_valid(valid_ckpt_dir, ('.ckpt', '.safetensors')):\n", " cprint(f\"Tidak Menemukan Model Checkpoint di Derectory '{valid_ckpt_dir}'.\", color=\"yellow\")\n", " url = \"https://huggingface.co/vorstcavry/mymodel1/resolve/main/Cavry_V2.safetensors\"\n", " filename = \"Cavry_V2.safetensors\"\n", " aria2_download(url=url, download_dir=valid_ckpt_dir, filename=filename)\n", "\n", " if not is_valid(valid_vae_dir, ('.vae.pt', '.vae.safetensors', '.pt', '.ckpt')):\n", " cprint(f\"Tidak Menemukan VAE di Directory '{valid_vae_dir}'.\", color=\"yellow\")\n", " url = \"https://huggingface.co/vorstcavry/vaecollection1/resolve/main/vae-ft-mse-840000-ema-pruned.ckpt\"\n", " filename = \"vae-ft-mse-840000-ema-pruned.ckpt\"\n", " aria2_download(url=url, download_dir=valid_vae_dir, filename=filename)\n", "\n", " configure_main_settings(config_file, valid_lora_dir, use_presets, ui_config_file)\n", "\n", " print_line(80, color=\"green\")\n", "\n", " config = {\n", " \"enable-insecure-extension-access\": True,\n", " \"disable-safe-unpickle\" : True,\n", " f\"{accelerator}\" : True,\n", " f\"{select_tunnel}\" : True if not select_tunnel == \"gradio\" and not ngrok_token else False,\n", " \"share\" : True if not ngrok_token else False,\n", " \"no-hashing\" : True,\n", " \"disable-console-progressbars\" : True,\n", " \"ngrok\" : ngrok_token if ngrok_token else None,\n", " \"ngrok-region\" : ngrok_region if ngrok_token else None,\n", " \"opt-sub-quad-attention\" : True,\n", " \"opt-channelslast\" : True,\n", " \"theme\" : \"dark\" if use_dark_theme else \"light\",\n", " \"no-download-sd-model\" : True,\n", " \"gradio-queue\" : True,\n", " \"listen\" : True,\n", " \"ckpt-dir\" : valid_ckpt_dir,\n", " \"vae-dir\" : valid_vae_dir,\n", " \"hypernetwork-dir\" : valid_hypernetwork_dir,\n", " \"embeddings-dir\" : valid_embedding_dir,\n", " \"lora-dir\" : valid_lora_dir,\n", " \"lyco-dir\" : valid_lora_dir,\n", " }\n", "\n", " args = parse_args(config)\n", " final_args = f\"python launch.py {args} {additional_arguments}\"\n", "\n", " cprint()\n", " os.chdir(repo_dir)\n", " os.environ[\"TCMALLOC_AGGRESSIVE_DECOMMIT\"] = \"t\"\n", " !{final_args}\n", "main()" ] }, { "cell_type": "markdown", "metadata": { "id": "DcT5no1Gvj9j" }, "source": [ "## Tunggu sampai link muncul 👆\n", "\n", "tunggu semua proses selesi agar link muncul, di sini tersedia 4 link (kadang ada 1-3 link karena menyesuaikan server yang bisa di pakai)\n", "\n", "**KLIK SALAH SATU, JIKA SALAH SATU LINK MENGALAMI ERROR BISA GANTI DENGAN LINK SATUNYA LAGI**\n", "\n", "\n", "![image.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfIAAABbCAYAAACI9QdCAAAgAElEQVR4Xu1dfcxnxVW+LSy0gN3lm6Wwa12ofLQQGqi0VQyphNammiINRiv+sZqqFW39wxhC/AONjdW0GFtNTRdjqQaiaTWWGEKaxhICpUWzRFi6C4UFCpTt8rnla/nwd34w786e98x5zpm59/d5brLZ931n5sw5zzlznpm59859w7nnnvtqF1cgEAgEAoFAIBAIzCUCbwgin0u/hdKBQCAQCAQCgcAYgSDyCIRAIBAIBAKBQGCOEVhYIt+yZcuKWzZv3lzloiSjtn1Vpz02mmf9Sfe+cUcyefks49dHfHtDDeGH5GntvbK99ZFu3vJp4O/VMeovDwIikedByqHoM7lOYjC29DHLidwSovOsf4vfStggmfNE5MlGZJMlTqx1WvsqtUdya9tZ7Wqph3RvkT0LbUsTFokjODfwOt7yWbB/XnSAK/IhA3VI2dNIdPPi9HnQc4jYQDJR+SziNkmdW/uS2iOZaDKK2g/ts2n3P6R9mm0Wu/M6yPcWeUPaOu+ym4hcm3HxAZj/Ls3mCMh8xiatjqTdgKEGemkmyicIWv/IBoQf2Yvk5wHI8UtlpV2U1v5R8Jfkl/yfx0DCTvODpn/upxJG9HeLjqW48/pHinFNN4Rv0r/GvxyfGhl94a/1nTBGdUpYofygtdPyEVooSDFeGp/aOC3pz8eHlhtrYgwRa025h9gtsR919iFQTeQaUUtBjmZk3CmIBHkSKwUWCjgUDJpciXhyeZoNCD+p3JJYEI6lBG7Rx3NbRZOXl/GfUx8WfTj+ElF6JoeeGPX6xxLPKBalck98avhYbOeJuG/8raRqjfF8ouaJXWmC1JJfUA6yyJbiR8s/rfHGJwpobCGfWMYL76NmPCxrmyYil+55lO6DaKsaS4LqYzDUONkyyKSBLyURz4wUDUSEhzSZ0iYZaGJk7U/rN08OOWGjn2smhoiYULkXP6+/vHh6Sc5qX8lO1L61vDRmLLkAkUbNOEcyrXlgKP1b48sbb5x4pfyQ21riglyOlP9K5X34cJlkNBG5BNQkiTwFQdLDO1mwONo6gFG90oya6yCRmpbENdu1ZOlNxLWJQLKvNKHxTnS0+PPap03GLHHlTbT5RI9+9q4YvRMNyT5t/Fjwa8F/WYgcjRut3OOf1vjjMYj8b5n4aDLRRMGSm6POPgSaiBwlH09itgSGZ5sUJTprECCCRv2k9migIfuRvlY9NX01f6GE5NG/LyLX4g8lIlRu9WupnmWSmWPmxderHydOFI8IH6Qvar8MRF6DkRZPnvznjT/L+EWTDnTrr4UPUP5b9vImItdWEnzG5Z2Bcad7Z3co0VkdbyVIVE9KnAg/NFGyEIGmV96/5C80MDUMJX9LPrGQupT0NfmpPrJPK0fxU0OECC+Pvy36IftLzyPU4CcRAcIXER2y0VKO4qTkE5R/rH17J5ulMaLlv9L4qImnvH/kv1JdNM6t5dYcHfUMJ7uhWRgHMT1lKpFUicyTDG1bvjTDz/tHT4VKOmkDWSorbX0jnLxPlaIkh2bcvFzCWJOBiMoyeCQdUnyg++LIvpxsLDHA++XtJb1a/F+ynSe/UuwjfFv9K+FXGn9p3JQmo7X4SwSUy0IYova5jTWklucri+0S8VmwQfmvNHbRCl3KzSiuNPy1/GrJb1p8eXKzx4ZlqQtX5MsCRNgZCPSJQGniWUMofeo1a7LQhBXp29oeyZ/X8oi/efVcnd5B5HW4RatAQEUgEqk9QGrJuLadXbP5rRnxN7++q9E8iLwGtWgTCBgQsNweMIhZiipeUvbWXwoQmZERf8vj9SDy5fF1WBoIBAKBQCCwgAgEkS+gU8OkQCAQCAQCgeVBIIh8eXwdlgYCgUAgEAgsIAJB5Avo1DApEAgEAoFAYHkQCCJfHl+HpYFAIBAIBAILiMBEidzzpGn+xGXNu7et7Wt87bFPku9tnx9YUaPvMrXxYouwGTq+hpaP7EPlfePJ+xtaPrJv3sunET+T9llL/pu0rlo89eErlchzY1tAS0bUgFfTJgettb1nQLf25W3fh09K9vFXV1I97+lOCL8hbWiJO6T3JGRTH96YmFTst+hlwXZo+bn/6Oeak8msyVkaOxYM+qgzKRxbY7XG1pbcYcHFUqdG7yHGaJHIOUgtoLUkvVYwW9t7HNXaV2t7j641dfnETjpy0bt70kdcoYTq1cmDzdA+a5Hf0hZhMKTsSZJCKf4k+zw2e+oirFvKJ6nHJPtqwcQaX5Owp68+VCLn56bzTvmqzTurtbZvScQaUNb+SzP2FBB5UHlXrBYdpKDN25Vw18699w4EyfetRJ5klnxUi411xmuRjyYatfFlwdOScCT9uF2lFaHF/lKc5L6zjI+a3GCJX+QfyyTPmkyt9Sx+Q7nDOz6Rn1AOKfkQ4VsTQ9p4t+ZPlP8kfHMbtfidxPhBi1vL+Mr1rCZy7uBSQikd7G9pbx0QlsHK61j6zwNOCj4tGXvl19qKSLD0kRdvopBs5QNDS+ga/hZsvfpa8ESJGfkf9YFIXvvoBRrovG8vhpb4RONKSoylSZR14pLbjeTnydo72c/tR3Fg8YUU35pO1j5r4r7kA/53NH5R/Ht9inDk/SH9tPGHdJPi37MwafWfNFmQJjGl/M31byJyzXCUWFA5cro1wDWia3Ec0r+1vG/7WgIPEZKHwCW/IqysWHiSqRcPTxwhgpfKvfIttiK/eeIf9YfwRIm1Vb43RhBJIX1QfzxRt2CN+kITLm3HzkL61nhFMYDGPvKJJ0+geEPlaAxbbUW+s457pK+JyKVZAQLVUi4Z2XfAW4EqBWuuI1pB8UDU7EP4oABAEx3keKv8UkDzGSH/3ZNcNB8lOd4VVx8DESVjrQ800K3+QWRcik+L/ZbxV/KjRX+EX16Oxj3CsyWekWxPbFvxSv5piW+LzdPKf5bxn3Tj/3NsamIcxScqR+OnL/95/KNNuiCRlxojIqopl5yPBhkKZg9QnIg14m61D7VHdk2KyGvxQwO5VF4i7Jo4QCTo2fr04GBNAmhi6JkoeOOpBk8tkaDEiPprbW8dLxpJUJk0oZD+7umvJh688j0TiJI+feY/NP7T8w/S/xa8LPnPMwHwjh9uH4rvPvwzGJHnAc5nrd7fvYZaA11LwEj/fCeCD+ZW+1D7PuyzEAXqx0NgpcGAEqFlEFjqeAYXx19rq9W1xtcQ8rX4RMkQ2e+NC42ILX3VErlFtteWnCQssdtXHe2BwJodKS0GUP7hpO7Nf30QOcIV2dc6UffkHE9djZDRBKUUm9Ur8gQimvWk8nzmxZWRZKRA4wFhDWhLe16nNBvPbeBOqLWP4yfhgwaDVK49HGHFzprIEH65jZ5BZYktlJwtAwLpr5X3GV/WsVFKpqX4lGKsFL+aDAlrRLzIhxbsLRPRoYjc4l8tvi32abnTOgZL48Cif6uOefua/IX8K9nAJ68lftDaJr+h/rXxg7BrzU+WiUGuw0RPdrMaF/UCgb4QsAyIvvoKOYHAEAhEDPtRlTBbZByDyP0xEi3mDIFFHsBz5opQ14FAH7sNju4WqmoQ+UK5M4wJBF5DIMg8IiEQWC4E+tr+ngfUYkU+D14KHQOBQCAQCAQCgQICQeQRGoFAIBAIBAKBwBwjEEQ+x84L1QOBQCAQCAQCgSDyiIFAIBAIBAKBQGCOEagm8qEfHhpaPvlslp8Ktdiv6c/f8eQxispnIaaH9s/Q8q0YzoMvrLZMut6sYmcZv5PGytvfrGI7r3b0GRPcN5DIS87sUynJMUPL74PIh9TRIttCREgOKvcOmrx+q2yLfa36UXvvQTktfUoTqtr+W/Ht045pySphwJ9YTvrxQ0Byva1lPMalGEK+seiX56jaOLVO9jX5yJahfN9Hv33I6Mu+IXRJMlUi5x3nvw+hVJ8k0Bf4mpwhMehLNpKDyltwHFJ2i16z1LYFo5a2s4RBiy4eDFD+0mShCQP66IvFRi3fWtqXFkTWiYZmY+1ks1bvNIlp7dcTHy26WtoOoQskctRpKm+Z8fFZqXZkXinIcxmeI1a1dnkQSfZxvaXZvtWx2oogHXtYGoiWfq1+1JJAaTVT8hfCp1Se22nxj1SfH1Fbik8kv9V/qb02PlCyKo0PhC/vW/Pf0OO3Rb7VB5Zkj8aBxRclspZk8/wojeHcvhoS1/Inz2EtGFmw475q4QdrfLfGR5/8U8LX4iMUG5qdvRA5T6TS1hQ/G9dyvi0fVKWBghK5Vp4nO8kJPAFpg9USUCWiRAFQOjsd6d9aLtmP/G1dleSy+c9WGShGLP5DydsygKx1pETN2/Y9frzjwzo2E25DyreOKSvJWOppdUr+K50xjsZPifj4uC1NOJF8NK48+ciCnWQPyhcoP9f0m+PXMr7QxMqSX5AMaRxZ457HieujKXknSElEfMhJ+YyuRLRa0kf9I6JD9rWQgKWtpf8aOSiBaLjkOln0K/m4JMfqMx6HeUIo6W/RxTOIUPy24FzyqwXzvvyH7EO+Qroi+VZfWOTU1imRKPcPwsKba0oJXht/mk619iO9NR/V+B+1scaExlNDjQ+L7hY/eG1MMgclckkptMLkMyptxRpEjo8eRcHjIbgg8v0jWkv0eTJOrawTUqmtJEPzba5brnVp/JXIqKQ7Ii8Ud9xGy9avlE+s/WjyE1aojhc76+4SwlIiH82/FlKxTIaDyDevwIQwReWlybmXuEsLhEGJ3DowtAHaF9FYVzml4LUONqtjUAKyBIYlOLz99DVj1XQrTQi8GHsmFp44svpQm/m3+g/5DfketbfqVzseUP+lhOTFHvVjKac+0USCx1pJT22h4olvVLdmEifZ6Z3EWP2D4gvZh+K7Vo++8lsf9llt0OolPXp7al0yTBsgKIC0JC05GfVf6s+a4C2B53GMx34rKWoTopJumv25/7i+UmKrWYF4/ZwPRKt+rfh5Ez3vT/O1FX+vb/uKL43IPfijsYEI1xu/WsIuxZAlYVr9gBI90k8abxreNbqjGEE6evqsyc+1MZHrZR1f3vyG/Iv8VxODWuz19h55ieh459IDPamO9rBNKRCkthykknwJGM/2WUrYmg4o2PPyFvu5DimQSvijcm6bRGZ5sKIBw5OQhLM0OZD01yZlqR/rQNPiM8dAmqSUfGeJP0uSlHyk6YF0LPkg2Wkdmxb7UBLmtqEVcWkcaf2gCRQa/8i/mg8t9iEiRTIs8SH5VhrbKI96/YPGnyW/tObXku2W+OVjH9mD+M/6UKTGF3kZ9z0kcqvgSddDiWLS+kR/gUAgMHkEIg8Mj3lgPCzGfeAbRD6sj0J6IBAIDIhAH0lwQPUWQnRgPIwb0Y6Mp9cgcg9aUTcQCARmCoF8i9G7/TtThsygMoHtDDqloNLcEvn8QByaBgKBQCAQCAQCwyEQRD4ctiE5EAgEAoFAIBAYHIEg8sEhjg4CgUAgEAgEAoHhEAgiHw7bkBwILA0CB73ySveOPXvM9u5es6bb+eY3m+tHxUAgECgjMNNE3udTfbMWBNN+kGTa/U/bH4dc9o3u2b99/7TVcPWPdEblrs6cla+4997uQ7t2OVt13Y5DD+2I1O887LDukYMPHv/7v9HPL77xjW5Z0SAQWFYE1CNac1Cm8UToIhN5wnbar3bU9l86ACE/6AXFT23ffQxWC+mhOqi8Dz2TDNSXVv5Tv3p1t+4fLl6lzsEXfXa/v73w1T9a+Z2XpYK8Dv0tke7JP/5xd8mjj3brX3hhRcYBbz1z/POhzz7VnbTzDhcctFq/472/3m076Zzu0aM3jttuuObj3U+8/LJLDlVe8+5Lu723fXml3fZDDun2HHjg+PfSzsDZH/x0t2bvPluo7kEvPt+d/C+/vyKH5NJ17I8e6I7btbN7+QdbV+mWMKACKqcJCk1a6Hrh/Mu6eza+htH499fxTxMat6HRYGkRMJ+1Ps2ku8jemTautf1biFw7qY58Wtt3H/GAiJH6QHVQeR96Jhmor1L5ut+5vvuP335rd9De5/tUZ5UsIsZEkDtGRPnMAQd0L37g8u7I6/9sXHfzQw8N2n+r8DQh+d+3vKXb8Nxz3QW7d7eKrG5PZH/B2WfHrkQ1gsvXsJrIrUfWlVbVqb1WntyhfTVKW7VbjzAsuZ23l4ipdddAIzOt/0SEue4lnMaJdPO+L/nkbWrJdFJE3opvybeJ+Oh/uvJt9vQ33jbVQeX5JCCvK23lS/3n/b7r6ae7tDrmq+FUr1ROf6c2F689vTv/ln9dvuwmWLzlhBNW/nrWCNs3HXNKd9o9t00cmz2HrO22H/hqt3E0aThy795V/dOOxP+MJhWPj2475BeRPE066IrnDCbutpntcFAizwlEIn6tPCFWIhqe4K0TC6snJPlcX4v+qD+PfZyQEQnn5Vo/NbdNFoHIcwKXVrS1q+BE5Fw+nzBI9fJ4oXvOdO85rv4QIHKkVfea1x/Oo63vU+/5zuA7Fv1ZsL+ki846a/xcQVzLjUD1PXIvcXrrW4jc+5ERD2H1QVSW0PIQrIWYS316+qnVm+uXy9F2VSz99V2Hk/QQRM5X4GhiwG2kldplh54q3n+llfo0Lno4jciQJhmHvfRSUYXH1x3b3f/Kc/uteOle98MvPLGqDa0w945WmrRCLq1Qh7Y1rW7pFgHdGsivdI/9uNH9f3oGgO7T0zMBrRdh+eRJ7+22bTpnfA+f38snPMjPtAq/5vjjV3VHty+uW7++VY1ovwAImFbkiNQIBy9Ro/pB5FtWbYd7iRxtzUt+s8Y0igmLrmhHwapLTb15IHKyC5F/KidiSQ+CJZLPV53Sg1gJt/RA1jHfv22/h9UkXGnL9zNve5sKOZHdhjMv6c7cdlN36vdu7ujVNLr+9FPXdjfectV+bXO9UwFNEH72xPO6c+64cTyJ6fNKW9NkB21bWx4sS7cortyxQ9wGb9Xvzzdt6q4/+mjR11+//fZxn7HybkV5sdubiZxgaFkBI+L2rhgt8nLXeVbjJYLTyKmWlDx2W8ixNAHy9GMJeS+R8/hpmURY9EN1Fo3INXvzp9aJFGjVm5P8ptET5YeNniwf8qIV70MnndtZJgtD6jFJ2Xwlna+485+vPe648VP0eUzS5Of3Hnywu+SRR8aTDSLyuAKBEgImIpeSrrSN2ifRlwjJSlS1xJrLz8lHumeOnsq2hF3tPXKuD+8L+Qfhi3SXJlIcL4SPxUfITqRnqXzSRF5aWWsPu6HV+Bm/9LnuwK9sHq/YiJzz64jX/0ar4/yVsFq8op2OAN1uoJ0N2vlIW+83nPexbtvOm8a/H/KuS7rTdty23ytqVP/uJ+/p9oy2yHd+9K+73TdcOd5KP/nZZ8f/084ETYA+dcop4/ft4woEeiHyPFEnck9/s6yQvUQvKZ2/p4zk8fY1q/JcBurPI59ve6d+eB+l/nP8pbao3NI/Gjba1j0iekk/Hl88xpA+nnILkZM861PnVFd78r10+EwtkRNxX7t19XvLHgyi7uwiQKt52m6np+yJzOMKBDQEZvpktxbXoa3fFtnRNhBACKDVdGt7ej/84iv2HSaC5LWW0ypRerhN2g2o6Su9h05t6anydB2WPVj29oIONf3NQpv0gF16poFW9d86/PDx6pt+jisQsCIQRG5FKuoFAg4EWonc0dXgVYlovnDXXYP3s6wd0Or7a8ce2/3diSfGITDLGgSNdi8skRMulqe2G/GL5nOIQOlAl75MoW10fuBMX7KnIYdOhfuV//rCyrvWdCTphd/6ymCq0KtrD65/+1j+XSe/u9t74GK/J33z2R8eHdV6xgqe8/YNgMECIQSbEVhoIjejEBUDgUDAjAA9Uf3H990HH6LLzxXnwvmpZHFKmRn+qBgIrEIgiDyCIhAIBAKBQCAQmGMEgsjn2HmheiCQENAeOovVbsRJILDYCASRL7Z/w7oFRYBeP/vIY4915z3+ONzi5hDkT4gTyT8wOuWMrnTKWRD/ggZNmLWwCASRL6xrw7BFRYCeIv/c3XevHH2afxGrZHPNwTCJ8PN73elzn7XYWo5ErZXd0u4de/as4Nkip6WtxY8t8qPt4iIw00Q+1Klei+BOdCpa/sS+9glTwsJzkM0iYEc2zPPrYX+5fft4JU4fzLhudLxn+voVsikvT8RO/9M74nTm+bTILN8hyOMrf588TSDSbgG3NZ3Zzj8mc7pA0NOy0zJ26ACYL2WfWrW0aakjnXWf5FHZPL3TLh3yRLYM8RYAOigq5Zih+uc+r/76WUvwWNsGkZeRQkSeWmr1hsQXHchjeTXQaqM1nvJ6iPQsZG+RUaMbavO7DzzQXfrww+N3j9MHTJAuvPy3Hnqou+TxZ9xnrKcVNR0vumnHLeoX0JAdreVE7vRsQMsRtKVJRPqQTNJR++hMjR354Tbp2+S0IiciT98bt8g9ZvNXOzorn747T28T0CSFLjrL/Zvv+Wj3wPGvvcYnEYr1fID3//NrX3obghAtNlrrTJLIk07auNNObbTaZK1Xfda6tYOoNwwCVpKz1utbSwuR93EWe63eiPhmmciJvOh4Vjpp7cujz1v+/YYNcIeB23v93fd1Rzz5QxE+WvVSH3RJ273j73mPiOLbd//7uE5a1aXT3zwnsOWfD1177Onjs8iJyM5cu6lbd/93V50hX+NvIkc6Ke2xT3y9e+iaX6vaeUhfQKvpX2rzG6OJ2LlPPtkRiW8bvSt/x+5tqmj6pGm6rLdJaDV91caN42bbR59mpUlLushnP/n8890f3n+/+kU38j9NFmkCN+tb/5Yx3Zf/LETed1+avGoit56tXlr1pfZaeVJc+5a1tqqUzhP3bCNbzhKvXdVy+8lWz1nuqH3CrkTknq13zQ+l4JoUkdfizw9s0c5JTzamOqUDZbiMdDAMb58ngRw/acVTmtXTyovukxOZ04Ein/n4F7vHtlwkukOScfYHP91d/hcfaFrNTjJR5X0RoWz76feNST+tnOmTqdJFddNnVKel7yz0SySufT/eqqNn618aJ/kYysdHzbcISGfehzRGkezS+LRggj6GRDK0/qWc4ckPqe6gRJ6TE/qIhkY4JSJH8tGKT3MUJwjL7zWThPwjMF57eH0+GaDf0Yocbb17bMrxnAcizweZNCDRDN+zrcbJFMnmg1lKBrSqovvltEKjlS0lWfrONr+k1ST97fxb/q378De+ZMlXUWcABF5c86Zuy/pjuld//hPdnbf/07iHX9y1a9Xkikj4iBdfXNk2H0AVk0ja1aDVuRRjXIC0zS1Nljmx53JyGZbxaalTGle12+BoHKMcUSJyKV9ok4Lqe+TWFXkCzlu/1K5WHiI0Hoh9EBGaKHCSzPuswQvpLOnjnUCZRnxhAsHty2Vpuy7WPj31UKIhWX0OUi4PybbaQvdIr/j8b3bnbL3R2iTqzSAC9KWzHaPt70/u3DmD2r2m0qNHb+w+smm9ST80vlC5d2JQGq/aiplPjmvGJGqDiDwnZ+/EJcfItCK3EISXeFD9IPItrq12wsviJ8uEpSTLNIJfr4R00SYtyPcePUp1LYmkdZCiRJFvC9Y+SEQyXvqb88dHptK9aVqlxxUI9IFAvh1Pq/DrLr2q+9rWfzSJRuMLja1EzHln2jb0PBJ5rrOElwR0KU+YiZyE1tzDLSXlSRB5DoR3i9hDRDXE1yoftbeS4TRX5KXbClbdTRmlUAklmlJiyMWh2TYicqsszU6uAx0UQw9SfWi0RRtXINCCAD1fQP/o3vql73xn94M/udX85Ho+SSUdPGNBGnu143WWV+SIyD2TexORS0QlbZP2SfQomaOJgHcrnQe89564tz+P/lwX5I/cFqSXRuR88uZJCpJ9uTxkv3VyJGFj0bM2MVjJ1yLfIku7d1dKUumjJiccdcr4gTB+Edmnp9ItWC1anfTKmefp+loMLAfg0AN7yU+08n189LwDvyQ5dM+admCO+uW/Gr9+RtfPjJ6Epwch+/pOPMmk1xw//9nvj+VLhNwHUXN7+TYz78N6D1kj8lxmaZxp4y8n4lJ8oJ2HVF5akVvJ3EXkPLHnSRQl5ppyCZx8FYcmDrx9zao8l4H688hP2CX56IG+EjGW2nP5vB4qT0Rast+S2DQbEdFL/fP4y+t4sJcGIBrwUrJKchIW2pPvpQQotc2xrSHy1N6SRKjuSaP3kL94+XssLl2pQ58a/c4ZF3Tv++5/ut9Fd3U0QGVaZd545JHdo6NXqogMpYseBkwXPRR44Tevbn76vUTqRORbn7q32zvSS7vS6328DrU/9Xs3q/rRq2j0Ctqdo1f7aLJAD0huOPOSbs1LL3Sn7bhtLJJP+p46/cKRj3+hu+G8j43LPW9V8BU5b49ik48tqX9+a0oif46VZ4zmOqDxy8exZL+GoYZtboN7a32A8TNRkdat54kqlXWGVsrT0iv67QcBS6Jq6QnJR+V53xfs3t1duWPHmNToyXe60ulnOXkQAd66dm1367p1K08u08E0tAq0XvzkNWpHxEJP3bdepRPbEoEOsRMhkfMQ/VixSRMT0osenpvWyWxS/Hli0mpv1HsNgZk+orXFSUHkLehF21YE5ilp0T1QOmCGtmOJCOjAl9JK1YtLSU46hazlkBGSQYeqnPfEE+P/80Ns/vvww7ubjjhibAefJKRtZ348aX7oisVOknvN6EAeIkvPVZpwkB9ouz+/LJOcWfzITRC5JyLa6y4skRM0lu3rdgjrJMSKvA63PlqVtr36kE0y0kEX/ECYvuQPIYcOVPnk1X/QbXh4+xDixzJpO/7B9fuODKXXmX541IaV/u7ZeEa359B1q/qnrd+D9j4//vuhzz49uhWwtTv2Rw90x+3a/1Wtraf+3OhY0ovHR5PSiWlxTQcB6VCWNC7o/6HH33Ssnlyv0vb6QhP55KCNngKBxUCAVounP/NMRx8b6eOBOOtxojXo0WqV7vt+e7TVTyvw/AjSGnnRJhCYVwSCyOfVc6F3IDCHCHBi176+JZoq1coAAABMSURBVJlH5E33fz0fFplDmELlQMCFQBC5C66oHAgEAoFAIBAIzBYCQeSz5Y/QJhAIBAKBQCAQcCEQRO6CKyoHAoFAIBAIBAKzhcD/A3P0ty2QvaBhAAAAAElFTkSuQmCC)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "A7i4BTlxKDG1", "colab": { "base_uri": "https://localhost:8080/", "height": 502 }, "outputId": "f34edf37-5c64-4c12-ab19-fd002f705b69" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", "\n", "\n", "\n", "

CIVIT.AI

\n", "

.

\n", "

.

\n", "

.

\n", "

.

\n", "

.

\n", "

.

\n", "

.

\n", "

.

\n", "\n", "\n" ] }, "metadata": {} } ], "source": [ "#@title ## **_Buka Civitai melalui google colab_**\n", "# @markdown buka web dengan sekali klik\n", "\n", "# @markdown [TEKAN TULISAN CIVIT.AI]\n", "\n", "%%html\n", "\n", "\n", "\n", "\n", "

CIVIT.AI

\n", "

.

\n", "

.

\n", "

.

\n", "

.

\n", "

.

\n", "

.

\n", "

.

\n", "

.

\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "id": "frYxBNQhVHSK" }, "source": [ "##***Fitur Download dan Upload***\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "cellView": "form", "id": "LphRDI1JVHS8" }, "outputs": [], "source": [ "#@title ## **_Download Hasil Stable Diffusion_**\n", "\n", "# @markdown Centang di bawah ini jika ingin menyimpannya di Google Drive\n", "\n", "import os\n", "\n", "from pydrive.auth import GoogleAuth\n", "from pydrive.drive import GoogleDrive\n", "from google.colab import auth, drive\n", "from oauth2client.client import GoogleCredentials\n", "from colablib.colored_print import cprint, print_line\n", "\n", "%store -r\n", "\n", "os.chdir(output_dir)\n", "\n", "use_drive = False # @param {type:\"boolean\"}\n", "folder_name = \"colab-ui\" # @param {type: \"string\"}\n", "filename = \"output.zip\" # @param {type: \"string\"}\n", "save_as = filename\n", "\n", "if os.path.exists(filename):\n", " i = 1\n", " while os.path.exists(f\"waifu({i}).zip\"):\n", " i += 1\n", " filename = f\"waifu({i}).zip\"\n", "\n", "os.system('zip -r /content/outputs.zip .')\n", "\n", "if use_drive:\n", " auth.authenticate_user()\n", " gauth = GoogleAuth()\n", " gauth.credentials = GoogleCredentials.get_application_default()\n", " drive = GoogleDrive(gauth)\n", "\n", " def create_folder(folder_name):\n", " file_list = drive.ListFile({\n", " \"q\": f\"title='{folder_name}' and mimeType='application/vnd.google-apps.folder' and trashed=false\"\n", " }).GetList()\n", " if file_list:\n", " cprint(\"Debug: Folder exists\", color=\"green\")\n", " folder_id = file_list[0][\"id\"]\n", " else:\n", " cprint(\"Debug: Creating folder\", color=\"green\")\n", " file = drive.CreateFile({\n", " \"title\": folder_name,\n", " \"mimeType\": \"application/vnd.google-apps.folder\"\n", " })\n", " file.Upload()\n", " folder_id = file.attr[\"metadata\"][\"id\"]\n", " return folder_id\n", "\n", " def upload_file(file_name, folder_id, save_as):\n", " file_list = drive.ListFile({\"q\": f\"title='{save_as}' and trashed=false\"}).GetList()\n", " if file_list:\n", " cprint(\"Debug: File already exists\", color=\"green\")\n", " i = 1\n", " while True:\n", " new_name = f\"{os.path.splitext(save_as)[0]}({i}){os.path.splitext(save_as)[1]}\"\n", " file_list = drive.ListFile({\"q\": f\"title='{new_name}' and trashed=false\"}).GetList()\n", " if not file_list:\n", " save_as = new_name\n", " break\n", " i += 1\n", " file = drive.CreateFile({\"title\": save_as, \"parents\": [{\"id\": folder_id}]})\n", " file.SetContentFile(file_name)\n", " file.Upload()\n", " file.InsertPermission({\"type\": \"anyone\", \"value\": \"anyone\", \"role\": \"reader\"})\n", " return file.attr[\"metadata\"][\"id\"]\n", "\n", " file_id = upload_file(\"/content/outputs.zip\", create_folder(folder_name), save_as)\n", " cprint(f\"Your sharing link: https://drive.google.com/file/d/{file_id}/view?usp=sharing\", color=\"green\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "cellView": "form", "id": "DscmcGPtVHTd" }, "outputs": [], "source": [ "#@title ## **_Login Akun dan Konfirmasi Letak Penyimpan Huggingface_**\n", "from huggingface_hub import login\n", "from huggingface_hub import HfApi\n", "from huggingface_hub.utils import validate_repo_id, HfHubHTTPError\n", "\n", "# @markdown Login akun Huggingface Hub (Jika belum punya akun, bisa daftar dulu [**Join di sini**](https://huggingface.co/join))\n", "# @markdown > Dapatkan huggingface [disini](https://huggingface.co/settings/tokens)\n", "write_token = \"\" # @param {type:\"string\"}\n", "# @markdown Masukan Nama organisasi, Jika tidak ada bisa di kosongkan.\n", "# @markdown >tekan [Masuk](https://huggingface.co/organizations/INDONESIA-AI/share/rcGdQObpefOQvqndOutQcfYFZfRYVGitTy) untuk bergabung ke Komunitas Huggingface saya\n", "orgs_name = \"INDONESIA-AI\" # @param{type:\"string\"}\n", "# @markdown Masukan repositori model dan dataset huggingface, kosongkan jika ingin terbuat secara otomatis.\n", "model_name = \"Model-Checkpoint-Collection\" # @param{type:\"string\"}\n", "dataset_name = \"\" # @param{type:\"string\"}\n", "# @markdown Simpan sebagi menjadi Privat\n", "make_private = False # @param{type:\"boolean\"}\n", "\n", "def authenticate(write_token):\n", " login(write_token, add_to_git_credential=True)\n", " api = HfApi()\n", " return api.whoami(write_token), api\n", "\n", "\n", "def create_repo(api, user, orgs_name, repo_name, repo_type, make_private=False):\n", " global model_repo\n", " global datasets_repo\n", "\n", " if orgs_name == \"\":\n", " repo_id = user[\"name\"] + \"/\" + repo_name.strip()\n", " else:\n", " repo_id = orgs_name + \"/\" + repo_name.strip()\n", "\n", " try:\n", " validate_repo_id(repo_id)\n", " api.create_repo(repo_id=repo_id, repo_type=repo_type, private=make_private)\n", " print(f\"{repo_type.capitalize()} repo '{repo_id}' didn't exist, creating repo\")\n", " except HfHubHTTPError as e:\n", " print(f\"{repo_type.capitalize()} repo '{repo_id}' exists, skipping create repo\")\n", "\n", " if repo_type == \"model\":\n", " model_repo = repo_id\n", " print(f\"{repo_type.capitalize()} repo '{repo_id}' link: https://huggingface.co/{repo_id}\\n\")\n", " else:\n", " datasets_repo = repo_id\n", " print(f\"{repo_type.capitalize()} repo '{repo_id}' link: https://huggingface.co/datasets/{repo_id}\\n\")\n", "\n", "user, api = authenticate(write_token)\n", "\n", "if model_name:\n", " create_repo(api, user, orgs_name, model_name, \"model\", make_private)\n", "if dataset_name:\n", " create_repo(api, user, orgs_name, dataset_name, \"dataset\", make_private)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "cellView": "form", "id": "vb6LoMwPVHTh" }, "outputs": [], "source": [ "#@title ## **_Proses Upload ke Huggingface_**\n", "\n", "from huggingface_hub import HfApi\n", "from pathlib import Path\n", "\n", "%store -r\n", "\n", "api = HfApi()\n", "\n", "# @markdown Masukkan tata letak file yang ingin di Upload\n", "model_path = \"/content/cape-update-terus/models/Stable-diffusion/\" # @param {type :\"string\"}\n", "#@markdown Masukkan tata letak file path dan config (jika ada)\n", "path_in_repo = \"\" # @param {type :\"string\"}\n", "config_path = \"\" # @param {type :\"string\"}\n", "\n", "# @markdown Masukan informasi untuk Upload\n", "commit_message = \"upload\" # @param {type :\"string\"}\n", "\n", "if not commit_message:\n", " commit_message = f\"feat: upload {project_name} lora model\"\n", "\n", "def upload_to_hf(model_path, is_folder, is_config):\n", " path_obj = Path(model_path)\n", " trained_model = path_obj.parts[-1]\n", "\n", " if path_in_repo:\n", " trained_model = path_in_repo\n", "\n", " if is_config:\n", " trained_model = f\"{project_name}_config\"\n", "\n", " print(f\"Uploading {trained_model} to https://huggingface.co/{model_repo}\")\n", " print(\"Please wait...\")\n", "\n", " if is_folder:\n", " api.upload_folder(\n", " folder_path=model_path,\n", " path_in_repo=trained_model,\n", " repo_id=model_repo,\n", " commit_message=commit_message,\n", " ignore_patterns=\".ipynb_checkpoints\",\n", " )\n", " print(f\"Upload success, located at https://huggingface.co/{model_repo}/tree/main\\n\")\n", " else:\n", " api.upload_file(\n", " path_or_fileobj=model_path,\n", " path_in_repo=trained_model,\n", " repo_id=model_repo,\n", " commit_message=commit_message,\n", " )\n", " print(f\"Upload success, located at https://huggingface.co/{model_repo}/blob/main/{trained_model}\\n\")\n", "\n", "def upload():\n", " is_model_file = model_path.endswith((\".ckpt\", \".safetensors\", \".pt\", \".png\", \".zip\"))\n", " upload_to_hf(model_path, not is_model_file, False)\n", "\n", " if config_path:\n", " upload_to_hf(config_path, True, True)\n", "\n", "upload()" ] }, { "cell_type": "markdown", "metadata": { "id": "oEk611XKY623" }, "source": [ "## ***TIPS UNTUK PEMULA***:\n" ] }, { "cell_type": "markdown", "metadata": { "id": "zJQ46qgv_s2c" }, "source": [ "###***1. Positive Prompt (hal2 yang diinginkan pada gambar)***\n", "Atau dalam kata lain adalah sebuah perintah atau permintaan untuk menyuruh sebuah AI di Stable Diffusion untuk menggambarkan gambar atau melakukan seuatu di stable diffuion sehingga menghasilkan karya seni yang sesuai atau hampir mendekati dengan perintah atau perintaan yang kamu berikan atau yang kamu inginkan\n", "\n", "![Prompt.PNG](data:image/png;base64,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)\n", "\n", "### **contoh sebuah prompt singkat**\n", "\n", "`1 girl`,\n", "`looking at viewer`,\n", "`smile,`,\n", "`standing`,\n", "`long hair`,\n", "`white suit`,\n", "`hair ribbon`,\n", "\n", "### **Jika prompt yang di atas dijadikan sebuah kalimat akan menjadi seperti ini**\n", "\n", "\n", "artinya kamu menginginkan gambar dengan `satu orang gadis` `berrambut panjang` yang `memakai pita rambut`, `sedang melihat kearahmu`,` dengan senyuman.`\n", "\n", "### Prompt hanyalah sebuah detail kecil untuk menggambarkan sesuatu pada gambarmu" ] }, { "cell_type": "markdown", "metadata": { "id": "Lt6QM8kH-uY6" }, "source": [ "###***2. Negative Prompt (hal2 yang tidak diinginkan pada gambar)***\n", "\n", "Atau dalam kata lain adalah sebuah perintah atau larangan untuk menyuruh sebuah AI di Stable Diffusion tidak menggambarkan gambar sesuaitu atau melakukan seuatu di stable diffuion yang tidak kalian inginkan dan sehingga menghasilkan karya seni yang sesuai atau hampir mendekati dengan perintah atau larangan yang kamu berikan atau yang kamu inginkan\n", "\n", "![Negative Prompt.PNG](data:image/png;base64,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)\n", "\n", "seperti contoh :\n", "\n", "`bad anatomy`,\n", "`bad hands`,\n", "`bar censor`,\n", "`censored`,\n", "`disconnected limbs`,\n", "`extra digits`,\n", "`fewer digits`,\n", "`floating limbs`,\n", "`low quality`,\n", "`low res`,\n", "`missing fingers`,\n", "`missing limbs`,\n", "`mutated fingers`,\n", "`mutated hands`,\n", "`normal quality`,\n", "`out of frame`,\n", "`poorly drawn`,\n", "`porn`,\n", "`trademark`,\n", "`ugly`,\n", "`watermark`,\n", "`worst quality`,\n", "\n", "### **Jika prompt Negatif di atas di artikan dalam bahasa kita**\n", "\n", "\n", "artinya kamu tidak menginginkan gambar yang memiliki `anatomi yang buruk`, `tangan yang buruk`, `sensor bar`, `disensor`, `anggota badan yang terputus`, `angka tambahan`, `lebih sedikit angka`, `anggota badan mengambang`, `kualitas rendah`, `resolusi rendah`, `jari-jari yang hilang`, `anggota badan yang hilang`, `jari yang bermutasi`, `tangan yang bermutasi`, `kualitas normal`, `keluar dari frame`, `digambar dengan buruk`, `pornografi`, `tanda air`, `kualitas buruk`,\n", "\n", "### Negatif Prompt hanyalah sebuah larangan yang diberikan oleh dirimu untuk AI agar AI tidak menggambarkan sesuatu yang tidak di inginkan pada yang akan di buat" ] }, { "cell_type": "markdown", "metadata": { "id": "nrHVl52htUR1" }, "source": [ "###***3.Cara Menggunakan Additional Networks*** **Sulit digunkan untuk Pengguna HandPhone**: \n", "\n", "* Langkah Pertama Letakkan model LoRA yang memiliki Format seperti(*.pt, *.ckpt atau *.safetensors) di dalam folder sd-webui-additional-networks/models/LoRA.\n", "\n", "* Buka panel \"Additional Networks\" dari bagian kiri bawah Web UI.\n", "\n", "* Tekan \"Refresh models\" untuk memperbarui daftar model.\n", "\n", "* Pilih \"LoRA\" untuk \"Modul jaringan 1\".\n", "\n", "* Pilih nama file model LoRA di \"Model 1\".\n", "\n", "* Tetapkan bobot model (bobot negatif mungkin dapat bekerja tetapi tidak diharapkan.)\n", "\n", "* Ulangi untuk modul/model/bobot 2 sampai 5 jika anda memiliki model lain. Model diterapkan dalam urutan 1 sampai 5.\n", "\n", "* Kalian dapat menghasilkan gambar dengan model dengan jaringan tambahan ini." ] }, { "cell_type": "markdown", "metadata": { "id": "4lKK5Ab-Aiim" }, "source": [ "###***4.Cara Menggunakan LoRA***\n", "\n", "Cara untuk mengetahui model LoRA apa saja yang dimiliki :\n", "\n", "![17](https://drive.google.com/uc?export=view&id=1mZKUl2hZ0n0MpKNK6cge9ovQuGYfKQc0)\n", "\n", "Tekan Tombol Kotak Merah yang ada lingkaran putih ini\n", "\n", "setelah tombol kotak kecil merah di klik akan muncul menu berikut :\n", "\n", "![18](https://drive.google.com/uc?export=view&id=1hpAd80k71tqS8SruYMGoSJi-nYdeGDVs)\n", "\n", "Tekan model LoRA untuk Menggunkannya, Kemudian model LoRA tecantum ke prompt. `Bukan yang di Negatif Prompt`\n", "\n", "Format nama Lora yang akan keluar :\n", "\n", "`1girl`, `smile`, ``\n", "\n", "angka 1 di belakang lora di tujukan untuk besaran lora yang akan digunakan,\n", "angka 1 artinya `100%`\n", "\n", "Contoh\n", "`0.1` = `10%`\n", "`0.2` = `20%`\n", "`0.3` = `30%`\n", "Dan seterusnya\n", "\n", "jika kalian menginginkan penggunaan Dua LoRA atau lebih, kalian dapat mengurangi Skala/Rasio Loranya.\n", "\n", "**Contoh :**\n", "\n", "`1girl, smile, `\n", "\n", "Lora doll_japan `0.7` dan Lora doll_korea` 0.3`\n", "\n", "artinya adalah Lora doll_japan akan keluar sebesar `70%`dan lora doll_korea akan keluar sebesar `30%`\n" ] }, { "cell_type": "markdown", "metadata": { "id": "zN8PL0tl3oMI" }, "source": [ "\n", "###***5. Cara Mengganti Checkpoint yang dimiliki***\n", "\n", "tekan Model Checkpoint untuk melihat model apa saja yang dimiliki :\n", "\n", "![Ubah Model 1.jpg](data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBaRXhpZgAATU0AKgAAAAgABQMBAAUAAAABAAAASgMDAAEAAAABAAAAAFEQAAEAAAABAQAAAFERAAQAAAABAAAOw1ESAAQAAAABAAAOwwAAAAAAAYagAACxj//bAEMAAgEBAgEBAgICAgICAgIDBQMDAwMDBgQEAwUHBgcHBwYHBwgJCwkICAoIBwcKDQoKCwwMDAwHCQ4PDQwOCwwMDP/bAEMBAgICAwMDBgMDBgwIBwgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIAI0CDQMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APw7oor7t+IHh/4Z/C7RotQ17w/4ZsLOaYW6Sf2KkuZCrMFwkZPRWOcY4rLOc8WAlTh7Nzc72S30t0+Z+keG/hfPiyhjMU8ZTw1PCqDlKppG0+ezvdJJcmt31R8JUV9fD4sfAckAWnhkk/8AUuP/APGK2rfVvg/cwq66T4ZUMMgSaCI2/JogRXnLibE/9AVX/wABf+R9i/A/J/8AopcD/wCDYf8AyZ8T0V9t/b/hB/0CvCn/AIJV/wDjdH2/4Qf9Arwp/wCCVf8A43T/ANZcT/0BVf8AwF/5B/xBDJ/+ilwP/g2H/wAmfElFfbf2/wCEH/QK8Kf+CVf/AI3R9v8AhB/0CvCn/glX/wCN0f6y4n/oCq/+Av8AyD/iCGT/APRS4H/wbD/5M+JKK+2/t/wg/wCgV4U/8Eq//G6Pt/wg/wCgV4U/8Eq//G6P9ZcT/wBAVX/wF/5B/wAQQyf/AKKXA/8Ag2H/AMmfElFfbf2/4Qf9Arwp/wCCVf8A43R9v+EH/QK8Kf8AglX/AON0f6y4n/oCq/8AgL/yD/iCGT/9FLgf/BsP/kz4kor7b+3/AAg/6BXhT/wSr/8AG6Pt/wAIP+gV4U/8Eq//ABuj/WXE/wDQFV/8Bf8AkH/EEMn/AOilwP8A4Nh/8mfElFfbf2/4Qf8AQK8Kf+CVf/jdH2/4Qf8AQK8Kf+CVf/jdH+suJ/6Aqv8A4C/8g/4ghk//AEUuB/8ABsP/AJM+JKK+2/t/wg/6BXhT/wAEq/8Axuj7f8IP+gV4U/8ABKv/AMbo/wBZcT/0BVf/AAF/5B/xBDJ/+ilwP/g2H/yZ8SUV9t/b/hB/0CvCn/glX/43R9v+EH/QK8Kf+CVf/jdH+suJ/wCgKr/4C/8AIP8AiCGT/wDRS4H/AMGw/wDkz4kor7b+3/CD/oFeFP8AwSr/APG6Pt/wg/6BXhT/AMEq/wDxuj/WXE/9AVX/AMBf+Qf8QQyf/opcD/4Nh/8AJnxJRX239v8AhB/0CvCn/glX/wCN0fb/AIQf9Arwp/4JV/8AjdH+suJ/6Aqv/gL/AMg/4ghk/wD0UuB/8Gw/+TPiSivtHVfE/wAGdFtzNc6X4aWIdWTw+ZAv12wnH41mf8LZ+A//AD6eGf8AwnH/APjFJ8T4j/oCq/8AgL/yGvA/J/8AopcF/wCDY/8AyZ8g0V9ff8LZ+A//AD6eGf8AwnH/APjFH/C2fgP/AM+nhn/wnH/+MUf6z4j/AKAqv/gL/wAg/wCIHZR/0UuC/wDBsf8A5M+QaK+vv+Fs/Af/AJ9PDP8A4Tj/APxij/hbPwH/AOfTwz/4Tj//ABij/WfEf9AVX/wF/wCQf8QOyj/opcF/4Nj/APJnyDRX19/wtn4D/wDPp4Z/8Jx//jFH/C2fgP8A8+nhn/wnH/8AjFH+s+I/6Aqv/gL/AMg/4gdlH/RS4L/wbH/5M+QaK+vv+Fs/Af8A59PDP/hOP/8AGKP+Fs/Af/n08M/+E4//AMYo/wBZ8R/0BVf/AAF/5B/xA7KP+ilwX/g2P/yZ8g0V9ff8LZ+A/wDz6eGf/Ccf/wCMUf8AC2fgP/z6eGf/AAnH/wDjFH+s+I/6Aqv/AIC/8g/4gdlH/RS4L/wbH/5M+QaK+vv+Fs/Af/n08M/+E4//AMYo/wCFs/Af/n08M/8AhOP/APGKP9Z8R/0BVf8AwF/5B/xA7KP+ilwX/g2P/wAmfINFfX3/AAtn4D/8+nhn/wAJx/8A4xR/wtn4D/8APp4Z/wDCcf8A+MUf6z4j/oCq/wDgL/yD/iB2Uf8ARS4L/wAGx/8Akz5Bor6+/wCFs/Af/n08M/8AhOP/APGKP+Fs/Af/AJ9PDP8A4Tj/APxij/WfEf8AQFV/8Bf+Qf8AEDso/wCilwX/AINj/wDJnyDRX19/wtn4D/8APp4Z/wDCcf8A+MUf8LZ+A/8Az6eGf/Ccf/4xR/rPiP8AoCq/+Av/ACD/AIgdlH/RS4L/AMGx/wDkz5Bor6+/aQ8EeEf+Ga9T1zQ9B0K2+0w2lxaXdvp0cEvlyTw4YHaGXKt04OCQa+Qa9fJc3jmNGVaMHHlk42e90k/1PzzxK8Pq3B+Y0svrV41vaUo1VKF+W0pSit9/hvdaWaCiiivXPzwKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK+vv2/v8Akjmmf9hmL/0RPXyDX2P+3Jpb638NdBso2CyXniC3gUnoC0Uyg/rXyGf/API0wP8Ail/7af0N4Tv/AIwbin/r3Q/OqfKXw7t0ufGNmrqGVd8gB9VjZgfzAr2L4e+A9X+K3j/Q/C+g2h1DXfEuoQaXp1t5qRfabmeRYoo97lUXc7KNzEKM5JA5rN0q2t9CtmsNPjENoqMCcDzLggH5nPUknnHQdABWl8PdG0nxH4+0PTtf1r/hG9Cv9Qt7fUdX+xvef2XbPIqy3PkoQ8vloWfy1IZtuBya+4hHlR/OE5czPoP4af8ABKzxx+0D4O1fxB8KvFHgP4q6V4ct7ybWf+EeuL5LzTHhtTcQwtZXdrBdyvd7WitzBDIjyo6syBWI8I0z4OeL9a+Gmo+NLLwr4ku/B2kXAtL7XodMnk0yymJjAiluAvlI5M0QCswP71OPmGf0S+DX7cvww0D4OfEDRfin8UvB/jz4r/EbwfrPgvTvHuj+E9Ug/smxl0y3hiTW7x7WC6v/ADJra3WNxZ3M8XlSFpis21PFPg745+Evwo+EJN1468B+I/ENl4H8XaAJ75PFcmsWV1dwaza2lvpCLBHp0dhOtzbTn7UglV768Z/LbascRnLW6G4x0szwf4vfsi+L/hno8mu2WieJNd8HWmj6HqV94jh0WddM0+bUtLsL8Wss43RI6G/iiG5wXyjbV3hRT8Z/szeINO+MGj+CfC9lrHjbXdb8P6PrttZ6Xpkk13N9u0e21R4kgj3u/kpOylh1WIuQoJA+kLn4/eD9Ov77xzL8bftkS/BC3+Hll4K0+y1iTUJrmTw3BpkljMZoIrKKziv3nvmKTyqWgDJG8jgjH0L49fDmH4saz9v1bwfr2j+PPhB4Y8LP/blrrcek6RqWnw6F58GofYkjvflfSJtj2fmozy225thm8tqcuwnFHzh8Pfgd4g+IPx90P4a/Zv7D8U654gt/DPkatHJbf2feS3K22y4XaZI9kjYcbCy7T8pIxXR+N/2VrzRvhpqnjHwr4q8N/Erw14cuLe21++8OWuqInh57kuLU3IvrO2YJM0UqK8YdA6BXKNJEJO80v49aLZf8FLfhz451jVvB6eFvCXiDwt5t74WtdVOk2um6ZHYwL5Md8n25/Kt7YK3mKzu6OV3AqTTll+G37Ov7N3j3TNM8e2fxL8e/Eu3g0BE0C0vrPR/D2mQX1jqMlxPJf2kE09zNNaRRRxRIEjRZneRmZEqnJ6CSR7Bpn/BGC88XXuot4Z8TePPEmlX/AIoHhHwxfQfDDVLdLu6jijF5d6oJ2T+y7C1vJfsrzEzyl4LplgIgcV83/tA/st6z8JPjveeDtE0rx5rdtJrH9h6Nc6r4RutEvtduhHbv5cVjIXlV2F1bukZPmmO5t2ZEMoQfQnij9rj4e6j+134G8UQ+IN+haP8AtH+IvHt5c/YbkeTot1e6HLBd7DHvO9LO5PlgGUeXgoCyg8f+xJ8VfA2lf8KZ/wCEp8b6P4J/4VJ8UJfGt/8A2pY6jcf2tZz/ANi/u7T7HbXGZk/sqbcs/kr++h2s+ZPLiLmtWU1HZHhHhD9nvx/8QfAOqeLNA8D+MNc8LaH5v9o6xp+jXNzp+n+VGJZfOnRDHHsjZXbcw2qwJwDmuv8AFX7JGp6t4s8NaB8MovGHxS13UvB+n+J9b07TvB9/Bd6BLcosjW5iKs88KJLbMt2gEUq3MZXgjPYfAPxl4Ptf2cNV0nxB8Q9H0r7Lp+v3mnae1nrFp4h07VbrT2gMdhPZpJZT2d+lvp1tci/ZSIhdJHHDkXE/SeJfjt4V+K/gPxl4Gs/iLZ+CrbxVo/w7NxqWpW+prpl6ND8OGyvNPmW0t5p3cX0sToGhMLfYmfzAVh8ynKVxJI+cPh38HPF/xevVtvCXhXxJ4ouWuEtBFpGmT3rmZ4ppkixErHe0VtcSBepS3lbGEYjH8Q+HtQ8I6/faTq1jeaXqul3ElpeWd3C0FxaTRsUkikjYBkdWBUqwBBBBGa+m/wBpn9pXwnq/gj4zaB4L8W6xqUXi3xB4NjkvZbKbT5fG0Wl6TqEGo6ncx7m/4+dRaC8K3DmV5J1kYGRXK7H7Vv7VPwzn/wCCzCfGTwS39p/Dmw8YaF4mZ9L01rOW++zrZzXrpBMsJ86SeO4JMm3fIxYt824tTd9hOK7nj+h/sSeP3u/F+l6/4W8YeF/FPh7w/aa7p2g6h4fuYtQ177TrNhpUUUMThZPmkvWKsqvuaAoBlsryH/DPfj//AIWx/wAIF/wg/jD/AITr/oXP7Guf7W/1Pn/8euzzf9T+8+79z5unNe7yfHe/+Gvwx+JmnX37Qv8Awsa88V+D73S9Jj0y78Qv9kubzX9Hu9QjY31pbhPtkEd68pUlZvLkEp3Ogf0jxd+1T8Gtf8S+FrK1bwffwa58APDvgfxBPrmm6vbaTHr1jf2VzKNQbT1jvpdlvp8cSTW3mAutshJhVykqcuw+VHyB4Q/Z78f/ABB8fap4T0DwP4w1zxTofm/2jo+n6Nc3Ooaf5Ugil86BEMkeyRlRtyjazAHBOK1779mbxBqNv8MoPC9lrHjDXfiX4fuNdttI0vTJLi7h8nUtSsniRI97zYTTmmLBVwrkEYQsfeL79pe38U3HxG8N2HxT8H/De81bUPBl7pev+HR4ktvDzWegabcWsFpGTBNqfnRySWMqmeLaZbGSTzFZYd+xcftV+BvFvwYT4Va14o0e81jxl4PvtH8S/E7UoNRvvsN5beKtT1yzEam0+2tDeu0X2iQh2b7XayNGj2UsUz55dgUV3Pli5/Z78f2XgG+8WTeB/GEPhbTPs/2zWH0a5XT7X7RHBLB5k5Ty082O5tnTLDetxERkOpNPU/g54v0X4aad40vfCviS08HavcG0sdem0yePTL2YGQGKK4K+U7gwygqrE/un4+U4+y/iD8QNF+E3imfxRr/xixPP8ANK8Iad4H0+31W41C4/tDwjZ28VpMzwx2MVmtxdNqDbbiT5owREZm+Xj7n43+BvFlpfeNdf+J32m1tvhBb+AdO+H76dqN3qE15Do0GnRRyb4l0+Gzj1JG1ZHW4kZWhicRLcNiNKb7A4rueP+Nv2SNTl1rwlpvw6i8YfErUdc8P6XqOqWtl4Pv7afRtSvbWa8XTgjKzXH+iwNPHPGAk0SvIgKoxo8C/sH/FX4gfCf4m+NbTwhrFtoXwkzF4ha6tJop4blZo45rVYthczQI7TTggLBFEzSMhaNX7z43ftOaFrvwE8a+HvD/iS8W58T2/w0tJ7SFLiBNRh0fwxcWt/FLlQrJDf/ZsK5w7okiBgm8fQf7Qn7YPwQ+MHj79szwx4a8XaP4Y0L45/8InqPhzXrnQ7+DSZrnT5IZ9QE8cFs91HNLM87hzblZHWRmcFlLpzl2/rT+vkNRifnFHAl24hkUNHN+7dT0ZTwRXjVe0Wf/H5F7OP51Y/4SHUP+f68/7/ADf41c4cwoT5Tw+ivcP+Eh1D/n+vP+/zf40f8JDqH/P9ef8Af5v8an2PmX7byPD6K9w/4SHUP+f68/7/ADf40f8ACQ6h/wA/15/3+b/Gj2PmHtvI8Por3D/hIdQ/5/rz/v8AN/jR/wAJDqH/AD/Xn/f5v8aPY+Ye28jw+ivcP+Eh1D/n+vP+/wA3+NH/AAkOof8AP9ef9/m/xo9j5h7byPD6K9w/4SHUP+f68/7/ADf40f8ACQ6h/wA/15/3+b/Gj2PmHtvI8Por3D/hIdQ/5/rz/v8AN/jR/wAJDqH/AD/Xn/f5v8aPY+Ye28jw+ivcP+Eh1D/n+vP+/wA3+NH/AAkOof8AP9ef9/m/xo9j5h7byPD6K9w/4SHUP+f68/7/ADf40f8ACQ6h/wA/15/3+b/Gj2PmHtvI8Por3D/hIdQ/5/rz/v8AN/jT47htailSchriONpEkxhm2jJVvXgE5PPFL2PmHtvI9L+LP/Jh9p/2BtK/9Dtq+Qa+4/Hn/Jr0H/YOsf8A0KGvn8dBXx/BdO+Hr6/8vZflE/oj6SFS2cZX/wBgND/0qqeOUV7JRX2HsfM/nf23keN0V7JVHW9AttetWjnjUsR8sgHzIfUGh0vMFV8jymipLu2azu5YXxvhcofqDio6xNkwooooAKKKKACiiigAooooAKKKKACiiigAooooAK+1v2u/+Rc8H/8AY1WX/oEtfFNfa37Xf/IueD/+xqsv/QJa+Rz7/kaYD/FL/wBtP6F8J/8AkhuKf+vVD86p4cjmNgwOCKf5kTcmNwT/AHXwP5VHXr/7KPw9/wCFq+HvizoGn6H/AMJJ4uv/AAfF/wAIzp1vZfbNSuLxNc0mSX7FEoaRplslvWbygWEC3BPyB6+5btqfzckeSb4f+ecv/fY/wo3w/wDPOX/vsf4V9j+JfBen/Af4l/GBr7wD4bGteC/gx4OvodK1zQ1KaTrEo8Jxz3L2zBR9pWW5uHdZVKyO8qTpLHJLG/d/G79kzTfi98WPBngnwp4a0ebx18fvgh4e8caPb22n2Gk2Vl4jt4TLcGAwRwraw3NjZagphGYXuruN5AoSOS3z9qi+Rn5+74f+ecv/AH2P8K9I8D/slePfiR8HJ/iBovhuW98I22oXulyX/wDaVrHtubPTJdVuY/LdxIdllBLLkLtbbtUlyFP0v8LPAWjfF34y/FfxH8IPB95qXgLwjcaL4W0ubSvhla/EDXLq3S0nt4r46ZdrbWkSXv8AZr3VzcvELiOeWGNPlmuC3R2XwA0nwf8AGfX/AAv4G8MZvI/GHxv8K6VbWVu91qF1bW3hWCKxsg53TT7DK4jVizbpnIyzsSOp0GoH5+74f+ecv/fY/wAK7D4Q/AfxP8eP+Eo/4RTRpdV/4Qzw/d+KdY/02CD7Hptrs8+f96V37d6/Im5znhTg16H+x98I9A+KfxG8I2Ph+61jX/H7/wBo313oF94Nj1LTY4LSxvLoyWgW936jeBLeNobOe3jgmnKxSs0O7zPbP2pfgTo3gvw34xv7zwteab4hv/gxa6/dDW/BFr4Svre//wCE7ttPW4XSoGeCwc2MaRDyCvmxs0jfNPJucp2dhKOlz5Q+FH7Pvjn48fb/APhBvAfjXxn/AGV5f23+wtJuNR+x+Zu8vzPJjbZu2Pt3YzsbGcGsf4e+BNR+Kvj7Q/C+gWEt/rviTULfS9OtvtEcX2i5nkWKKPe+1F3OyjLEKM5JA5r3/wCA/wAEtP8AEOvm58G+B/jZ+0N8MYri3uNX0HSYV0C4Op27MYvt1vZPqbrbG3nnjjmPkPIZrpYZFMEufo/4G+I57T9pyfxj4a0PwH46ubn9ofUtS+IPju08Nxarb6B4etruymgvo5J2uYtIsJjcapOLoOJCLMEXJFsxpSqW2CMLnwT8T/gP4n+DP2r/AISXRpdN+x+INT8LTf6bBNs1LTvs/wBsg/dls+X9qg+cfI2/5WbDY4/fD/zzl/77H+Ffpl4+8F+CvGfxY8Z2vid/t/ie8+N/xS07wBohtxPBqnieeHRRphu1lja3azW5WNHSZwrS3FsJEe2+1FPLPir8Etdv/wBlu88ReJPhlZ6J+0HpGj3Nxd+G4fBVvo0Np4JM80MviSXT4beKFb9LuWSzDsu+O1VLlYFaKO+UjV2uNw7HxBvh/wCecv8A32P8KN8P/POX/vsf4V9v/DL9mH4k/Cb9n34g+Ctd+EFnp+v+GrfxLqWq63q/gex8QWPkrpXz2txqy5n0e5to7OS7svKZhdSajaOVS3ljmmuav+z9e/Df9iLV/EuseDvJl8KeD/Dvi7w9fD4XWqeHmuru/wBHZHOvTu9xqs0ltfTiexuY2tVlkuERPLtYAH7RC5GfInxs+A/if9nPxZbaB410aXQddudPt9TbTpb2CS7s4p08yJbmKMs9tMUKsYJgkqqylkAZc83PoF1baBa6tLpuox6Ve3E1pb3jIRbzzQrE8sSSFdrOizwsyg5UTRkgBlz+n3jTStD+Lvx9+Juo6n4F1jxveab8YPEuheKNI8C/CDSfEeoXvh+C5t2tY7mZXgm0yaYzamiajEDdXDLIWlZrOLZx9/FbfH39gn9hq313TdH1P4aeG/GGoaX8RdRtNOgtbTw1bHWrOCOO+vYERrDzrW43uWkia4Z0mkMkgSQSqu1xun2Pzl3w/wDPOX/vsf4Ub4f+ecv/AH2P8K+9vEvw/wBG0H4teEZfFfwq8SS6rB4X8eahef8ACZ/Ce1+H2ma7b2nhua4sreOy0+fZK9vcJPI9zGYrhftMAEgMURS5F8M4fE3w5/Za+Ltj4A0fxV4u8c+H/GGna3oeheENGaK5+yX09la6ja6GkEcOoXlqNQS4aAKfNj05CxiSOWdX7Tb+v62EoM+Cdc8SXXie9judTu9R1G5it4LRJbm6MzpDBEkMMQLAkJHFHHGi9FRFUAAAVT3w/wDPOX/vsf4V91658OvFnhLxp8ZYNA+E/g/xX8Y1/wCEPg0/R7b4bwz3OkaNc6VLd3V+PDxSa2tbxmi0uO8byZI7ee9mjjZfORjzfxW8IaN+yB4V+MraT4S8B3fijQPFHgrT9upWtr4kt/CN/eaJq9xq9hb+c08MqQ3cctrsuDcbRAjMXuIY50aqL+vkDgfHG+H/AJ5y/wDfY/wrsPE3wM13wf8ACfw9421K30u20LxXvbS1/t6xfULqNZriBpvsSyG6SETWs8fmvEI90eN2WXP0X+178P8AxHpv7GWg6pefDnR/Bmj6XqGg6JJcyeCbGxlv7mPS7yIXema7a/8AIZs777LNeXDyZWOSWzELzITKx8JbHSb7xv8Aswtq+gaP4r+x/C/xBfaZoeqRvNaa3qsGreK5tNs3hRla486+jtYhbg5nZxFhvM2k59LoFHWx4BqX7NXjnSfAvw98Rr4Zvp9M+K9xdWfhNraWO8uNamtrhbaaKKCImUOJnRAroC5YbN3WsPQ/g54v8T/EuTwXpnhXxJqPjGK4ntH0G20yebU0mgDmaI26qZQ8YjkLrtyuxsgYNfa37evhTx58Yv2L/wBkvwnL4OvH+J1pceM7TUvCeieFo9NvrCYXVndLE2l2kMfkObOSG5KiFS0cqzEESbzkfHf4OeL4f2y/2xvC7+FfEieJviFb6ld+FtJOmTi+8Swnxnp10JbKHbvuUNva3M26IMPLt5nztjYhRqf187A4HxR4h8Pah4R1++0nVrG80vVdLuJLS8s7uFoLi0mjYpJFJGwDI6sCpVgCCCCM1c+HvgLVvir4+0PwvoFp9v13xJqFvpenW3mpF9ouZ5Fiij3uVRdzsoyxCjOSQOa+4vDXwf13xj8WvF2qaV4cvNbufBnhfwH4Y1aLSvhpb/EHXNJvh4bhintTpd5IlrAkc+nzxXM0g+0QTwQwqFEtwK7D4G+CtP8A2e/2nJ7b4eeAfDd1pXhP9ofUrTxfr13oa67ceBfCum3dkLN5Li6Ey6ZbFZdSkN6fLlc2Bbz8W7YHV0GqZ8OaX+x78VfEfj7xZ4X0X4eeMPEmu+BtQfS9fttC0ubVv7LuUkkiMcj2yyIMvDKFIJVvLYqSBmuc0z4OeL9a+Gmo+NLLwr4ku/B2kXAtL7XodMnk0yymJjAiluAvlI5M0QCswP71OPmGf0e8QaJp/wATvi94t8OXtt8VJtK0b9pfxZrWu6z4M8SrpVv8PoWn0yODXdSzZ3CxpEqXzwzyPbhBbXmJMbynhHwr8Pahe/DT4ZeNIbG8m8HeFfgx428Pa1ryQs2maRqdyfFYtrG5uAPKhuZTf2Ijhdg7/bbfap81NwqjauDgfMn/AAz34/8A+FT/APCe/wDCD+MP+EF/6GP+xrn+yf8AXeR/x9bPK/137v733/l68UfFf9nvx/8AAf7B/wAJz4H8YeDP7V8z7F/bujXOnfbPL2+Z5fnIu/bvTdtzjeucZFfX/wAfvBFt8XvgpHraRfEjSdvwv8FeG9A8UX3jCC28EeI7lBocM+iRLNaxxJ5ExvbiWP7cyxXGm3MzqnlyeWaN4BstJ8A+CdA+L3gPxh8O/wDhNPjB4Yv/ABzqPxH1O7i1DxzE0d9He3cEssdp9ms7Xzrhp2xPKG1aAyXSeWnmCqMXIfK/gL9kzxz8SPhdaeNtOsNHtvCN74gfwtHq+qeINO0q0XUls2vTA73U8Yj/AHClg74RmwgYuwU8h8QvAWrfCrx9rnhfX7T7BrvhvULjS9RtvNSX7PcwSNFLHvQsjbXVhlSVOMgkc193ftdeJfFmpf8ABIm8svHvgjR/hl4pHxvi1OPwrZeFIfC/2DTbjRbpbaUWaRRyNC0kN1FHcTb3k+yuhlcxHb8sf8FCf+T+vjj/ANlA17/043FOE23qEopHkFFFFaEBRRRQAUUUUAFFW9A1qXw7rVrfwx28stpKsqpPEJY3IOcMp4Ir0Z/E3gTQkbxVptmZtZuhiDQZ499pptx/FMWP+sj5BRPXOenA2CR5dVvRP+PyT/r3n/8ART1WmmaeZ5GChnYsdqhRk+gHA+gqzon/AB+Sf9e8/wD6KemgPdPHn/Jr0H/YOsf/AEKGvn8dBX0B48/5Neg/7B1j/wChQ18/joK+M4K/3av/ANfZflE/or6SX/I4yv8A7AaH/pdU9g/YZ/ZfX9sH9onRvArag2nPq8kcEUgO0GSWeKCMM+1tih5lYkIxwpAGTkfoD4l/4NsbDwBerZ+K/i34C8IajJ5jx2Ws+L4bW4lhWV40nVTaHMcnlllPXBwwVgyr8g/8EftetPCv7a+g6pqGp3OiWGmm3urnUbeJZZrCNL+0Zp0RkkDMigsFKOCVA2t0P60/8FC/gJ8SfjD+1TNPodj4z8TfD3V/s2o6BqcJvte0mzhuoYTPNE0InMcZlV2Mca52KmxCnlg/reU4SlVVOFTlipKTcpK7vFpWV3bre29k36/yJnWOrUp1JUuaTi4JRi7K0k3d2V7aWu9LtL0/Lf8A4KB/8EuJf2GLPXbTVZdZt9a0N4ZF+0PHPaanbSSiJZoHWNCUYtkN1BRkZVcMF+PK/cP/AIOM/A/iH4cfsU/DrQtZk0WOw0XTn0zTbKyaW5mtY7ebS4szXjiIXDOqo+VtoAhLLh+Hr8PK8rM5UpKlVpRS5o68uzalKN/nbpddm937OUe2j7WlWk5cs9ObdJwjJJ+nNu0n3S2Xk/iP/kYb/wD6+JP/AEI1Tq54j/5GG/8A+viT/wBCNU68Bn0cdgooopDCiiigAooooAKKKKACiiigAooooAKKKKACvtb9rs48N+ECeAPFVl/6BLXxTX2D+3rdSWXwl0iaJzHLDrkLow6qRDOQfzr5HPn/AMKmA/xS/wDbT+hfCf8A5Ibin/r1Q/OqeREEEgggiisrTfiRpGuWwmvLldLvG/1sbRSPEzd2QoGIB64I46ZPWp/+Eu0H/oOWf/gPc/8AxqvuVNdz+cHCXYvUVR/4S7Qf+g5Z/wDgPc//ABqj/hLtB/6Dln/4D3P/AMao5l3Dkl2L1FUf+Eu0H/oOWf8A4D3P/wAao/4S7Qf+g5Z/+A9z/wDGqOZdw5Jdi9RVH/hLtB/6Dln/AOA9z/8AGqP+Eu0H/oOWf/gPc/8AxqjmXcOSXYvUVR/4S7Qf+g5Z/wDgPc//ABqj/hLtB/6Dln/4D3P/AMao5l3Dkl2L1FUf+Eu0H/oOWf8A4D3P/wAao/4S7Qf+g5Z/+A9z/wDGqOZdw5Jdi9RVH/hLtB/6Dln/AOA9z/8AGqP+Eu0H/oOWf/gPc/8AxqjmXcOSXYvUVR/4S7Qf+g5Z/wDgPc//ABqj/hLtB/6Dln/4D3P/AMao5l3Dkl2L1FUf+Eu0H/oOWf8A4D3P/wAao/4S7Qf+g5Z/+A9z/wDGqOZdw5Jdi9RVH/hLtB/6Dln/AOA9z/8AGqP+Eu0H/oOWf/gPc/8AxqjmXcOSXYvV2Hib46+I/GHwn8PeCtSk0e50LwpvXS2/sSxTULWNpridoftqwi6eEzXU8nlPKY90mduVXHA/8JdoP/Qcs/8AwHuf/jVH/CXaD/0HLP8A8B7n/wCNUNxBRl2L1FUf+Eu0H/oOWf8A4D3P/wAao/4S7Qf+g5Z/+A9z/wDGqOZdw5Jdi9RVH/hLtB/6Dln/AOA9z/8AGqP+Eu0H/oOWf/gPc/8AxqjmXcOSXYvUVR/4S7Qf+g5Z/wDgPc//ABqj/hLtB/6Dln/4D3P/AMao5l3Dkl2L1FUf+Eu0H/oOWf8A4D3P/wAao/4S7Qf+g5Z/+A9z/wDGqOZdw5JdjpvAXji9+G/iy01rToNHubyy3+XHqmk2uq2jbkZDvtrqOSGThiRvQ7Wwwwygg+IXj3Vvir4+1zxRr939v13xJqFxqmo3PlJF9ouZ5Gllk2IFRdzsxwoCjOAAOK5n/hLtB/6Dln/4D3P/AMao/wCEu0H/AKDln/4D3P8A8aovHcOWXYvUVR/4S7Qf+g5Z/wDgPc//ABqj/hLtB/6Dln/4D3P/AMao5l3Dkl2L1FUf+Eu0H/oOWf8A4D3P/wAao/4S7Qf+g5Z/+A9z/wDGqOZdw5Jdi9RVH/hLtB/6Dln/AOA9z/8AGqP+Eu0H/oOWf/gPc/8AxqjmXcOSXYvUVR/4S7Qf+g5Z/wDgPc//ABqj/hLtB/6Dln/4D3P/AMao5l3Dkl2L1W9E/wCPuQ9hbz/+inrG/wCEu0H/AKDln/4D3P8A8apZPiPoVhBJHb35mkmG15fIkVVX0UEZ59TjjijnXcXK+x9GePP+TXoP+wdY/wDoUNfP46Cvd/iHrFtbfslW97JJttjpmnuH2k8M0ODjGe4r5vHxB0gAA3Z4/wCmT/4V8bwVJfVq/wD19l+UT+ivpJRbzjK7L/mBof8ApdU9C+EXxd1f4K+LTrGji1ed4HtpYrmMvFNGxB2nBDDDKrZUg5Udsg/QXhT/AILMfHfwHoFvpOheKLvRdKtN3kWdjqWoW1vDuYu22NLkKuWZmOByST1NfHf/AAsHR/8An7P/AH6f/wCJo/4WDo//AD9n/v0//wATX31LM69On7GE/dve2jV/mfzPWyrD1avtp0/eta+qdvkfRHx+/wCCg/xL/aV8CL4c8Vasb3S1uZLoI81xOVeWXz5ivnSuEMkwWR2UBnZQSTk58RrF/wCFg6P/AM/Z/wC/T/8AxNUtb+Jlnb2rCyL3E7DCkoVVfc56/SscRjJ1pc9WV2v+H/Ntm+GwVOhHkoxsn/wF+SS9DjvERz4gvyOQbiT/ANCNU6V3aR2ZiWZjkk9zSV57Z6KQUUUUhhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABX3b8QPEPwz+KWjRafr3iDwzf2cMwuEj/tpIsSBWUNlJAejMMZxzXwlRXhZzkax8qc/aODhezW+tuvyP1Tw38UJ8J0MZhXg6eJp4pQUo1NY2hz2VrNNPn1uuiPr7/hU3wH/AOfvwz/4Ub//AB+j/hU3wH/5+/DP/hRv/wDH6+XfDPw113xjbmbTtOmuIQSPMJWNCR1ALEA/hWr/AMKB8Xf9An/yah/+Lrz1wtif+gyr97/zPsX45ZP/ANE3gf8AwVD/AOQPo3/hU3wH/wCfvwz/AOFG/wD8fo/4VN8B/wDn78M/+FG//wAfr5y/4UD4u/6BP/k1D/8AF0f8KB8Xf9An/wAmof8A4un/AKq4r/oMq/e/8w/4jnk3/RN4H/wVD/5A+jf+FTfAf/n78M/+FG//AMfo/wCFTfAf/n78M/8AhRv/APH6+cv+FA+Lv+gT/wCTUP8A8XR/woHxd/0Cf/JqH/4uj/VXFf8AQZV+9/5h/wARzyb/AKJvA/8AgqH/AMgfRv8Awqb4D/8AP34Z/wDCjf8A+P0f8Km+A/8Az9+Gf/Cjf/4/Xzl/woHxd/0Cf/JqH/4uj/hQPi7/AKBP/k1D/wDF0f6q4r/oMq/e/wDMP+I55N/0TeB/8FQ/+QPo3/hU3wH/AOfvwz/4Ub//AB+j/hU3wH/5+/DP/hRv/wDH6+cv+FA+Lv8AoE/+TUP/AMXUd18C/FdnA0j6RIyryQk0UjfgFYk/gKX+quK/6DKv3v8AzD/iOeT/APRN4H/wVD/5A+kf+FTfAf8A5+/DP/hRv/8AH6P+FTfAf/n78M/+FG//AMfr5DlieCVo5FZHQlWVhgqR1BHrTaX+rGI/6Dav/gT/AMx/8Rxyj/omsF/4Kj/8gfX3/CpvgP8A8/fhn/wo3/8Aj9H/AAqb4D/8/fhn/wAKN/8A4/XyDRR/qxiP+g2r/wCBP/MP+I45R/0TWC/8FR/+QPr7/hU3wH/5+/DP/hRv/wDH6P8AhU3wH/5+/DP/AIUb/wDx+vkGij/VjEf9BtX/AMCf+Yf8Rxyj/omsF/4Kj/8AIH19/wAKm+A//P34Z/8ACjf/AOP0f8Km+A//AD9+Gf8Awo3/APj9fINFH+rGI/6Dav8A4E/8w/4jjlH/AETWC/8ABUf/AJA+vv8AhU3wH/5+/DP/AIUb/wDx+j/hU3wH/wCfvwz/AOFG/wD8fr5Boo/1YxH/AEG1f/An/mH/ABHHKP8AomsF/wCCo/8AyB9ff8Km+A//AD9+Gf8Awo3/APj9H/CpvgP/AM/fhn/wo3/+P18g0Uf6sYj/AKDav/gT/wAw/wCI45R/0TWC/wDBUf8A5A+vv+FTfAf/AJ+/DP8A4Ub/APx+j/hU3wH/AOfvwz/4Ub//AB+vkGij/VjEf9BtX/wJ/wCYf8Rxyj/omsF/4Kj/APIH19/wqb4D/wDP34Z/8KN//j9H/CpvgP8A8/fhn/wo3/8Aj9fINFH+rGI/6Dav/gT/AMw/4jjlH/RNYL/wVH/5A+vv+FTfAf8A5+/DP/hRv/8AH6P+FTfAf/n78M/+FG//AMfr5Boo/wBWMR/0G1f/AAJ/5h/xHHKP+iawX/gqP/yB9ff8Km+A/wDz9+Gf/Cjf/wCP0f8ACpvgP/z9+Gf/AAo3/wDj9fINFH+rGI/6Dav/AIE/8w/4jjlH/RNYL/wVH/5A+vv+FTfAf/n78M/+FG//AMfo/wCFTfAf/n78M/8AhRv/APH6+QaKP9WMR/0G1f8AwJ/5h/xHHKP+iawX/gqP/wAgfX3/AAqb4D/8/fhn/wAKN/8A4/R/wqb4D/8AP34Z/wDCjf8A+P18g0Uf6sYj/oNq/wDgT/zD/iOOUf8ARNYL/wAFR/8AkD6+/wCFTfAf/n78M/8AhRv/APH6P+FTfAf/AJ+/DP8A4Ub/APx+vkGij/VjEf8AQbV/8Cf+Yf8AEcco/wCiawX/AIKj/wDIH19/wqb4D/8AP34Z/wDCjf8A+P0f8Km+A/8Az9+Gf/Cjf/4/XyDRR/qxiP8AoNq/+BP/ADD/AIjjlH/RNYL/AMFR/wDkD6+/4VN8B/8An78M/wDhRv8A/H6P+FTfAf8A5+/DP/hRv/8AH6+QaKP9WMR/0G1f/An/AJh/xHHKP+iawX/gqP8A8gfX3/CpvgP/AM/fhn/wo3/+P0f8Km+A/wDz9+Gf/Cjf/wCP18g0Uf6sYj/oNq/+BP8AzD/iOOUf9E1gv/BUf/kD6+/aQ8b+Ef8AhmvU9D0PXdCufs0Npb2lpb6jHPL5cc8OFA3Fmwq9eTgEmvkGiivXyXKI5dRlRjNy5pOV3vdpL9D888SvEKtxhmNLMK1CNH2dKNJRhfltGUpLfb4rWWlkgooor1z88CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACr3hfS11zxLp1k5KpeXUcDEdQGcL/WqNbHw7/5KBoX/AGELf/0atNbiZp/FvxPcal4rvNORjBpulStaW1qhxFGsZ25x6nGc1ylbHxE/5KBrv/YQuP8A0a1Y9OT1CK0Citi+8Aavp3w/0vxVPabNB1nULzSrO681D51zaRWstxHsB3rsS9tjuYBT5mASVYA8C+ANX+JWtz6dolp9tvbbT77VZI/NSPbbWVpNeXMmXIB2QQSvtB3NtwoLEAzcZj0V7F8Nv2CPil8X/COjax4a0TRtW/4SPT7vVdI0uLxNpa65q9tavcxzyW2mNcC9n2vaXICxwszmFtobFcF4t+HcHhTwJ4T1pfE3hrVbnxTb3N0+k2E8st/oaRXL26i9BjEUbymN5ERJHfy9juEEke4uBzVFFFABU1hqFxpd2lxbTS288ZyrxsVZT9RUNFFwOz+KTrrugeHPEDxpHeavBLHclRgSvC4Tefcg/pXGV2PjT/kkngr/ALfv/Rwrjqqe5MdgorS8GeG/+Ey8YaTo/wBv0zSv7VvIbP7bqM/kWdn5jhPNmkwdkS53M2DhQTg4qtrNjFpesXdrBe22pQW0zxR3dusiw3SqxAkQSKjhWAyA6K2CMqDkCSitRRRQAUV6T8RP2R/Hvwu8O63quq6Xpktl4ZvI9P1ltM1yw1STRp3Z0RLqO1mke3y8bpmUKN4253EA8j8SfBsXw88danocOuaH4kTTJjAdS0eWSawumAG4xPIiF1DZXeF2ttypZSrEC5iUUUUAFFFFABRRRQAUV6T+zB+zBrH7VfjDWNH0fWPDWg/2Do82u3t7rt29rZwWsLxJIzSLG+3HmhiWAUKrEkY5zfj38E/+FDeMLbR/+Eu8EeM/tNmt59t8Lap/aNnFud08p5Nq4lGzcVxwroc80Bc4iitK18Iaje+D7/X4rbfpOmXltp9zP5ijy57hJ5IU2k7juW2nOQCBs5IJXObQAUUUUAFFFFABRRRQAUV7vrX/AATw8cado/gOe01j4fanqHxD0211XTNIXxRaWOpLFcqht1aC8aEu0jMUUQ+YC8bjPTPEeNf2a/EngX4A+CviVdLbXHhnxzNeW9pJbiV3s5beVojHcEoERpCkjRgOxZYnPG0inYVzz+ivSfDX7LPiLxR8RB4divvDVl5Oj6br99qeo6rFYadpdjfRWckc00s2z7n26BWVAzFiQgfjOJ8WPhDL8KrqxK+IfCPifT9UhWe0vdC1aO7R1McbkSQnbcW7L5gUpcRRNuRwAdpNIdzkaK7f42fATWPgN/wiP9sXOmXP/CZ+GrPxTZfY5HfyrW63+Wkm5FxKNh3BdyjjDGsP4Z+Arz4q/Ejw94X06W2h1DxJqVtpVtJcMywxyzyrEjOVDEKGYEkAnGcA9KAMSiul+L3hjw74N+Imo6b4T8Uf8Jn4ftvL+y6z/ZsunfbN0SM/7iUl02uWTk87MjgiuaoAKKKKACiiigAor1K8/ZO1bRvhu+vap4o+H2k6g2mrrNt4euvEMK6veWTRW0ySrGuY0Z4rpHSCWRJ5FSTZE+3BxPjZ8BNY+A3/AAiP9sXOmXP/AAmfhqz8U2X2OR38q1ut/lpJuRcSjYdwXco4wxoC5xFFFFABRXb/ABs+AmsfAb/hEf7YudMuf+Ez8NWfimy+xyO/lWt1v8tJNyLiUbDuC7lHGGNcRQAUUVty+DYofhvB4hbXNDM9zqUmnJo6yyNqQWOKORrlkCbEgJkVFZnDO4cKpCOVAMSiitLxX4Q1HwRqkVlqlt9luZ7O11BE8xX3QXNvHcwPlSR80MsbY6jdggEEAAzaK9S+NP7HfjX4H/tGWvwu1G1tr/xNqU1pBpzWjulpqbXW1YjDLOsYZfMYxlyAoeNwT8pNcR8TPAV58KviR4h8L6jLbTah4b1K50q5kt2ZoZJYJWidkLBSVLKSCQDjGQOlAXMSiiigAooooAKKKKACtj4d/wDJQNC/7CFv/wCjVrHrY+Hf/JQNC/7CFv8A+jVpx3Ew+In/ACUDXf8AsIXH/o1qx62PiJ/yUDXf+whcf+jWrHoluEdj72/Zv+In7V/xD/Y++D//AApfXfjHrupaF8QtZ0gf2Ve3l1p+n28Vl4c/s+1u9zG2js0Zp9sdzi3VWnyAhkr2P/hP7q9+McF1+yVd/ErT/gf4p0/4iL9n0WK40+K78ato2rXMcMdvAEZcWkWjvYRbBsjiUoouUu8flNRUuJVz9Av2Of2Y/jP+zz4f1T9pq58LfFbxT8VtUuNd0fwbpWk6HcavqSau63NhqGsay7QzCBLaWWcLbzL59zcochIkd297/wCCfPh3T/F/h/8A4Jv6Rq9hZappWqW/xVtL2yu4Vnt7uGRblJIpI2BV0ZSVKsCCCQRivyCoocQTPrif9uD4q/D79l74bfEDQvGF7pHjOXxzr+nDVrS3ghuIdNsbTQbi00iMqgEekxS3dw401AtllxmA7U2/UPwy8O+KvB/xA+Ldr8JNe1nwLZeCP2g9Yvtb0T4ceG7y/wDEGuaPbSqLey22dhNBbQwhbhLK3vnWxupLq7DiNbNjJ+U1erfDr9ofQdI+D1j4J8X+A7LxdpWgaze+JNGli1W5024S+uoLOGSC6KFlnsHWxgMkUSwXJK/u7uEFgw0CZjftTePNa+Jn7R3jfW/EFl4l0vVbvWblJNN8QaldalqmjpHIY47Ge4uv38r28aJBulw+IhkA8Dgq7H4/fHXxB+0p8W9W8aeKLn7VrOr+Sjt5ksvlxQQx28EXmSu8snlwxRp5k0kkr7N0kkkjM7cdTQjsfGn/ACSTwV/2/f8Ao4Vx1dj40/5JJ4K/7fv/AEcK46qnv9xMdj0n9jP/AJPA+FH/AGOOkf8ApbDX1N+0n4v1H4afs3/FTxH4fuP7I8RwftD67p9trFtGqajYwTWu+ZLe4A8238wwRBzEyl1UoxKsyn4QopXG0fV3xs+IuraxrX7TvgWea2HgzwlNLcaDokdnDFYaFLbeI7Ozjks4kQLbMYLm4RzEFMvnO0m9iWr0H9r3xb4+8DfC34jyx6x431zwf4s/s+DQ18O2+pad4S8JWCjy3hErWsNvc2zRyLaQG3byLqN2uJVEggUfCFey+KP2vG1HWPGHiDRfDNt4d8X/ABFhvbfxHf2+p3Ulo0V0x+0R2tqzYRZlZvNFy10A+14fsxRABMLHpPxq+BfjX9i/9lHXfBcugeLptQ8azabqXjfVY9KdvD+j28DO1npqXRiKTTmadHlmjkEauscKGT94T9A/teatL4W8Wftm69ZJbR6zoM3ga60u8kto5ZtMuGhWD7RAzqTDOsc0gSVMSRltyMrAEfmhRRcLH1xd/F7xFf8AxV1jwdPqPn+FvEPwpbVNV0ySCJrbUr9vCK6o2oTqV/e3xvUSY3b5nJRR5m0Ba7ePxb4++Hf7Ptj4k8O6x431Dwifhtb6dZ6H4Jt9Ss9M0K/EaSS6hcX0Vqls/lyJNc3DxTeeLl3tJC0CTO3whXsuhfteN4X17R/Fmm+Gbaw+IugabaaPY63Bqd1Haww2tnHaQ3JtQ2XvBHGqMWlNpJHuV7RizMRMLHjVFFFIYUUUUAfUv/BKy0nv/GHxlgtdH/4SG5n+FOtxw6Xsmf8AtJy9qFt9sLLKfMOExGyud3ykHBrT+DnhrxN8OfEXim/8e/CvxL8MPgvqHhq5s/GNnaaRfi2vcrIllLENUebN8t7NaiFlYeWRvwkYnc/I9FNMVj7T+N2tfFSf4N/FnTvD938QX8EWupaFceHLaylvDaQ+DJNP1hbeQIp4s3tYrUTGQZLx4nzKr46X9sjV/F3xD/4Keax8OtH8Sa5omheHoZtX0nT9G0tL02t0NGm1KWe2sg0aSahLNNclJ9wnWWdWWQMiY+B6KLgkfcvjm+8T6tH8Kdbv/AfxB13xdo03iawGl6z4htrvxp5P2WxNu8c4s0uVntZr+S8gjkt5JolHnriDa6fP/wC3Do8ulfFbT5LnW/F2sXd9pv2iSLxdp8dn4l0tftdykVtqO13eWcQpE6yyEM0EsAVUjEajxqihsEgooopDCiiigD7T/aw+LehfBXWP2c/Ei+GLnW/GegfC/wANajpU93qpj0iFo2laPzrWOJZpWV1ZwVuo1LbNyMqsslm9+K9r4M/4J+/s+eFtfn8vwT8Q7PxRo2uM73DR6bjWIJLfUlihYGWW0mVZQhB8xPNi+XzSw+I6KdxWPsr4o/CzxTqq/E34T6bP9l8f2+j+Bru58Nx3RFzrsGmeHit7aweXmO5lillgmEIYlxAzxh2jArxr9p74EaZ8IPAvgzUE8NeLvBOu+IptQa40HxJq0F7fxWcJt0t7oxpbW8kCyytdoBKnzfZtynacnxqii4JH6TRxwfbrGeex0zUP7P8A2R7fUIYdQsob228+CZJoXaGZWjfZLGjgOpGVHFcR4Q8b6+zfsX+N38R+JZPFvjPWb3w9ruqyavcvc6vp8PiGIx2s7Fz5kQ86QFTkMNoOQihfhCii4JH054C1r4vfEj9nmLxR4Au/F2v+OG8V3tv4n1fRJZLrxObVrHTxYRzzxE3v2MmC8CjPkF4Rn51jx5Z+15/wjv8Aw0R4h/4Rf/hGv7M/0bzv+Ed83+x/t32aL7b9j8z5vs32v7R5ePl2bdnyba82oouAUUUUhhRRRQB9OftR/sv/ABN+P/7Rnifxp4V0XXPiL4Z8azXXiLRde0qOa9tJtP8A3rx25kYAxTwxxfZ/sr7ZFeIRKhzGG+k/BetXniz9qb9mX4dXl3cjwZ4v+C9rba5ptvK1qmrxSaVqKGO4eIq8qqFzGGYiJmdo9jO5b80KKaYrH2n+zLd6t8Lvgf8AD3xB4K+G3xB8f2mrw36eKrbwxqkM2m6rcrd3EL2GrWYsbqR1Ni9sUSVkQJcM8KpI0srcj8JvBnxc0z4M+BtU+Cuk6nqWna5o+rJ4rTS7WHUra+vop7xZbbUYHDo//Eua08m3uFKsZiYEMs0hb5aoouFj9E/jz4Z0fx78C/BGgeF7HU7r4133wR0GXTflRludIjLfa7SwxMkn26WJrgyARymS1hliRR5r507uP4l2Pjb9m2Dw7Y6nbfCa58BaHqHjiY2UcXh67ge1EOpPqc0iiCXGm20SAXDMUVE8sKzLn82a7f42fHvWPjz/AMIj/bFtplt/whnhqz8LWX2ON0821td/lvJudsynedxXap4woouFj3f4W6N8RoPhX8HtR+HlpbJ4QuoZ7fxlcxRY0aa5j1a6aWPxG9sPMNmljLalhdnYLeSQpgNJn1P4M/8ACO/8Kf8ACn/CIf8AIpf8NWWf9if63/jx8hPs/wDrf3n+q2ff+b15zX5/UUXCx9y/EPWrzU/hX+1jEt3c2Fp8IfG+kXPgq002VtPtPC8qateWoktIICkcTGJ23FVBdz5jZk+evEf27da8eeI/Eng3UfFV34uv9Cv/AApolxo1zqstxLaXEr6LpzXslu8hKMzTEGUoSS5y3zV4RRRcEj9E/wDgpN8RPC1j8eviT4jv9b+yfEz4afZNI8KWckI23cGoWFq8UsTI29ZbB21W6WbapSe4sz5p2Rwnz/S/D8tz+0N+0rrOgaD4u8QeN9G8byfYovCWsx6d4gtNPlvtQS7ntswXEhUS/Yo5GgjEipNtLrE8yyfFlFFwsfd+k/FrxFYfC39q/wAdR+HNT+HXjay/4RSWOO9too9V026nE1nc3gIt4BFc3MNxcSNLFDEwN25XGQaP2bvFvj5/gz4D8XaNrHjfX9Osf7bn8S+GvB1vqUup+KL+4nnCzX1/BavElzIHhVxPN59vbQRXEDebPGq/CFepeE/2jLDRtB8JDUfCFtqeu/D6EweH7+HVrywTa15Pdk3awuskjRy3EjQvbS2rI2C5mUBQJhY+iv2fvEniLwj8J/BHjHw34B+JXxOm8Tf2lL40Og6xFd2eu3xvbmOW01m2Njdyy7rOS3ZRM6rtuXkiVZXllfkfjT8Sdd+HP/BNf4CWPh/U7nRIPGUPiK11xrEiCbVre31GVYbeaVcO8Ci9uv3RbyyZmJUnBHzH4z8X6j8QfGGra/rFx9s1bXLybUL2fy1j86eVzJI+1AFXLMThQAM8ACs2i4WCiiikMK2Ph3/yUDQv+whb/wDo1ax62Ph3/wAlA0L/ALCFv/6NWnHcTD4if8lA13/sIXH/AKNasetj4if8lA13/sIXH/o1qo6Xot1rUrJawvMyDLYwAv1J4FNrUSehVorZ/wCFf6v/AM+n/kVP8aP+Ff6v/wA+n/kVP8aOV9g5l3Maitn/AIV/q/8Az6f+RU/xo/4V/q//AD6f+RU/xo5X2DmXcxqK2f8AhX+r/wDPp/5FT/Gj/hX+r/8APp/5FT/GjlfYOZdzGorZ/wCFf6v/AM+n/kVP8aP+Ff6v/wA+n/kVP8aOV9g5l3Okim8O+KPh34fsL/xB/ZV3pX2nen2GWfd5ku4crgdAO569sVT/AOEL8I/9Dt/5R5v8ax/+Ff6v/wA+n/kVP8aP+Ff6v/z6f+RU/wAarXqvzFddzY/4Qvwj/wBDt/5R5v8AGj/hC/CP/Q7f+Ueb/Gsf/hX+r/8APp/5FT/Gj/hX+r/8+n/kVP8AGiz/AJfzC67mx/whfhH/AKHb/wAo83+NH/CF+Ef+h2/8o83+NY//AAr/AFf/AJ9P/Iqf40f8K/1f/n0/8ip/jRZ/y/mF13Nj/hC/CP8A0O3/AJR5v8aP+EL8I/8AQ7f+Ueb/ABrH/wCFf6v/AM+n/kVP8aP+Ff6v/wA+n/kVP8aLP+X8wuu5sf8ACF+Ef+h2/wDKPN/jR/whfhH/AKHb/wAo83+NY/8Awr/V/wDn0/8AIqf40f8ACv8AV/8An0/8ip/jRZ/y/mF13Nj/AIQvwj/0O3/lHm/xo/4Qvwj/ANDt/wCUeb/Gsf8A4V/q/wDz6f8AkVP8aP8AhX+r/wDPp/5FT/Giz/l/MLrubH/CF+Ef+h2/8o83+NH/AAhfhH/odv8Ayjzf41j/APCv9X/59P8AyKn+NH/Cv9X/AOfT/wAip/jRZ/y/mF13Nj/hC/CP/Q7f+Ueb/Gj/AIQvwj/0O3/lHm/xrH/4V/q//Pp/5FT/ABo/4V/q/wDz6f8AkVP8aLP+X8wuu5sf8IX4R/6Hb/yjzf40f8IX4R/6Hb/yjzf41j/8K/1f/n0/8ip/jR/wr/V/+fT/AMip/jRZ/wAv5hddzY/4Qvwj/wBDt/5R5v8AGj/hC/CP/Q7f+Ueb/Gsf/hX+r/8APp/5FT/Gj/hX+r/8+n/kVP8AGiz/AJfzC67mx/whfhH/AKHb/wAo83+NH/CF+Ef+h2/8o83+NY//AAr/AFf/AJ9P/Iqf40f8K/1f/n0/8ip/jRZ/y/mF13Nj/hC/CP8A0O3/AJR5v8aP+EL8I/8AQ7f+Ueb/ABrH/wCFf6v/AM+n/kVP8aP+Ff6v/wA+n/kVP8aLP+X8wuu5sf8ACF+Ef+h2/wDKPN/jR/whfhH/AKHb/wAo83+NY/8Awr/V/wDn0/8AIqf40f8ACv8AV/8An0/8ip/jRZ/y/mF13Nj/AIQvwj/0O3/lHm/xo/4Qvwj/ANDt/wCUeb/Gsf8A4V/q/wDz6f8AkVP8aP8AhX+r/wDPp/5FT/Giz/l/MLrubH/CF+Ef+h2/8o83+NH/AAhfhH/odv8Ayjzf41j/APCv9X/59P8AyKn+NH/Cv9X/AOfT/wAip/jRZ/y/mF13Nj/hC/CP/Q7f+Ueb/Gj/AIQvwj/0O3/lHm/xrH/4V/q//Pp/5FT/ABo/4V/q/wDz6f8AkVP8aLP+X8wuu5sf8IX4R/6Hb/yjzf40f8IX4R/6Hb/yjzf41j/8K/1f/n0/8ip/jR/wr/V/+fT/AMip/jRZ/wAv5hddzY/4Qvwj/wBDt/5R5v8AGj/hC/CP/Q7f+Ueb/Gsf/hX+r/8APp/5FT/Gj/hX+r/8+n/kVP8AGiz/AJfzC67mx/whfhH/AKHb/wAo83+NH/CF+Ef+h2/8o83+NY//AAr/AFf/AJ9P/Iqf40f8K/1f/n0/8ip/jRZ/y/mF13Nj/hC/CP8A0O3/AJR5v8aP+EL8I/8AQ7f+Ueb/ABrH/wCFf6v/AM+n/kVP8aP+Ff6v/wA+n/kVP8aLP+X8wuu5sf8ACF+Ef+h2/wDKPN/jR/whfhH/AKHb/wAo83+NY/8Awr/V/wDn0/8AIqf40f8ACv8AV/8An0/8ip/jRZ/y/mF13Nj/AIQvwj/0O3/lHm/xo/4Qvwj/ANDt/wCUeb/Gsf8A4V/q/wDz6f8AkVP8aP8AhX+r/wDPp/5FT/Giz/l/MLrubH/CF+Ef+h2/8o83+NH/AAhfhH/odv8Ayjzf41j/APCv9X/59P8AyKn+NH/Cv9X/AOfT/wAip/jRZ/y/mF13Nj/hC/CP/Q7f+Ueb/Gj/AIQvwj/0O3/lHm/xrH/4V/q//Pp/5FT/ABo/4V/q/wDz6f8AkVP8aLP+X8wuu5sf8IX4R/6Hb/yjzf40f8IX4R/6Hb/yjzf41j/8K/1f/n0/8ip/jR/wr/V/+fT/AMip/jRZ/wAv5hddzY/4Qvwj/wBDt/5R5v8AGj/hC/CP/Q7f+Ueb/Gsf/hX+r/8APp/5FT/Gj/hX+r/8+n/kVP8AGiz/AJfzC67mx/whfhH/AKHb/wAo83+NH/CF+Ef+h2/8o83+NY//AAr/AFf/AJ9P/Iqf40f8K/1f/n0/8ip/jRZ/y/mF13Matj4d/wDJQNC/7CFv/wCjVrHrY+Hf/JQNC/7CFv8A+jVqI7lMPiJ/yUDXf+whcf8Ao1q7rwhYxWHhy0EShfNiWVj3ZmAJJ/z2rhfiJ/yUDXf+whcf+jWrv/Dn/IvWH/XvH/6CK1p/EzKo9EXaKs6VbpcXLeYCyRRvKVBxu2qTjPbOKQ+Ir4/6u5mt07JCxjQfgK2uYleip/8AhIdR/wCghff9/wBv8aP+Eh1H/oIX3/f9v8aXMgIKKn/4SHUf+ghff9/2/wAaP+Eh1H/oIX3/AH/b/GjmQEFFT/8ACQ6j/wBBC+/7/t/jR/wkOo/9BC+/7/t/jRzICCip/wDhIdR/6CF9/wB/2/xo/wCEh1H/AKCF9/3/AG/xo5kBBRU//CQ6j/0EL7/v+3+NH/CQ6j/0EL7/AL/t/jRzICCip/8AhIdR/wCghff9/wBv8aP+Eh1H/oIX3/f9v8aOZAQUVP8A8JDqP/QQvv8Av+3+NH/CQ6j/ANBC+/7/ALf40cyAgoqf/hIdR/6CF9/3/b/Gj/hIdR/6CF9/3/b/ABo5kBBRU/8AwkOo/wDQQvv+/wC3+NH/AAkOo/8AQQvv+/7f40cyAgoqf/hIdR/6CF9/3/b/ABo/4SHUf+ghff8Af9v8aOZAQUVP/wAJDqP/AEEL7/v+3+NH/CQ6j/0EL7/v+3+NHMgIKKn/AOEh1H/oIX3/AH/b/Gj/AISHUf8AoIX3/f8Ab/GjmQEFFT/8JDqP/QQvv+/7f40f8JDqP/QQvv8Av+3+NHMgIKKn/wCEh1H/AKCF9/3/AG/xo/4SHUf+ghff9/2/xo5kBBRU/wDwkOo/9BC+/wC/7f40f8JDqP8A0EL7/v8At/jRzICCip/+Eh1H/oIX3/f9v8aP+Eh1H/oIX3/f9v8AGjmQEFFT/wDCQ6j/ANBC+/7/ALf40f8ACQ6j/wBBC+/7/t/jRzICCip/+Eh1H/oIX3/f9v8AGj/hIdR/6CF9/wB/2/xo5kBBRU//AAkOo/8AQQvv+/7f40f8JDqP/QQvv+/7f40cyAgoqf8A4SHUf+ghff8Af9v8aP8AhIdR/wCghff9/wBv8aOZAQUVP/wkOo/9BC+/7/t/jR/wkOo/9BC+/wC/7f40cyAgoqf/AISHUf8AoIX3/f8Ab/Gj/hIdR/6CF9/3/b/GjmQEFFT/APCQ6j/0EL7/AL/t/jR/wkOo/wDQQvv+/wC3+NHMgIKKn/4SHUf+ghff9/2/xo/4SHUf+ghff9/2/wAaOZAQUVP/AMJDqP8A0EL7/v8At/jR/wAJDqP/AEEL7/v+3+NHMgIKKn/4SHUf+ghff9/2/wAaP+Eh1H/oIX3/AH/b/GjmQEFFT/8ACQ6j/wBBC+/7/t/jR/wkOo/9BC+/7/t/jRzICCip/wDhIdR/6CF9/wB/2/xo/wCEh1H/AKCF9/3/AG/xo5kBBRU//CQ6j/0EL7/v+3+NH/CQ6j/0EL7/AL/t/jRzICCip/8AhIdR/wCghff9/wBv8aP+Eh1H/oIX3/f9v8aOZAf/2Q==)\n", "\n", "Setelah itu kalian bisa memilih Model Checkpoint yang akan digunakan :\n", "\n", "![Ubah Model 2.jpg](data:image/jpeg;base64,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)" ] }, { "cell_type": "markdown", "metadata": { "id": "woa7WJ1-0NwO" }, "source": [ "
\n", "\n", "#***`Beta Test 3 [progress]`***\n" ] }, { "cell_type": "code", "source": [ "#@title **Preview Tema :**\n", "#@markdown untuk melihat preview semua tema yang bisa dipakai klik tombol [ < ] atau [ > ]\n", "\n", "#https://www.w3schools.com/w3css/w3css_slideshow.asp\n", "import IPython\n", "IPython.display.HTML(\n", "\n", "'''\n", "\n", "\n", "W3.CSS\n", "\n", "\n", "\n", "\n", "\n", "
\n", "\n", "
\n", " \n", "
\n", "\n", "
\n", " \n", "
\n", "\n", "
\n", " \n", "
\n", "\n", "
\n", " \n", "
\n", "\n", "
\n", " \n", "
\n", "\n", "
\n", " \n", "
\n", "\n", "
\n", " \n", "
\n", "\n", "
\n", " \n", "
\n", "\n", "
\n", " \n", "
\n", "\n", "\n", "\n", "\n", "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "''')" ], "metadata": { "cellView": "form", "id": "gpPpUbVTYa_m", "colab": { "base_uri": "https://localhost:8080/", "height": 579 }, "outputId": "dc3ca188-1f3a-435e-9bc7-e8f60f52e4a2" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ], "text/html": [ "\n", "\n", "\n", "W3.CSS\n", "\n", "\n", "\n", "\n", "\n", "
\n", "\n", "
\n", " \n", "
\n", "\n", "
\n", " \n", "
\n", "\n", "
\n", " \n", "
\n", "\n", "
\n", " \n", "
\n", "\n", "
\n", " \n", "
\n", "\n", "
\n", " \n", "
\n", "\n", "
\n", " \n", "
\n", "\n", "
\n", " \n", "
\n", "\n", "
\n", " \n", "
\n", "\n", "\n", "\n", "\n", "
\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "metadata": {}, "execution_count": 1 } ] }, { "cell_type": "code", "execution_count": null, "metadata": { "cellView": "form", "id": "8hzYOI0pXdV9" }, "outputs": [], "source": [ "from IPython.display import HTML, display\n", "\n", "def display_text_box(content, width=\"485px\", height=\"30px\"):\n", " html_content = f'''\n", "
{content}
\n", " '''\n", " display(HTML(html_content))\n", "\n", "text_content = \"Terima kasih Telah Menggunakan Notebook google colab StableDiffusion milik Remaja Pekalongan.\"\n", "\n", "display_text_box(text_content, width=\"485px\", height=\"30px\")\n", "\n", "from IPython.display import HTML, Image\n", "\n", "def display_image():\n", " image_url = \"https://i.postimg.cc/Pf3XXMsP/Cuplikan-layar-2023-07-30-165548.png\"\n", " image_html = f''\n", "\n", " display(HTML(image_html))\n", "\n", "display_image()\n", "from IPython.display import HTML\n", "\n", "def create_button_with_link(label, link):\n", " button_id = label.lower().replace(\" \", \"_\")\n", " return f'''\n", " \n", " \n", " \n", " \n", " '''\n", "\n", "subscribe_button = create_button_with_link(\"Subscribe\", \"https://www.youtube.com/@remajapekalongan\")\n", "support_button = create_button_with_link(\"Support\", \"https://ko-fi.com/vorstcavry\")\n", "saweria_button = create_button_with_link(\"Saweria\", \"https://http://saweria.co/vorstcavry\")\n", "discord_button = create_button_with_link(\"Discord\", \"https://discord.gg/fg9kvMqUmD\")\n", "\n", "buttons_html = f'
{subscribe_button} {support_button} {saweria_button} {discord_button}
'\n", "display(HTML(buttons_html))\n", "\n", "\n", "import os\n", "import time\n", "import json\n", "import base64\n", "import shutil\n", "import subprocess\n", "import threading\n", "import sys\n", "import random\n", "import string\n", "from IPython.display import display, HTML\n", "from google.colab.output import eval_js\n", "from IPython.utils import capture\n", "from tqdm import tqdm\n", "from pydantic import BaseModel\n", "\n", "packages = [\n", " \"pip install gradio_client==0.2.7\",\n", " \"pip install git+https://github.com/Linaqruf/colablib\",\n", " \"pip install --upgrade urllib3 chardet charset_normalizer requests\"\n", " ]\n", "\n", "for install in tqdm(packages, desc=print(\"Tunggu Sebentar...\")):\n", " os.system(install)\n", "\n", "from colablib.utils.py_utils import get_filename\n", "from typing import List, Optional\n", "from colablib.colored_print import cprint, print_line\n", "from colablib.utils import py_utils, config_utils, package_utils\n", "from colablib.utils.config_utils import pastebin_reader as read\n", "from colablib.utils.ubuntu_utils import ubuntu_deps\n", "from colablib.sd_models.downloader import aria2_download, download, get_modelname\n", "from colablib.utils.ubuntu_utils import unionfuse\n", "from colablib.utils.config_utils import read_config\n", "from colablib.utils.git_utils import update_repo, batch_update, validate_repo, reset_repo, patch_repo\n", "\n", "\n", "\n", "\n", "#Variabel\n", "pt = \".pt\"\n", "st = \".safetensors\"\n", "civitai = \"https://civitai.com/api/download/models/\"\n", "masbro = {\n", "\n", " 0 : ( \"stable\" )\n", " , 1 : ( \"diffusion\" )\n", " , 2 : ( \"webui\" )\n", " , 3 : ( \"sd\" )\n", " , 4 : ( \"Stable\" )\n", " , 5 : ( \"Diffusion\" )\n", " , 6 : ( \"WebUI\" )\n", " , 7 : ( \"SD\" )\n", "\n", "}\n", "#Import modul\n", "from datetime import datetime\n", "from IPython.display import clear_output\n", "\n", "\n", "#######################\n", "\n", "\n", "#Lokasi folder\n", "sd = f\"{masbro[0]}-{masbro[1]}\"\n", "wui = f\"{masbro[2]}\"\n", "sdwui = f\"{sd}-{wui}\"\n", "basemodelpath = f\"/content/vorst-cavry/models/Stable-diffusion\"\n", "vaepath = f\"/content/vorst-cavry/models/VAE\"\n", "embeddingpath = f\"/content/vorst-cavry/embeddings\"\n", "loramodelpath = f\"/content/vorst-cavry/models/Lora\"\n", "rooppath = f\"/content/vorst-cavry/models/roop\"\n", "contrlnetpath = f\"/content/vorst-cavry/extensions/sd-{wui}-controlnet/models\"\n", "addnetworkpath = f\"/content/vorst-cavry/extensions/sd-{wui}-additional-networks/models/lora\"\n", "esrganpath = f\"/content/vorst-cavry/models/ESRGAN\"\n", "\n", "def isnumber(s):\n", " try:\n", " float(s)\n", " return True\n", " except ValueError:\n", " return False\n", "\n", "\n", "#!apt-get -y install -qq aria2\n", "#!apt-get -y install libcairo2-dev pkg-config python3-dev\n", "#!pip install --upgrade fastapi==0.90.1\n", "#!pip install triton\n", "#!pip install -q torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 torchtext==0.14.1 torchdata==0.5.1 torchmetrics==0.11.4 --extra-index-url https://download.pytorch.org/whl/cu116 -U\n", "\n", "#!apt -y install -qq aria2 libcairo2-dev pkg-config python3-dev\n", "#!pip install -q torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 torchtext==0.14.1 torchdata==0.5.1 torchmetrics==0.11.4 --extra-index-url https://download.pytorch.org/whl/cu116 -U\n", "\n", "#%env TF_CPP_MIN_LOG_LEVEL=1\n", "\n", "#!apt -y update -qq\n", "#!wget https://huggingface.co/vorstcavry/backup-file/resolve/main/libtcmalloc_minimal.so.4 -O /content/libtcmalloc_minimal.so.4\n", "#%env LD_PRELOAD=/content/libtcmalloc_minimal.so.4\n", "\n", "#!apt -y install -qq aria2 libcairo2-dev pkg-config python3-dev\n", "\n", "#######################################\n", "#jika bagian atas tidak berfungsi maka gunakan bagian ini\n", "#########################################\n", "root_dir = \"/content\"\n", "repo_dir = os.path.join(root_dir, \"vorst-cavry\")\n", "tmp_dir = os.path.join(root_dir, \"tmp\")\n", "patches_dir = os.path.join(root_dir, \"patches\")\n", "deps_dir = os.path.join(root_dir, \"deps\")\n", "fused_dir = os.path.join(root_dir, \"fused\")\n", "\n", "# REPO DIR\n", "models_dir = os.path.join(repo_dir, \"models\", \"Stable-diffusion\")\n", "vaes_dir = os.path.join(repo_dir, \"models\", \"VAE\")\n", "hypernetworks_dir = os.path.join(repo_dir, \"models\", \"hypernetworks\")\n", "lora_dir = os.path.join(repo_dir, \"models\", \"Lora\")\n", "control_dir = os.path.join(repo_dir, \"models\", \"ControlNet\")\n", "embeddings_dir = os.path.join(repo_dir, \"embeddings\")\n", "extensions_dir = os.path.join(repo_dir, \"extensions\")\n", "annotator_dir = os.path.join(extensions_dir, f\"sd-{wui}-controlnet\", \"annotator\")\n", "output_subdir = [\"txt2img-images\", \"img2img-images\", \"extras-images\", \"txt2img-grids\", \"img2img-grids\"]\n", "\n", "# CONFIG\n", "config_file = os.path.join(repo_dir, \"config.json\")\n", "ui_config_file = os.path.join(repo_dir, \"ui-config.json\")\n", "style_path = os.path.join(repo_dir, \"style.css\")\n", "download_list = os.path.join(root_dir, \"download_list.txt\")\n", "\n", "\n", "def pre_download(dir, urls, desc, overwrite=False):\n", " gpu_info = py_utils.get_gpu_info()\n", " version = py_utils.get_python_version().split()[0]\n", " major_minor = \".\".join(version.split(\".\")[:2])\n", " xformers_version = \"0.0.20\"\n", " insightface_version = \"0.7.3\"\n", " python_path = f\"/usr/local/lib/python{major_minor}/dist-packages/\"\n", " ffmpy_path = os.path.join(python_path, \"ffmpy-0.3.1.dist-info\")\n", "\n", "def install_dependencies():\n", " ubuntu_deps = [\"aria2\"]\n", " python_deps = [\"ffmpy\"]\n", " cprint(\"Mempersiapkan bahan \", color=\"green\")\n", " subprocess.run([\"apt\", \"install\"] + ubuntu_deps)\n", " subprocess.run([\"pip\", \"install\"] + python_deps)\n", "\n", "install_dependencies()\n", "#install-stablediffusion\n", "\n", "#@markdown **Pilih Tema:**\n", "\n", "#@markdown > Tema `Anapnoe`, `Lobehub` dan `Kitchen` cocok untuk pengguna Mobile.\n", "tema = \"automatic1111\" #@param [\"automatic1111\",\"catppuccin\", \"doki-jupiter\", \"linaqruf\", \"nocrypt-miku\", \"devdark\", \"anapnoe\", \"lobehub\", \"kitchen\"]\n", "gunakan_tema_gelap = False # @param {type: 'boolean'}\n", "#@markdown **Simpan Hasil Gambar di Google Drive:**\n", "\n", "from colablib.utils.git_utils import clone_repo\n", "from colablib.utils.git_utils import update_repo, batch_update, validate_repo, reset_repo, patch_repo\n", "from colablib.colored_print import cprint as cp\n", "from urllib.parse import urlparse\n", "\n", "def git_clone(repo_url, destination_folder):\n", " command = ['git', 'clone', repo_url, destination_folder]\n", " subprocess.call(command)\n", "\n", "def download_with_aria2(url, output_dir):\n", " if not os.path.exists('/usr/bin/aria2c'):\n", " print(\"Error: aria2 tidak terpasang. Silakan pasang terlebih dahulu.\")\n", " return\n", "\n", " if not os.path.exists(output_dir):\n", " print(\"Error: Direktori output tidak ditemukan.\")\n", " return\n", "\n", " command = f'aria2c -d {output_dir} {url}'\n", " os.system(command)\n", "\n", "def delete_directory(path):\n", " try:\n", " os.system(f\"rm -rf {path}\")\n", " except Exception as e:\n", " print(f\"nothing: {str(e)}\")\n", "\n", "if (tema == \"automatic1111\") :\n", " repo_url = 'https://tinyurl.com/Vorst-Cavry-Auto1111'\n", " destination_folder = '/content/vorst-cavry'\n", " git_clone(repo_url, destination_folder)\n", " cp(\"Menggunakan Tema Automatic1111\", color='flat_green')\n", "elif (tema == \"catppuccin\") :\n", " repo_url = 'https://tinyurl.com/Vorst-Cavry-Auto1111'\n", " destination_folder = '/content/vorst-cavry'\n", " git_clone(repo_url, destination_folder)\n", " repo_url = 'https://tinyurl.com/CATPPUCCIN-Repo'\n", " destination_folder = '/content/vorst-cavry/extensions/catppuccin-theme'\n", " git_clone(repo_url, destination_folder)\n", " cp(\"Menggunakan Tema Catppuccin\", color='flat_green')\n", "elif (tema == \"doki-jupiter\") :\n", " repo_url = 'https://tinyurl.com/Vorst-Cavry-Auto1111'\n", " destination_folder = '/content/vorst-cavry'\n", " git_clone(repo_url, destination_folder)\n", " repo_url = 'https://github.com/vorstcavry/doki-theme'\n", " destination_folder = '/content/vorst-cavry/extensions/doki-theme'\n", " git_clone(repo_url, destination_folder)\n", " cp(\"Menggunakan Tema Doki\", color='flat_green')\n", "elif (tema == \"linaqruf\") :\n", " repo_url = 'https://tinyurl.com/Vorst-Cavry-Auto1111'\n", " destination_folder = '/content/vorst-cavry'\n", " git_clone(repo_url, destination_folder)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/ui-config.json'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/config.json'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " cp(\"Menggunakan Tema Linaqruf\", color='flat_green')\n", "elif (tema == \"nocrypt-miku\") :\n", " repo_url = 'https://tinyurl.com/Vorst-Cavry-Auto1111'\n", " destination_folder = '/content/vorst-cavry'\n", " git_clone(repo_url, destination_folder)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/Nocrypt/ui-config.json'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/Nocrypt/config.json'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/Nocrypt/user.css'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/Nocrypt/nohup.out'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/Nocrypt/JetBrainsMono-Regular.woff2'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/Nocrypt/logo.png'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " delete_directory(f\"{repo_dir}/style.css\")\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/Nocrypt/style.css'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " delete_directory(f\"{repo_dir}/webui.py\")\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/Nocrypt/webui.py'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " delete_directory(f\"{repo_dir}/extensions-builtin/extra-options-section/scripts/extra_options_section.py\")\n", " delete_directory(f\"{repo_dir}/modules/ui_settings.py\")\n", " delete_directory(f\"{repo_dir}/modules/scripts.py\")\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/nr/extra_options_section.py'\n", " output_directory = os.path.join(repo_dir, \"extensions-builtin\", \"extra-options-section\", \"scripts\")\n", " download_with_aria2(url, output_directory)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/nr/scripts.py'\n", " output_directory = os.path.join(repo_dir, \"modules\")\n", " download_with_aria2(url, output_directory)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/nr/ui_settings.py'\n", " output_directory = os.path.join(repo_dir, \"modules\")\n", " download_with_aria2(url, output_directory)\n", " cp(\"Menggunakan Tema Nocrypt Miku\", color='flat_green')\n", " cp(\"Maaf Untuk Tema Nocrypt Miku penggunaan Lycoris Masih Belum Stabil\", color='flat_red')\n", "elif (tema == \"devdark\") :\n", " repo_url = 'https://tinyurl.com/Vorst-Cavry-Auto1111'\n", " destination_folder = '/content/vorst-cavry'\n", " git_clone(repo_url, destination_folder)\n", " repo_url = 'https://tinyurl.com/Devdark-Theme'\n", " destination_folder = '/content/vorst-cavry/extensions/devdark-theme'\n", " git_clone(repo_url, destination_folder)\n", " cp(\"Menggunakan Tema Devdark\", color='flat_green')\n", "elif (tema == \"anapnoe\") :\n", " repo_url = 'https://tinyurl.com/Anapnoe-ux-Repo'\n", " destination_folder = '/content/vorst-cavry'\n", " git_clone(repo_url, destination_folder)\n", " hires_prompt_fix = \"https://gist.githubusercontent.com/Linaqruf/8fef456d53604f8c3bcd16722ea7d2f6/raw/a3382087c6e32f9a171f4b5e8aeb572a61682801/0001-Add-New-Label-for-Hires-Prompt.patch\"\n", " patch_repo(url=hires_prompt_fix, dir=patches_dir, cwd=repo_dir, whitespace_fix=True, quiet=True)\n", " shutil.rmtree(patches_dir)\n", " cp(\"Menggunakan Tema Anepnoe\", color='flat_green')\n", "elif (tema == \"lobehub\") :\n", " repo_url = 'https://tinyurl.com/Vorst-Cavry-Auto1111'\n", " destination_folder = '/content/vorst-cavry'\n", " git_clone(repo_url, destination_folder)\n", " repo_url = 'https://tinyurl.com/LOBE-Repo'\n", " destination_folder = '/content/vorst-cavry/extensions/lobe-theme'\n", " git_clone(repo_url, destination_folder)\n", " cp(\"Menggunakan Tema Lobe\", color='flat_green')\n", "elif (tema == \"kitchen\") :\n", " repo_url = 'https://tinyurl.com/Vorst-Cavry-Auto1111'\n", " destination_folder = '/content/vorst-cavry'\n", " git_clone(repo_url, destination_folder)\n", " repo_url = 'https://tinyurl.com/KITCHEN-Repo'\n", " destination_folder = '/content/vorst-cavry/extensions/kitchen-theme'\n", " git_clone(repo_url, destination_folder)\n", " cp(\"Menggunakan Tema Kitchen\", color='flat_green')\n", "else :\n", " pass\n", "\n", "\n", "\n", "drive = False #@param {type:\"boolean\"}\n", "\n", "if drive:\n", " from google.colab import drive\n", " drive.mount('/content/vorst-cavry/outputs')\n", " cp(\"Menggunakan Penyimpanan hasil ke Google Drive\", color='flat_green')\n", " drive = {\n", " \"outdir_samples\": \"outputs/MyDrive/outputs\",\n", " \"outdir_txt2img_samples\": \"outputs/MyDrive/outputs\",\n", " \"outdir_img2img_samples\": \"outputs/MyDrive/outputs\",\n", " \"outdir_extras_samples\": \"outputs/MyDrive/outputs\",\n", " \"outdir_grids\": \"outputs/MyDrive/outputs\",\n", " \"outdir_txt2img_grids\": \"outputs/MyDrive/outputs\",\n", " \"outdir_img2img_grids\": \"outputs/MyDrive/outputs\"\n", " }\n", "else:\n", " cp(\"Menggunakan Penyimpanan hasil ke Google Colab\", color='flat_green')\n", " drive = {\n", " \"outdir_samples\": \"outputs\",\n", " \"outdir_txt2img_samples\": \"outputs\",\n", " \"outdir_img2img_samples\": \"outputs\",\n", " \"outdir_extras_samples\": \"outputs\",\n", " \"outdir_grids\": \"outputs\",\n", " \"outdir_txt2img_grids\": \"outputs\",\n", " \"outdir_img2img_grids\": \"outputs\"\n", " }\n", "\n", "\n", "def download_with_aria2(url, output_dir):\n", " if not os.path.exists('/usr/bin/aria2c'):\n", " print(\"Error: aria2 tidak terpasang. Silakan pasang terlebih dahulu.\")\n", " return\n", "\n", " if not os.path.exists(output_dir):\n", " print(\"Error: Direktori output tidak ditemukan.\")\n", " return\n", "\n", " command = f'aria2c -d {output_dir} {url}'\n", " os.system(command)\n", "\n", "\n", "url = 'https://huggingface.co/vorstcavry/test/resolve/main/styles.csv'\n", "output_directory = os.path.join(repo_dir)\n", "download_with_aria2(url, output_directory)\n", "\n", "#install-bahan-dasar\n", "os.chdir(repo_dir)\n", "def git_clone(repo_url, destination_folder):\n", " command = ['git', 'clone', repo_url, destination_folder]\n", " subprocess.call(command)\n", "\n", "repo_url = 'https://github.com/vorstcavry/lora'\n", "destination_folder = os.path.join(repo_dir, \"models\", \"Lora\", \"Lora-set\")\n", "git_clone(repo_url, destination_folder)\n", "\n", "\n", "def delete_directory(path):\n", " try:\n", " os.system(f\"rm -rf {path}\")\n", " except Exception as e:\n", " print(f\"nothing: {str(e)}\")\n", "\n", "delete_directory(f\"{repo_dir}/models/Lora/Lora-set/.git\")\n", "\n", "os.chdir(repo_dir)\n", "embedding = [\n", " f\"rm -rf {repo_dir}/embeddings\",\n", " f\"git clone https://github.com/vorstcavry/embeddings {repo_dir}/embeddings >/dev/null 2>&1\",\n", " f\"rm -rf {repo_dir}/embeddings/.git\"\n", " ]\n", "\n", "for embedd in tqdm(embedding, desc=cp(\"Mempersipkan Embeddings\", color=\"flat_green\")):\n", " os.system(embedd)\n", "#instal-Preview\n", "#install-upscale\n", "!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/embed/upscale/resolve/main/4x-UltraSharp.pth -d /content/vorst-cavry/models/ESRGAN -o 4x-UltraSharp.pth\n", "#install-ekstension\n", "extensions_url = [\n", " \"KohakuBlueleaf/LyCORIS\",\n", " \"Coyote-A/ultimate-upscale-for-automatic1111\",\n", " \"Iyashinouta/sd-colab-commands-browser\",\n", " \"Iyashinouta/sd-model-downloader\",\n", " \"NoCrypt/inpaint-nav\",\n", " \"IDEA-Research/DWPose\",\n", " \"vorstcavry/sd-civitai-browser\",\n", " \"vorstcavry/vorstcavry-tunnels\",\n", " \"vorstcavry/openpose-editor\",\n", " \"vorstcavry/depth-lib\",\n", " \"vorstcavry/roop\",\n", " \"vorstcavry/ratio-helper\",\n", " f\"Mikubill/sd-{wui}-controlnet\",\n", " f\"deforum-art/deforum-for-automatic1111-{wui}\",\n", " f\"etherealxx/batchlinks-{wui}\",\n", " f\"Uminosachi/sd-{wui}-inpaint-anything\",\n", " f\"Mikubill/sd-{wui}-controlnet\",\n", " f\"DominikDoom/a1111-sd-{wui}-tagcomplete\",\n", " f\"camenduru/sd-{wui}-additional-networks\",\n", " f\"yfszzx/{sdwui}-images-browser\",\n", " ]\n", "\n", "\n", "cp(\"Memperispkan Vorst-Cavry-Auto1111\", color='flat_green')\n", "\n", "root_dir = \"/content\"\n", "repo_dir = os.path.join(root_dir, \"vorst-cavry\")\n", "extensions_dir = os.path.join(repo_dir, \"extensions\")\n", "\n", "os.chdir(extensions_dir)\n", "for batch in tqdm(extensions_url, desc=cp(f\"Mempersiapkan Ekstension\", color=\"flat_green\")):\n", " parse = urlparse(batch)\n", " path = os.path.basename(parse.path)\n", " if not os.path.exists(f\"{extensions_dir}/{path}\"):\n", " clone_repo(f\"https://github.com/{batch}\", quiet=True)\n", " else:\n", " pass\n", "#install-controlnet\n", "#@markdown **Pilih Model/Download Model:**\n", "Pilih_Model = \"cavry_v2\" #@param [\"AOAOKO_PVC_Anime\", \"DeliberateV2_AIO\", \"ChillOutMixNiFP16Fix_Realistic\", \"MeinaPastelV4_Anime\", \"majicmixRealistic_v6\", \"PerfectWorldV2_Realistic\", \"AnythingV5_Anime\", \"anyloraCheckpoint_bakedvaeBlessedFp16\", \"cuteyukimixAdorable_neochapter3\", \"cavry_v2\"]\n", "Custom_Download = \"\" #@param {type:\"string\"}\n", "cpoint = None\n", "cpointurl = None\n", "if Pilih_Model == \"AOAOKO_PVC_Anime\":\n", " cpoint=\"https://civitai.com/api/download/models/18295\"\n", "if Pilih_Model == \"DeliberateV2_AIO\":\n", " cpoint=\"https://civitai.com/api/download/models/15236\"\n", "if Pilih_Model == \"ChillOutMixNiFP16Fix_Realistic\":\n", " cpoint=\"https://civitai.com/api/download/models/11732\"\n", "if Pilih_Model == \"MeinaPastelV4_Anime\":\n", " cpoint=\"https://civitai.com/api/download/models/27135\"\n", "if Pilih_Model == \"majicmixRealistic_v6\":\n", " cpoint=\"https://civitai.com/api/download/models/94640\"\n", "if Pilih_Model == \"PerfectWorldV2_Realistic\":\n", " cpoint=\"https://civitai.com/api/download/models/19084\"\n", "if Pilih_Model == \"AnythingV5_Anime\":\n", " cpoint=\"https://civitai.com/api/download/models/30163\"\n", "if Pilih_Model == \"anyloraCheckpoint_bakedvaeBlessedFp16\":\n", " cpoint=\"https://civitai.com/api/download/models/95489\"\n", "if Pilih_Model == \"cuteyukimixAdorable_neochapter3\":\n", " cpoint=\"https://civitai.com/api/download/models/138620\"\n", "if Pilih_Model == \"cavry_v2\":\n", " cpoint=\"https://civitai.com/api/download/models/134860\"\n", "if Custom_Download:\n", " cpointurl=Custom_Download\n", "else:\n", " pass\n", "\n", "\n", "from colablib.sd_models.downloader import aria2_download as download\n", "import requests\n", "import sys\n", "\n", "def downloading(download_dir=None, url=None, quiet=True):\n", " try:\n", " if url.find(\"https://civitai.com/\")!=-1:\n", " convert = \"\" + url.replace(\"download/models\", \"v1/model-versions\")\n", " req = requests.get(convert, stream=True)\n", " path = req.json()['files'][0]['name']\n", " size = int(req.json()['files'][0]['sizeKB'])/1e+9\n", " imgurl = req.json()['images'][0]['url']\n", " namepath = os.path.splitext(path)[0]\n", " imgpath = f\"{namepath}.preview.png\"\n", " if not os.path.exists(f\"{download_dir}/{path}\"):\n", " download(download_dir, path, url, quiet=True)\n", " download(download_dir, imgpath, imgurl, quiet=True)\n", " else:\n", " pass\n", " else:\n", " parse = urlparse(url)\n", " path = os.path.basename(parse.path)\n", " convert = url.replace('resolve', 'raw')\n", " req = requests.get(convert, stream=True).text\n", " size = int(req.split(\"size \",1)[1])/1e+9\n", " if not os.path.exists(f\"{download_dir}/{path}\"):\n", " download(download_dir, path, url, quiet=True)\n", " else:\n", " pass\n", " except:\n", " cp('Terjadi Error, Mohon cek ulang linknya', color='red')\n", "\n", "os.chdir(repo_dir)\n", "\n", "model_dir = os.path.join(repo_dir, \"models\")\n", "\n", "for checkpoint in tqdm([cpoint, cpointurl], desc=cp(\"Mempersiapkan Model Checkpoint\", color=\"flat_green\")):\n", " downloading(url=cpoint, download_dir=f\"{model_dir}/Stable-diffusion\")\n", " if Custom_Download == \"\":\n", " pass\n", " else:\n", " downloading(url=cpointurl, download_dir=f\"{model_dir}/Stable-diffusion\")\n", "\n", "\n", "def downloading(download_dir=None, url=None, quiet=True):\n", " try:\n", " parse = urlparse(url)\n", " path = os.path.basename(parse.path)\n", " convert = url.replace('resolve', 'raw')\n", " req = requests.get(convert, stream=True).text\n", " size = int(req.split(\"size \",1)[1])/1e+9\n", " if not os.path.exists(f\"{download_dir}/{path}\"):\n", " download(download_dir, path, url, quiet=True)\n", " else:\n", " pass\n", " except:\n", " cp('Terjadi Error, Mohon cek ulang linknya', color='red')\n", "\n", "os.chdir(repo_dir)\n", "\n", "cnet_model = f\"{extensions_dir}/sd-{wui}-controlnet/models\"\n", "cnet_annonator = f\"{extensions_dir}/sd-{wui}-controlnet/annotator\"\n", "openpose_dir = f\"{cnet_annonator}/openpose\"\n", "mlsd_dir = f\"{cnet_annonator}/mlsd\"\n", "midas_dir = f\"{cnet_annonator}/midas\"\n", "hed_dir = f\"{cnet_annonator}/hed\"\n", "uniformer_dir = f\"{cnet_annonator}/uniformer\"\n", "\n", "cnet_canny = f\"https://huggingface.co/{wui}/ControlNet-modules-safetensors/resolve/main/control_canny-fp16.safetensors\"\n", "cnet_depth = f\"https://huggingface.co/{wui}/ControlNet-modules-safetensors/resolve/main/control_depth-fp16.safetensors\"\n", "cnet_hed = f\"https://huggingface.co/{wui}/ControlNet-modules-safetensors/resolve/main/control_hed-fp16.safetensors\"\n", "cnet_mlsd = f\"https://huggingface.co/{wui}/ControlNet-modules-safetensors/resolve/main/control_mlsd-fp16.safetensors\"\n", "cnet_normal = f\"https://huggingface.co/{wui}/ControlNet-modules-safetensors/resolve/main/control_normal-fp16.safetensors\"\n", "cnet_openpose = f\"https://huggingface.co/{wui}/ControlNet-modules-safetensors/resolve/main/control_openpose-fp16.safetensors\"\n", "cnet_scribble = f\"https://huggingface.co/{wui}/ControlNet-modules-safetensors/resolve/main/control_scribble-fp16.safetensors\"\n", "cnet_seg = f\"https://huggingface.co/{wui}/ControlNet-modules-safetensors/resolve/main/control_seg-fp16.safetensors\"\n", "hand_pose = \"https://huggingface.co/ckpt/ControlNet/resolve/main/hand_pose_model.pth\"\n", "body_pose = \"https://huggingface.co/ckpt/ControlNet/resolve/main/body_pose_model.pth\"\n", "midas = \"https://huggingface.co/ckpt/ControlNet/resolve/main/dpt_hybrid-midas-501f0c75.pt\"\n", "mlsd1 = \"https://huggingface.co/ckpt/ControlNet/resolve/main/mlsd_large_512_fp32.pth\"\n", "mlsd2 = \"https://huggingface.co/ckpt/ControlNet/resolve/main/mlsd_tiny_512_fp32.pth\"\n", "network = \"https://huggingface.co/ckpt/ControlNet/resolve/main/network-bsds500.pth\"\n", "uppernet = \"https://huggingface.co/ckpt/ControlNet/resolve/main/upernet_global_small.pth\"\n", "\n", "list = [\n", " cnet_canny,\n", " cnet_depth,\n", " cnet_hed,\n", " cnet_mlsd,\n", " cnet_normal,\n", " cnet_openpose,\n", " cnet_scribble,\n", " cnet_seg,\n", " hand_pose,\n", " body_pose,\n", " mlsd1, mlsd2,\n", " midas, network,\n", " uppernet\n", " ]\n", "\n", "for _ in tqdm(list, desc=cp(\"Mempersiapkan Controlnet Model\", color=\"flat_green\")):\n", " for model in cnet_canny, cnet_depth, cnet_hed, cnet_mlsd, cnet_normal, cnet_openpose, cnet_scribble, cnet_seg:\n", " downloading(cnet_model, model)\n", " for annonator1 in hand_pose, body_pose:\n", " downloading(openpose_dir, annonator1)\n", " for annonator2 in mlsd1, mlsd2:\n", " downloading(mlsd_dir, annonator2)\n", " downloading(midas_dir, midas)\n", " downloading(hed_dir, network)\n", " downloading(uniformer_dir, uppernet)\n", "#############################################################################################################################################\n", "\n", "\n", "\n", "#UBAH APA SAJA YANG KALIAN INGINKAN DISINI\n", "\n", "\n", "#install-vae-untuk-model-checkpoint-yang-akan-dipakai\n", "!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.ckpt -d $vaepath -o vae-ft-mse-840000-ema-pruned.ckpt\n", "!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/vorstcavry/vaecollection1/resolve/main/testclearvae.safetensors -d $vaepath -o testclearvae.safetensors\n", "\n", "#install-lora\n", "!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/vorstcavry/loraasia1/resolve/main/japaneseDollLikeness_v15.safetensors -d /content/vorst-cavry/models/Lora/Lora-set -o japaneseDollLikeness_v15.safetensors\n", "!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/vorstcavry/loraasia1/resolve/main/koreanDollLikeness_v20.safetensors -d /content/vorst-cavry/models/Lora/Lora-set -o koreanDollLikeness_v20.safetensors\n", "!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/vorstcavry/loraasia1/resolve/main/taiwanDollLikeness_v15.safetensors -d /content/vorst-cavry/models/Lora/Lora-set -o taiwanDollLikeness_v15.safetensors\n", "\n", "#intsall-lora-di-additional-networks\n", "!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/vorstcavry/loraasia1/resolve/main/japaneseDollLikeness_v15.safetensors -d $addnetworkpath -o japaneseDollLikeness_v15.safetensors\n", "!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/vorstcavry/loraasia1/resolve/main/koreanDollLikeness_v20.safetensors -d $addnetworkpath -o koreanDollLikeness_v20.safetensors\n", "!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/vorstcavry/loraasia1/resolve/main/taiwanDollLikeness_v15.safetensors -d $addnetworkpath -o taiwanDollLikeness_v15.safetensors\n", "\n", "#install-Checkpoint\n", "!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/AnonPerson/ChilloutMix/resolve/main/ChilloutMix-ni-fp16.safetensors -d $basemodelpath -o ChilloutMix-ni-fp16.safetensors\n", "\n", "#intsall-Preview-Checkpoint\n", "!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/vorstcavry/LoRA-set1/resolve/main/ChilloutMix-ni-fp16.preview.png -d $basemodelpath -o ChilloutMix-ni-fp16.preview.png\n", "\n", "#JANGAN MENGUBAH BAGIAN SELAIN ADA TANDA #\n", "#####################################################################################################################################################################\n", "#Menjalankan web\n", "os.chdir(repo_dir)\n", "%cd /content/vorst-cavry\n", "!git reset --hard\n", "\n", "def prepare_environment():\n", " cprint(f\"Mulai Mempersiapkan Link Stable Diffusion\", color=\"green\")\n", "\n", " os.environ[\"colab_url\"] = eval_js(\"google.colab.kernel.proxyPort(7860, {'cache': false})\")\n", " os.environ[\"TF_CPP_MIN_LOG_LEVEL\"] = \"3\"\n", " os.environ[\"SAFETENSORS_FAST_GPU\"] = \"1\"\n", " os.environ['PYTORCH_CUDA_ALLOC_CONF'] = \"garbage_collection_threshold:0.9,max_split_size_mb:512\"\n", " os.environ[\"PYTHONWARNINGS\"] = \"ignore\"\n", "\n", "prepare_environment()\n", "\n", "!sed -i -e '''/from modules import launch_utils/a\\import os''' /content/vorst-cavry/launch.py\n", "!sed -i -e '''/ prepare_environment()/a\\ os.system\\(f\\\"\"\"sed -i -e ''\\\"s/dict()))/dict())).cuda()/g\\\"'' /content/vorst-cavry/repositories/stable-diffusion-stability-ai/ldm/util.py\"\"\")''' /content/vorst-cavry/launch.py\n", "!sed -i -e 's/\\[\"sd_model_checkpoint\"\\]/\\[\"sd_model_checkpoint\",\"sd_vae\",\"CLIP_stop_at_last_layers\"\\]/g' /content/vorst-cavry/modules/shared.py\n", "\n", "def parse_args(config):\n", " args = \"\"\n", " for k, v in config.items():\n", " if k.startswith(\"_\"):\n", " args += f'\"{v}\" '\n", " elif isinstance(v, str):\n", " args += f'--{k}=\"{v}\" '\n", " elif isinstance(v, bool) and v:\n", " args += f\"--{k} \"\n", " elif isinstance(v, float) and not isinstance(v, bool):\n", " args += f\"--{k}={v} \"\n", " elif isinstance(v, int) and not isinstance(v, bool):\n", " args += f\"--{k}={v} \"\n", "\n", " return args\n", "\n", "config = {\n", " \"enable-insecure-extension-access\": True,\n", " \"disable-safe-unpickle\" : True,\n", " \"xformers\" : True,\n", " \"multiple \" : True,\n", " \"share\" : True,\n", " \"no-hashing\" : True,\n", " \"disable-console-progressbars\" : True,\n", " \"opt-sub-quad-attention\" : True,\n", " \"opt-channelslast\" : True,\n", " \"theme\" : \"dark\" if gunakan_tema_gelap else \"light\",\n", " \"no-download-sd-model\" : True,\n", " \"gradio-queue\" : True,\n", " \"listen\" : True,\n", "}\n", "\n", "args = parse_args(config)\n", "final_args = f\"python launch.py {args}\"\n", "\n", "cp()\n", "os.chdir(repo_dir)\n", "os.environ[\"TCMALLOC_AGGRESSIVE_DECOMMIT\"] = \"t\"\n", "!{final_args}" ] }, { "cell_type": "markdown", "metadata": { "id": "iMi8ynZVg2Wp" }, "source": [ "## Tunggu sampai link muncul 👆\n", "\n", "tunggu semua proses selesi agar link muncul, di sini tersedia 4 link (kadang ada 1-3 link karena menyesuaikan server yang bisa di pakai)\n", "\n", "**KLIK SALAH SATU, JIKA SALAH SATU LINK MENGALAMI ERROR BISA GANTI DENGAN LINK SATUNYA LAGI**\n", "\n", "\n", "![image.png](data:image/png;base64,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)" ] }, { "cell_type": "markdown", "source": [ "
\n", "\n", "#***`Beta Test [p2]`***" ], "metadata": { "id": "22bXyVWJmezz" } }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "ORTaMqqbmwyI", "cellView": "form" }, "outputs": [], "source": [ "from IPython.display import HTML, display\n", "\n", "def display_text_box(content, width=\"485px\", height=\"30px\"):\n", " html_content = f'''\n", "
{content}
\n", " '''\n", " display(HTML(html_content))\n", "\n", "text_content = \"Terima kasih Telah Menggunakan Notebook google colab StableDiffusion milik Remaja Pekalongan.\"\n", "\n", "display_text_box(text_content, width=\"485px\", height=\"30px\")\n", "\n", "from IPython.display import HTML, Image\n", "\n", "def display_image():\n", " image_url = \"https://i.postimg.cc/Pf3XXMsP/Cuplikan-layar-2023-07-30-165548.png\"\n", " image_html = f''\n", "\n", " display(HTML(image_html))\n", "\n", "display_image()\n", "from IPython.display import HTML\n", "\n", "def create_button_with_link(label, link):\n", " button_id = label.lower().replace(\" \", \"_\")\n", " return f'''\n", " \n", " \n", " \n", " \n", " '''\n", "\n", "subscribe_button = create_button_with_link(\"Subscribe\", \"https://www.youtube.com/@remajapekalongan\")\n", "support_button = create_button_with_link(\"Support\", \"https://ko-fi.com/vorstcavry\")\n", "saweria_button = create_button_with_link(\"Saweria\", \"https://http://saweria.co/vorstcavry\")\n", "discord_button = create_button_with_link(\"Discord\", \"https://discord.gg/fg9kvMqUmD\")\n", "\n", "buttons_html = f'
{subscribe_button} {support_button} {saweria_button} {discord_button}
'\n", "display(HTML(buttons_html))\n", "\n", "\n", "import os\n", "import time\n", "import json\n", "import base64\n", "import shutil\n", "import subprocess\n", "import threading\n", "import sys\n", "import random\n", "import string\n", "from IPython.display import display, HTML\n", "from google.colab.output import eval_js\n", "from IPython.utils import capture\n", "from tqdm import tqdm\n", "from pydantic import BaseModel\n", "\n", "packages = [\n", " \"pip install gradio_client==0.2.7\",\n", " \"pip install git+https://github.com/Linaqruf/colablib\",\n", " \"pip install --upgrade urllib3 chardet charset_normalizer requests\"\n", " ]\n", "\n", "for install in tqdm(packages, desc=print(\"Tunggu Sebentar...\")):\n", " os.system(install)\n", "\n", "from colablib.utils.py_utils import get_filename\n", "from typing import List, Optional\n", "from colablib.colored_print import cprint, print_line\n", "from colablib.utils import py_utils, config_utils, package_utils\n", "from colablib.utils.config_utils import pastebin_reader as read\n", "from colablib.utils.ubuntu_utils import ubuntu_deps\n", "from colablib.sd_models.downloader import aria2_download, download, get_modelname\n", "from colablib.utils.ubuntu_utils import unionfuse\n", "from colablib.utils.config_utils import read_config\n", "from colablib.utils.git_utils import update_repo, batch_update, validate_repo, reset_repo, patch_repo\n", "\n", "\n", "\n", "\n", "#Variabel\n", "pt = \".pt\"\n", "st = \".safetensors\"\n", "civitai = \"https://civitai.com/api/download/models/\"\n", "masbro = {\n", "\n", " 0 : ( \"stable\" )\n", " , 1 : ( \"diffusion\" )\n", " , 2 : ( \"webui\" )\n", " , 3 : ( \"sd\" )\n", " , 4 : ( \"Stable\" )\n", " , 5 : ( \"Diffusion\" )\n", " , 6 : ( \"WebUI\" )\n", " , 7 : ( \"SD\" )\n", "\n", "}\n", "#Import modul\n", "from datetime import datetime\n", "from IPython.display import clear_output\n", "\n", "\n", "#######################\n", "\n", "\n", "#Lokasi folder\n", "sd = f\"{masbro[0]}-{masbro[1]}\"\n", "wui = f\"{masbro[2]}\"\n", "sdwui = f\"{sd}-{wui}\"\n", "basemodelpath = f\"/content/vorst-cavry/models/Stable-diffusion\"\n", "vaepath = f\"/content/vorst-cavry/models/VAE\"\n", "embeddingpath = f\"/content/vorst-cavry/embeddings\"\n", "loramodelpath = f\"/content/vorst-cavry/models/Lora\"\n", "rooppath = f\"/content/vorst-cavry/models/roop\"\n", "contrlnetpath = f\"/content/vorst-cavry/extensions/sd-{wui}-controlnet/models\"\n", "addnetworkpath = f\"/content/vorst-cavry/extensions/sd-{wui}-additional-networks/models/lora\"\n", "esrganpath = f\"/content/vorst-cavry/models/ESRGAN\"\n", "\n", "def isnumber(s):\n", " try:\n", " float(s)\n", " return True\n", " except ValueError:\n", " return False\n", "\n", "\n", "#!apt-get -y install -qq aria2\n", "#!apt-get -y install libcairo2-dev pkg-config python3-dev\n", "#!pip install --upgrade fastapi==0.90.1\n", "#!pip install triton\n", "#!pip install -q torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 torchtext==0.14.1 torchdata==0.5.1 torchmetrics==0.11.4 --extra-index-url https://download.pytorch.org/whl/cu116 -U\n", "\n", "#!apt -y install -qq aria2 libcairo2-dev pkg-config python3-dev\n", "#!pip install -q torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 torchtext==0.14.1 torchdata==0.5.1 torchmetrics==0.11.4 --extra-index-url https://download.pytorch.org/whl/cu116 -U\n", "\n", "#%env TF_CPP_MIN_LOG_LEVEL=1\n", "\n", "#!apt -y update -qq\n", "#!wget https://huggingface.co/vorstcavry/backup-file/resolve/main/libtcmalloc_minimal.so.4 -O /content/libtcmalloc_minimal.so.4\n", "#%env LD_PRELOAD=/content/libtcmalloc_minimal.so.4\n", "\n", "#!apt -y install -qq aria2 libcairo2-dev pkg-config python3-dev\n", "\n", "#######################################\n", "#jika bagian atas tidak berfungsi maka gunakan bagian ini\n", "#########################################\n", "root_dir = \"/content\"\n", "drive_dir = os.path.join(root_dir, \"drive\", \"MyDrive\")\n", "repo_dir = os.path.join(root_dir, \"vorst-cavry\")\n", "tmp_dir = os.path.join(root_dir, \"tmp\")\n", "patches_dir = os.path.join(root_dir, \"patches\")\n", "deps_dir = os.path.join(root_dir, \"deps\")\n", "fused_dir = os.path.join(root_dir, \"fused\")\n", "\n", "# REPO DIR\n", "models_dir = os.path.join(repo_dir, \"models\", \"Stable-diffusion\")\n", "vaes_dir = os.path.join(repo_dir, \"models\", \"VAE\")\n", "hypernetworks_dir = os.path.join(repo_dir, \"models\", \"hypernetworks\")\n", "lora_dir = os.path.join(repo_dir, \"models\", \"Lora\")\n", "control_dir = os.path.join(repo_dir, \"models\", \"ControlNet\")\n", "embeddings_dir = os.path.join(repo_dir, \"embeddings\")\n", "extensions_dir = os.path.join(repo_dir, \"extensions\")\n", "annotator_dir = os.path.join(extensions_dir, f\"sd-{wui}-controlnet\", \"annotator\")\n", "output_subdir = [\"txt2img-images\", \"img2img-images\", \"extras-images\", \"txt2img-grids\", \"img2img-grids\"]\n", "\n", "# CONFIG\n", "config_file = os.path.join(repo_dir, \"config.json\")\n", "ui_config_file = os.path.join(repo_dir, \"ui-config.json\")\n", "style_path = os.path.join(repo_dir, \"style.css\")\n", "download_list = os.path.join(root_dir, \"download_list.txt\")\n", "\n", "\n", "def pre_download(dir, urls, desc, overwrite=False):\n", " gpu_info = py_utils.get_gpu_info()\n", " version = py_utils.get_python_version().split()[0]\n", " major_minor = \".\".join(version.split(\".\")[:2])\n", " xformers_version = \"0.0.20\"\n", " insightface_version = \"0.7.3\"\n", " python_path = f\"/usr/local/lib/python{major_minor}/dist-packages/\"\n", " ffmpy_path = os.path.join(python_path, \"ffmpy-0.3.1.dist-info\")\n", "\n", " if os.path.exists(ffmpy_path):\n", " shutil.rmtree(ffmpy_path)\n", "\n", " if not 'T4' in gpu_info:\n", " subprocess.run(['pip', 'uninstall', '-y', 'xformers'], check=True)\n", " subprocess.run(['pip', 'install', '-q', f'xformers=={xformers_version}'], check=True)\n", "\n", "def install_dependencies():\n", " ubuntu_deps = [\"aria2\"]\n", " python_deps = [\"ffmpy\"]\n", " cprint(\"Mempersiapkan bahan \", color=\"green\")\n", " subprocess.run([\"apt\", \"install\"] + ubuntu_deps)\n", " subprocess.run([\"pip\", \"install\"] + python_deps)\n", "\n", "install_dependencies()\n", "#install-stablediffusion\n", "\n", "#@markdown **Pilih Tema:**\n", "\n", "#@markdown > Tema `Anapnoe`, `Lobehub` dan `Kitchen` cocok untuk pengguna Mobile.\n", "tema = \"linaqruf\" #@param [\"automatic1111\",\"catppuccin\", \"doki-jupiter\", \"linaqruf\", \"nocrypt-miku\", \"devdark\", \"anapnoe\", \"lobehub\", \"kitchen\"]\n", "gunakan_tema_gelap = True # @param {type: 'boolean'}\n", "\n", "from colablib.utils.git_utils import clone_repo\n", "from colablib.utils.git_utils import update_repo, batch_update, validate_repo, reset_repo, patch_repo\n", "from colablib.colored_print import cprint as cp\n", "from urllib.parse import urlparse\n", "\n", "def git_clone(repo_url, destination_folder):\n", " command = ['git', 'clone', repo_url, destination_folder]\n", " subprocess.call(command)\n", "\n", "def download_with_aria2(url, output_dir):\n", " if not os.path.exists('/usr/bin/aria2c'):\n", " print(\"Error: aria2 tidak terpasang. Silakan pasang terlebih dahulu.\")\n", " return\n", "\n", " if not os.path.exists(output_dir):\n", " print(\"Error: Direktori output tidak ditemukan.\")\n", " return\n", "\n", " command = f'aria2c -d {output_dir} {url}'\n", " os.system(command)\n", "\n", "def delete_directory(path):\n", " try:\n", " os.system(f\"rm -rf {path}\")\n", " except Exception as e:\n", " print(f\"nothing: {str(e)}\")\n", "\n", "if (tema == \"automatic1111\") :\n", " repo_url = 'https://tinyurl.com/Vorst-Cavry-Auto1111'\n", " destination_folder = '/content/vorst-cavry'\n", " git_clone(repo_url, destination_folder)\n", " cp(\"Menggunakan Tema Automatic1111\", color='flat_green')\n", "elif (tema == \"catppuccin\") :\n", " repo_url = 'https://tinyurl.com/Vorst-Cavry-Auto1111'\n", " destination_folder = '/content/vorst-cavry'\n", " git_clone(repo_url, destination_folder)\n", " repo_url = 'https://tinyurl.com/CATPPUCCIN-Repo'\n", " destination_folder = '/content/vorst-cavry/extensions/catppuccin-theme'\n", " git_clone(repo_url, destination_folder)\n", " cp(\"Menggunakan Tema Catppuccin\", color='flat_green')\n", "elif (tema == \"doki-jupiter\") :\n", " repo_url = 'https://tinyurl.com/Vorst-Cavry-Auto1111'\n", " destination_folder = '/content/vorst-cavry'\n", " git_clone(repo_url, destination_folder)\n", " repo_url = 'https://github.com/vorstcavry/doki-theme'\n", " destination_folder = '/content/vorst-cavry/extensions/doki-theme'\n", " git_clone(repo_url, destination_folder)\n", " cp(\"Menggunakan Tema Doki\", color='flat_green')\n", "elif (tema == \"linaqruf\") :\n", " repo_url = 'https://tinyurl.com/Vorst-Cavry-Auto1111'\n", " destination_folder = '/content/vorst-cavry'\n", " git_clone(repo_url, destination_folder)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/ui-config.json'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/config.json'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " cp(\"Menggunakan Tema Linaqruf\", color='flat_green')\n", "elif (tema == \"nocrypt-miku\") :\n", " repo_url = 'https://tinyurl.com/Vorst-Cavry-Auto1111'\n", " destination_folder = '/content/vorst-cavry'\n", " git_clone(repo_url, destination_folder)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/Nocrypt/ui-config.json'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/Nocrypt/config.json'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/Nocrypt/user.css'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/Nocrypt/nohup.out'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/Nocrypt/JetBrainsMono-Regular.woff2'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/Nocrypt/logo.png'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " delete_directory(f\"{repo_dir}/style.css\")\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/Nocrypt/style.css'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " delete_directory(f\"{repo_dir}/webui.py\")\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/Nocrypt/webui.py'\n", " output_directory = os.path.join(repo_dir)\n", " download_with_aria2(url, output_directory)\n", " delete_directory(f\"{repo_dir}/extensions-builtin/extra-options-section/scripts/extra_options_section.py\")\n", " delete_directory(f\"{repo_dir}/modules/ui_settings.py\")\n", " delete_directory(f\"{repo_dir}/modules/scripts.py\")\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/nr/extra_options_section.py'\n", " output_directory = os.path.join(repo_dir, \"extensions-builtin\", \"extra-options-section\", \"scripts\")\n", " download_with_aria2(url, output_directory)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/nr/scripts.py'\n", " output_directory = os.path.join(repo_dir, \"modules\")\n", " download_with_aria2(url, output_directory)\n", " url = 'https://huggingface.co/vorstcavry/test/resolve/main/nr/ui_settings.py'\n", " output_directory = os.path.join(repo_dir, \"modules\")\n", " download_with_aria2(url, output_directory)\n", " cp(\"Menggunakan Tema Nocrypt Miku\", color='flat_green')\n", " cp(\"Maaf Untuk Tema Nocrypt Miku penggunaan Lycoris Masih Belum Stabil\", color='flat_red')\n", "elif (tema == \"devdark\") :\n", " repo_url = 'https://tinyurl.com/Vorst-Cavry-Auto1111'\n", " destination_folder = '/content/vorst-cavry'\n", " git_clone(repo_url, destination_folder)\n", " repo_url = 'https://tinyurl.com/Devdark-Theme'\n", " destination_folder = '/content/vorst-cavry/extensions/devdark-theme'\n", " git_clone(repo_url, destination_folder)\n", " cp(\"Menggunakan Tema Devdark\", color='flat_green')\n", "elif (tema == \"anapnoe\") :\n", " repo_url = 'https://tinyurl.com/Anapnoe-ux-Repo'\n", " destination_folder = '/content/vorst-cavry'\n", " git_clone(repo_url, destination_folder)\n", " hires_prompt_fix = \"https://gist.githubusercontent.com/Linaqruf/8fef456d53604f8c3bcd16722ea7d2f6/raw/a3382087c6e32f9a171f4b5e8aeb572a61682801/0001-Add-New-Label-for-Hires-Prompt.patch\"\n", " patch_repo(url=hires_prompt_fix, dir=patches_dir, cwd=repo_dir, whitespace_fix=True, quiet=True)\n", " shutil.rmtree(patches_dir)\n", " cp(\"Menggunakan Tema Anepnoe\", color='flat_green')\n", "elif (tema == \"lobehub\") :\n", " repo_url = 'https://tinyurl.com/Vorst-Cavry-Auto1111'\n", " destination_folder = '/content/vorst-cavry'\n", " git_clone(repo_url, destination_folder)\n", " repo_url = 'https://tinyurl.com/LOBE-Repo'\n", " destination_folder = '/content/vorst-cavry/extensions/lobe-theme'\n", " git_clone(repo_url, destination_folder)\n", " cp(\"Menggunakan Tema Lobe\", color='flat_green')\n", "elif (tema == \"kitchen\") :\n", " repo_url = 'https://tinyurl.com/Vorst-Cavry-Auto1111'\n", " destination_folder = '/content/vorst-cavry'\n", " git_clone(repo_url, destination_folder)\n", " repo_url = 'https://tinyurl.com/KITCHEN-Repo'\n", " destination_folder = '/content/vorst-cavry/extensions/kitchen-theme'\n", " git_clone(repo_url, destination_folder)\n", " cp(\"Menggunakan Tema Kitchen\", color='flat_green')\n", "else :\n", " pass\n", "\n", "\n", "\n", "\n", "\n", "def download_with_aria2(url, output_dir):\n", " if not os.path.exists('/usr/bin/aria2c'):\n", " print(\"Error: aria2 tidak terpasang. Silakan pasang terlebih dahulu.\")\n", " return\n", "\n", " if not os.path.exists(output_dir):\n", " print(\"Error: Direktori output tidak ditemukan.\")\n", " return\n", "\n", " command = f'aria2c -d {output_dir} {url}'\n", " os.system(command)\n", "\n", "\n", "url = 'https://huggingface.co/vorstcavry/test/resolve/main/styles.csv'\n", "output_directory = os.path.join(repo_dir)\n", "download_with_aria2(url, output_directory)\n", "\n", "#install-bahan-dasar\n", "os.chdir(repo_dir)\n", "def git_clone(repo_url, destination_folder):\n", " command = ['git', 'clone', repo_url, destination_folder]\n", " subprocess.call(command)\n", "\n", "repo_url = 'https://github.com/vorstcavry/lora'\n", "destination_folder = os.path.join(repo_dir, \"models\", \"Lora\", \"Lora-set\")\n", "git_clone(repo_url, destination_folder)\n", "\n", "\n", "def delete_directory(path):\n", " try:\n", " os.system(f\"rm -rf {path}\")\n", " except Exception as e:\n", " print(f\"nothing: {str(e)}\")\n", "\n", "delete_directory(f\"{repo_dir}/models/Lora/Lora-set/.git\")\n", "\n", "os.chdir(repo_dir)\n", "embedding = [\n", " f\"rm -rf {repo_dir}/embeddings\",\n", " f\"git clone https://github.com/vorstcavry/embeddings {repo_dir}/embeddings >/dev/null 2>&1\",\n", " f\"rm -rf {repo_dir}/embeddings/.git\"\n", " ]\n", "\n", "for embedd in tqdm(embedding, desc=cp(\"Mempersipkan Embeddings\", color=\"flat_green\")):\n", " os.system(embedd)\n", "\n", "#install-ekstension\n", "extensions_url = [\n", " \"KohakuBlueleaf/LyCORIS\",\n", " \"Coyote-A/ultimate-upscale-for-automatic1111\",\n", " \"Iyashinouta/sd-colab-commands-browser\",\n", " \"Iyashinouta/sd-model-downloader\",\n", " \"NoCrypt/inpaint-nav\",\n", " \"IDEA-Research/DWPose\",\n", " \"vorstcavry/sd-civitai-browser\",\n", " \"vorstcavry/vorstcavry-tunnels\",\n", " \"vorstcavry/openpose-editor\",\n", " \"vorstcavry/depth-lib\",\n", " \"vorstcavry/roop\",\n", " \"vorstcavry/ratio-helper\",\n", " f\"Mikubill/sd-{wui}-controlnet\",\n", " f\"deforum-art/deforum-for-automatic1111-{wui}\",\n", " f\"etherealxx/batchlinks-{wui}\",\n", " f\"Uminosachi/sd-{wui}-inpaint-anything\",\n", " f\"Mikubill/sd-{wui}-controlnet\",\n", " f\"DominikDoom/a1111-sd-{wui}-tagcomplete\",\n", " f\"camenduru/sd-{wui}-additional-networks\",\n", " f\"yfszzx/{sdwui}-images-browser\",\n", " ]\n", "\n", "\n", "cp(\"Memperispkan Vorst-Cavry-Auto1111\", color='flat_green')\n", "\n", "root_dir = \"/content\"\n", "repo_dir = os.path.join(root_dir, \"vorst-cavry\")\n", "extensions_dir = os.path.join(repo_dir, \"extensions\")\n", "\n", "os.chdir(extensions_dir)\n", "for batch in tqdm(extensions_url, desc=cp(f\"Mempersiapkan Ekstension\", color=\"flat_green\")):\n", " parse = urlparse(batch)\n", " path = os.path.basename(parse.path)\n", " if not os.path.exists(f\"{extensions_dir}/{path}\"):\n", " clone_repo(f\"https://github.com/{batch}\", quiet=True)\n", " else:\n", " pass\n", "#install-controlnet\n", "#@markdown **Pilih Model/Download Model:**\n", "Pilih_Model = \"cavry_v2\" #@param [\"AOAOKO_PVC_Anime\", \"DeliberateV2_AIO\", \"ChillOutMixNiFP16Fix_Realistic\", \"MeinaPastelV4_Anime\", \"majicmixRealistic_v6\", \"PerfectWorldV2_Realistic\", \"AnythingV5_Anime\", \"anyloraCheckpoint_bakedvaeBlessedFp16\", \"cuteyukimixAdorable_neochapter3\", \"cavry_v2\"]\n", "Custom_Download = \"\" #@param {type:\"string\"}\n", "cpoint = None\n", "cpointurl = None\n", "if Pilih_Model == \"AOAOKO_PVC_Anime\":\n", " cpoint=\"https://civitai.com/api/download/models/18295\"\n", "if Pilih_Model == \"DeliberateV2_AIO\":\n", " cpoint=\"https://civitai.com/api/download/models/15236\"\n", "if Pilih_Model == \"ChillOutMixNiFP16Fix_Realistic\":\n", " cpoint=\"https://civitai.com/api/download/models/11732\"\n", "if Pilih_Model == \"MeinaPastelV4_Anime\":\n", " cpoint=\"https://civitai.com/api/download/models/27135\"\n", "if Pilih_Model == \"majicmixRealistic_v6\":\n", " cpoint=\"https://civitai.com/api/download/models/94640\"\n", "if Pilih_Model == \"PerfectWorldV2_Realistic\":\n", " cpoint=\"https://civitai.com/api/download/models/19084\"\n", "if Pilih_Model == \"AnythingV5_Anime\":\n", " cpoint=\"https://civitai.com/api/download/models/30163\"\n", "if Pilih_Model == \"anyloraCheckpoint_bakedvaeBlessedFp16\":\n", " cpoint=\"https://civitai.com/api/download/models/95489\"\n", "if Pilih_Model == \"cuteyukimixAdorable_neochapter3\":\n", " cpoint=\"https://civitai.com/api/download/models/138620\"\n", "if Pilih_Model == \"cavry_v2\":\n", " cpoint=\"https://civitai.com/api/download/models/134860\"\n", "if Custom_Download:\n", " cpointurl=Custom_Download\n", "else:\n", " pass\n", "\n", "\n", "from colablib.sd_models.downloader import aria2_download as download\n", "import requests\n", "import sys\n", "\n", "def downloading(download_dir=None, url=None, quiet=True):\n", " try:\n", " if url.find(\"https://civitai.com/\")!=-1:\n", " convert = \"\" + url.replace(\"download/models\", \"v1/model-versions\")\n", " req = requests.get(convert, stream=True)\n", " path = req.json()['files'][0]['name']\n", " size = int(req.json()['files'][0]['sizeKB'])/1e+9\n", " imgurl = req.json()['images'][0]['url']\n", " namepath = os.path.splitext(path)[0]\n", " imgpath = f\"{namepath}.preview.png\"\n", " if not os.path.exists(f\"{download_dir}/{path}\"):\n", " download(download_dir, path, url, quiet=True)\n", " download(download_dir, imgpath, imgurl, quiet=True)\n", " else:\n", " pass\n", " else:\n", " parse = urlparse(url)\n", " path = os.path.basename(parse.path)\n", " convert = url.replace('resolve', 'raw')\n", " req = requests.get(convert, stream=True).text\n", " size = int(req.split(\"size \",1)[1])/1e+9\n", " if not os.path.exists(f\"{download_dir}/{path}\"):\n", " download(download_dir, path, url, quiet=True)\n", " else:\n", " pass\n", " except:\n", " cp('Terjadi Error, Mohon cek ulang linknya', color='red')\n", "\n", "os.chdir(repo_dir)\n", "\n", "model_dir = os.path.join(repo_dir, \"models\")\n", "\n", "for checkpoint in tqdm([cpoint, cpointurl], desc=cp(\"Mempersiapkan Model Checkpoint\", color=\"flat_green\")):\n", " downloading(url=cpoint, download_dir=f\"{model_dir}/Stable-diffusion\")\n", " if Custom_Download == \"\":\n", " pass\n", " else:\n", " downloading(url=cpointurl, download_dir=f\"{model_dir}/Stable-diffusion\")\n", "\n", "\n", "\n", "def git_clone(repo_url, destination_folder):\n", " command = ['git', 'clone', repo_url, destination_folder]\n", " subprocess.call(command)\n", "\n", "\n", "os.chdir(repo_dir)\n", "pack_data = [\n", " f\"git clone https://github.com/vorstcavry/lora {repo_dir}/models/Lora/Lora-set >/dev/null 2>&1\",\n", " f\"rm -rf {repo_dir}/models/Lora/Lora-set/.git\",\n", " f\"git clone https://github.com/vorstcavry/Checkpoint-Model {repo_dir}/models/Stable-diffusion/Checkpoint-Model >/dev/null 2>&1\",\n", " f\"rm -rf {repo_dir}/models/Stable-diffusion/Checkpoint-Model.git\",\n", " f\"rm -rf {repo_dir}/embeddings\",\n", " f\"git clone https://github.com/vorstcavry/embeddings {repo_dir}/embeddings >/dev/null 2>&1\",\n", " f\"rm -rf {repo_dir}/embeddings/.git\",\n", " ]\n", "\n", "for pack in tqdm(pack_data, desc=cp(\"Mengoptimalkan set data tambahan\", color=\"flat_green\")):\n", " os.system(pack)\n", "#jika-tidak-terjadi-apa apa, maka perintah di bawah ini akan membantu untuk menghapusnya\n", "\n", "def delete_directory(path):\n", " try:\n", " os.system(f\"rm -rf {path}\")\n", " except Exception as e:\n", " print(f\"nothing: {str(e)}\")\n", "\n", "delete_directory(f\"{repo_dir}/models/Lora/Lora-set/.git\")\n", "delete_directory(f\"{repo_dir}/embeddings/.git\")\n", "delete_directory(f\"{repo_dir}/models/Stable-diffusion/Checkpoint-Model/.git\")\n", "\n", "\n", "vae = \"https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors\"\n", "lorakorea = \"https://huggingface.co/vorstcavry/loraasia1/resolve/main/koreanDollLikeness_v20.safetensors\"\n", "lorataiwan = \"https://huggingface.co/vorstcavry/loraasia1/resolve/main/taiwanDollLikeness_v15.safetensors\"\n", "lorajapan = \"https://huggingface.co/vorstcavry/loraasia1/resolve/main/japaneseDollLikeness_v15.safetensors\"\n", "ultrasharp = \"https://huggingface.co/embed/upscale/resolve/main/4x-UltraSharp.pth\"\n", "ultra_upscale1 = \"https://huggingface.co/utnah/esrgan/resolve/main/8x_NMKD-Faces_160000_G.pth\"\n", "ultra_upscale2 = \"https://huggingface.co/utnah/esrgan/resolve/main/8x_NMKD-Superscale_150000_G.pth\"\n", "\n", "\n", "\n", "list_bonus = [\n", " vae,\n", " lorakorea,\n", " lorataiwan,\n", " lorajapan,\n", " ultrasharp,\n", " ultra_upscale1,\n", " ultra_upscale2,\n", " ]\n", "\n", "os.chdir(repo_dir)\n", "for _ in tqdm(list_bonus, desc=cp(\"Mempersiapkan VAE, Lora, Upscale & Config\", color=\"flat_green\")):\n", " downloading(f\"{model_dir}/VAE\", vae)\n", " for loraurl in lorataiwan, lorataiwan, lorajapan:\n", " downloading(f\"{model_dir}/Lora/Lora-set\", loraurl)\n", " for upscaleurl in ultrasharp, ultra_upscale1, ultra_upscale2:\n", " downloading(f\"{model_dir}/ESRGAN\", upscaleurl)\n", "\n", "def downloading(download_dir=None, url=None, quiet=True):\n", " try:\n", " parse = urlparse(url)\n", " path = os.path.basename(parse.path)\n", " convert = url.replace('resolve', 'raw')\n", " req = requests.get(convert, stream=True).text\n", " size = int(req.split(\"size \",1)[1])/1e+9\n", " if not os.path.exists(f\"{download_dir}/{path}\"):\n", " download(download_dir, path, url, quiet=True)\n", " else:\n", " pass\n", " except:\n", " cp('Terjadi Error, Mohon cek ulang linknya', color='red')\n", "\n", "os.chdir(repo_dir)\n", "\n", "cnet_model = f\"{extensions_dir}/sd-{wui}-controlnet/models\"\n", "cnet_annonator = f\"{extensions_dir}/sd-{wui}-controlnet/annotator\"\n", "openpose_dir = f\"{cnet_annonator}/openpose\"\n", "mlsd_dir = f\"{cnet_annonator}/mlsd\"\n", "midas_dir = f\"{cnet_annonator}/midas\"\n", "hed_dir = f\"{cnet_annonator}/hed\"\n", "uniformer_dir = f\"{cnet_annonator}/uniformer\"\n", "\n", "cnet_canny = f\"https://huggingface.co/{wui}/ControlNet-modules-safetensors/resolve/main/control_canny-fp16.safetensors\"\n", "cnet_depth = f\"https://huggingface.co/{wui}/ControlNet-modules-safetensors/resolve/main/control_depth-fp16.safetensors\"\n", "cnet_hed = f\"https://huggingface.co/{wui}/ControlNet-modules-safetensors/resolve/main/control_hed-fp16.safetensors\"\n", "cnet_mlsd = f\"https://huggingface.co/{wui}/ControlNet-modules-safetensors/resolve/main/control_mlsd-fp16.safetensors\"\n", "cnet_normal = f\"https://huggingface.co/{wui}/ControlNet-modules-safetensors/resolve/main/control_normal-fp16.safetensors\"\n", "cnet_openpose = f\"https://huggingface.co/{wui}/ControlNet-modules-safetensors/resolve/main/control_openpose-fp16.safetensors\"\n", "cnet_scribble = f\"https://huggingface.co/{wui}/ControlNet-modules-safetensors/resolve/main/control_scribble-fp16.safetensors\"\n", "cnet_seg = f\"https://huggingface.co/{wui}/ControlNet-modules-safetensors/resolve/main/control_seg-fp16.safetensors\"\n", "hand_pose = \"https://huggingface.co/ckpt/ControlNet/resolve/main/hand_pose_model.pth\"\n", "body_pose = \"https://huggingface.co/ckpt/ControlNet/resolve/main/body_pose_model.pth\"\n", "midas = \"https://huggingface.co/ckpt/ControlNet/resolve/main/dpt_hybrid-midas-501f0c75.pt\"\n", "mlsd1 = \"https://huggingface.co/ckpt/ControlNet/resolve/main/mlsd_large_512_fp32.pth\"\n", "mlsd2 = \"https://huggingface.co/ckpt/ControlNet/resolve/main/mlsd_tiny_512_fp32.pth\"\n", "network = \"https://huggingface.co/ckpt/ControlNet/resolve/main/network-bsds500.pth\"\n", "uppernet = \"https://huggingface.co/ckpt/ControlNet/resolve/main/upernet_global_small.pth\"\n", "\n", "list = [\n", " cnet_canny,\n", " cnet_depth,\n", " cnet_hed,\n", " cnet_mlsd,\n", " cnet_normal,\n", " cnet_openpose,\n", " cnet_scribble,\n", " cnet_seg,\n", " hand_pose,\n", " body_pose,\n", " mlsd1, mlsd2,\n", " midas, network,\n", " uppernet\n", " ]\n", "\n", "for _ in tqdm(list, desc=cp(\"Mempersiapkan Controlnet Model\", color=\"flat_green\")):\n", " for model in cnet_canny, cnet_depth, cnet_hed, cnet_mlsd, cnet_normal, cnet_openpose, cnet_scribble, cnet_seg:\n", " downloading(cnet_model, model)\n", " for annonator1 in hand_pose, body_pose:\n", " downloading(openpose_dir, annonator1)\n", " for annonator2 in mlsd1, mlsd2:\n", " downloading(mlsd_dir, annonator2)\n", " downloading(midas_dir, midas)\n", " downloading(hed_dir, network)\n", " downloading(uniformer_dir, uppernet)\n", "\n", "\n", "# @markdown > Recommended Tunnels: `ngrok` > `gradio` > `cloudflared` > `remotemoe` > `localhostrun` > `googleusercontent`\n", "select_tunnel = \"multiple\" # @param ['gradio', 'multiple','cloudflared', 'localhostrun', 'remotemoe', \"googleusercontent\"]\n", "# @markdown > dapatkan `ngrok_token` [disini](https://dashboard.ngrok.com/get-started/your-authtoken)\n", "ngrok_token = \"\" # @param {type: 'string'}\n", "ngrok_region = \"in\" # @param [\"us\", \"eu\", \"au\", \"ap\", \"sa\", \"jp\", \"in\"]\n", "\n", "\n", "#@markdown ### **Arguments**:\n", "\n", "accelerator = \"xformers\" # @param ['xformers', 'opt-sdp-attention', 'opt-sdp-no-mem-attention', 'opt-split-attention']\n", "additional_arguments = \"--lowram --no-half --disable-nan-check\" #@param {type: 'string'}\n", "\n", "#Menjalankan web\n", "os.chdir(repo_dir)\n", "%cd /content/vorst-cavry\n", "!git reset --hard\n", "\n", "def prepare_environment():\n", " cprint(f\"Mulai Mempersiapkan Link Stable Diffusion\", color=\"green\")\n", "\n", " os.environ[\"colab_url\"] = eval_js(\"google.colab.kernel.proxyPort(7860, {'cache': false})\")\n", " os.environ[\"TF_CPP_MIN_LOG_LEVEL\"] = \"3\"\n", " os.environ[\"SAFETENSORS_FAST_GPU\"] = \"1\"\n", " os.environ['PYTORCH_CUDA_ALLOC_CONF'] = \"garbage_collection_threshold:0.9,max_split_size_mb:512\"\n", " os.environ[\"PYTHONWARNINGS\"] = \"ignore\"\n", "\n", "prepare_environment()\n", "\n", "!sed -i -e '''/from modules import launch_utils/a\\import os''' /content/vorst-cavry/launch.py\n", "!sed -i -e '''/ prepare_environment()/a\\ os.system\\(f\\\"\"\"sed -i -e ''\\\"s/dict()))/dict())).cuda()/g\\\"'' /content/vorst-cavry/repositories/stable-diffusion-stability-ai/ldm/util.py\"\"\")''' /content/vorst-cavry/launch.py\n", "!sed -i -e 's/\\[\"sd_model_checkpoint\"\\]/\\[\"sd_model_checkpoint\",\"sd_vae\",\"CLIP_stop_at_last_layers\"\\]/g' /content/vorst-cavry/modules/shared.py\n", "\n", "def parse_args(config):\n", " args = \"\"\n", " for k, v in config.items():\n", " if k.startswith(\"_\"):\n", " args += f'\"{v}\" '\n", " elif isinstance(v, str):\n", " args += f'--{k}=\"{v}\" '\n", " elif isinstance(v, bool) and v:\n", " args += f\"--{k} \"\n", " elif isinstance(v, float) and not isinstance(v, bool):\n", " args += f\"--{k}={v} \"\n", " elif isinstance(v, int) and not isinstance(v, bool):\n", " args += f\"--{k}={v} \"\n", "\n", " return args\n", "\n", "config = {\n", " \"enable-insecure-extension-access\": True,\n", " \"disable-safe-unpickle\" : True,\n", " \"xformers\" : True,\n", " f\"{select_tunnel}\" : True if not select_tunnel == \"gradio\" and not ngrok_token else False,\n", " \"share\" : True if not ngrok_token else False,\n", " \"no-hashing\" : True,\n", " \"disable-console-progressbars\" : True,\n", " \"ngrok\" : ngrok_token if ngrok_token else None,\n", " \"ngrok-region\" : ngrok_region if ngrok_token else None,\n", " \"opt-sub-quad-attention\" : True,\n", " \"opt-channelslast\" : True,\n", " \"api\" : True,\n", " \"hide-ui-dir-config\" : True,\n", " \"theme\" : \"dark\" if gunakan_tema_gelap else \"light\",\n", " \"no-download-sd-model\" : True,\n", " \"gradio-queue\" : True,\n", " \"listen\" : True,\n", "}\n", "\n", "args = parse_args(config)\n", "final_args = f\"python launch.py {args} {additional_arguments}\"\n", "\n", "cp()\n", "os.chdir(repo_dir)\n", "os.environ[\"TCMALLOC_AGGRESSIVE_DECOMMIT\"] = \"t\"\n", "!{final_args}" ] } ], "metadata": { "accelerator": "GPU", "colab": { "collapsed_sections": [ "upiFioaJfziP", "frYxBNQhVHSK", "oEk611XKY623", "woa7WJ1-0NwO", "22bXyVWJmezz" ], "provenance": [] }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 0 }