Xe_ddlmZmZmZmZmZmZmZmZm Z m Z m Z m Z m Z mZmZmZddlmZmZddlmZmZddlmZmZmZmZddlmZddlmZm Z m!Z!m"Z"ddl#m$Z$ddl%m&Z&dd l'm(Z(dd l)m*Z*dd l+m,Z,dd l-m.Z.dd lm/Z/ddl)m0Z0m1Z1ddl2m3Z3ej45ejj6dej45ejj7dGddeZ8dS))QWidget QPushButton QHBoxLayout QVBoxLayoutQLabel QLineEdit QMainWindowQSlider QTabWidget QSpacerItem QSizePolicy QComboBox QCheckBox QTextEdit QToolButton QFileDialog) QtWidgetsQtCore)QPixmapQDesktopServices)QSize QThreadPoolQtQUrl)ImageQt)LCM_DEFAULT_MODELLCM_DEFAULT_MODEL_OPENVINOAPP_NAME APP_VERSION)ImageGeneratorWorker) AppSettings)FastStableDiffusionPaths)is_reshape_required)Context) InterfaceType)DEVICE)enable_openvino_controlsget_valid_model_id)get_available_modelsTceZdZdeffd ZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdefdZdZ dZ!d Z"d!Z#xZ$S)" MainWindowconfigc4t||_|t|t dd|d|_t|_ d|_ d|_ d|_ d|_d|_t!t"j|_|g|_d|_t/d|jjjdS)NiXicpurzOutput path : )super__init__r,setWindowTitler setFixedSizerinit_uipipeliner threadpooldeviceprevious_widthprevious_heightprevious_modelprevious_num_of_imagesr$r%GUIcontextinit_ui_values gen_images image_indexprintsettings results_path)selfr, __class__s ;F:\dev\push\faster\fastsdcpu\src\frontend\gui\app_window.pyr1zMainWindow.__init__.s   H%%% %S//***  %--   &'#}011   D!5!BDDEEEEEc|j|jjjj |jt|jjjj dz|j |jjjj |j |jjjj|j |jjjj|jt%|jjjj|jt%|jjjj|jt|jjjj|j |jjjj |j t%|jjjj|j |jjjj|j|jjj|j|jjjj|j |jjjj |j! |jjjj!|j"tG|jj$|jjjj%j"|j&tG|jj'|jjjj%j&|j(tG|jj)|jjjj(|j*|jjjj!p|jjjj|j(|jjjjdS)N )+ lcm_model setEnabledr,rBlcm_diffusion_setting use_openvinoguidancesetValueintguidance_scale seed_valueuse_seedsafety_checker setCheckeduse_safety_checkeruse_openvino_checkwidthsetCurrentTextstr image_widthheight image_heightinference_steps seed_checksetTextseeduse_local_model_folderuse_offline_modelrC num_imagesnumber_of_images use_tae_sduse_tiny_auto_encoder use_lcm_lora base_model_idr(stable_diffsuion_modelslcm_lora lcm_lora_idlcm_lora_modelsopenvino_lcm_model_idopenvino_lcm_models neg_promptrDs rFr>zMainWindow.init_ui_valuesAs !! $:G G      $:IBN O O    ""4;#7#M#VWWW && K 6 I    ** K 6 C    !!  $:F G G    ""  $:G H H    %%  $:J K K    ""4;#7#M#VWWW DK$8$N$S T TUUU #.. K 6 H    !!$+"6"CDDD   K 6 G    "" K 6 L    $$ K 6 C    ))  3 $:CQ     ''  + $:CO     "11  / $:P     "" K 6 C G{#9F    "-- K 6 C     rGc||||dSN)create_main_tabcreate_settings_tabcreate_about_tabshowrqs rFr4zMainWindow.init_uisI    """  rGc td|_|jtj|jt ddtddtj tj |_ t|_ |j d|j dt|_|jd|jdtd|_t%d |_|jj|j|j d|jd t%d |_|jd |jj|j|jd t9}||j||j||jt=|_|j d|jj|j!t=|_"|j" d|j"j|j#t9}||j||j||j"tI}|%||&|j ||j ||j|%|tO||_(tS|_*tS|_+tS|_,|j*-||j(.|j*d|j(.|j+d|j(.|j,d|/|j(d|_0dS)Nz <>(zA fantasy landscapeFr/z+Negative prompt (Set guidance scale > 1.0):Generate#...zOpen output folder<>z Text to ImageSettingsAbout)1rimg setAlignmentr AlignCenterr3rr r Minimum ExpandingvspacerrpromptsetPlaceholderTextsetAcceptRichTextrpneg_prompt_labelrgenerateclickedconnect text_to_imagesetFixedHeightbrowse_results setFixedWidthon_open_results_folder setToolTipr addWidgetrprevious_img_btnr`on_show_previous_image next_img_btnon_show_next_imager addLayoutaddItemr tab_widgetrtab_main tab_settings tab_about setLayoutaddTabsetCentralWidgetrS)rDhlayout hlayout_navvlayouts rFrtzMainWindow.create_main_tabs+&& bn--- eCoo..."2r;+> @UVV kk  &&'<=== %%e,,,#++ **2... ))%000 &'T U U#J//  %%d&8999 ""2&&& &&r***)%00 ))"--- #++D,GHHH &&';<<<--$/***$-((($-... +  %%c*** %--d.IJJJ'MM !!#&&& !))$*ABBB!mm d3444dh'''d/000--+&&& %%%$+&&&$/000'"""$T**  #II  ((( t}o>>> t0*=== t~w777 do... rGctd|_t}t||_|D]}|j|t d|_|jd|jj |j td|_ t||_ |j |jj|j j |jtd|_t||_|j|jj|jj |jtd|_t1t2jj|_|jd|jd |jd |jj |j!td |_"t1t2jj|_#|j#d |j#d |j#d |j#j |j$td |_%t1t2jj|_&|j&d|j&d|j&d|j&j |j'td|_(t||_)|j)d|j)d|j)d|j)d|j)*d|j)j |j+td|_,t||_-|j-d|j-d|j-d|j-d|j-*d|j-j |j.t d|_/ta|_1|j12d|j13d|j/j |j4t d|_5|j5d|j5j |j6t d|_7|j7dtd|_8t d|_9t||_:|j:|jj;|j:j |j<|j7=t}|j9d|j9j |j?|j7j |j@t d|_A|jAd|jAj |jBt}|D|j/|D|j1tddtjGtjH}tddtjGtjH}td|_Ita|_J|jJjK |jLt|_N|jN3d |jNjO |jPtd!|_R|jRjO |jSt}tddtjHtjG}|||D|j|D|j|D|j9|D|j|D|j |D|j |D|j|D|j|D|j7|D|j8|D|j:|D|jA|||D|j|D|j|D|j"|D|j#|D|j(|D|j)|D|j,|D|j-|D|j%|D|j&|U||D|j5|D|jIt}|D|jJ|D|jN|U||jVW|t} tddtjGtjH}| || D|jR|U| ||dS)"NzLatent Consistency Model:z Use LCM LoRAFzLora base model ID :zLCM LoRA model ID :zNumber of inference steps: 4) orientationzNumber of images: 1dzGuidance scale: 1rzrIzWidth :2565127681024zHeight :zUse seed 9999999999123123zUse safety checkerTz Use OpenVINOzOpenVINO LCM model:z>> ,44T5PQQQ%+,J%K%K"&2>3LMMM ''+++ ''*** %%a((( )11$2IJJJ &'< = =!bn.GHHH ""3''' ""1%%%   ### $,,T-IJJJ$%899BN,EFFF    $$$   $$$ r""" "**4+EFFF!),,t__  5!!! 5!!! 5!!! 6""" !!%((( &..t/DEEE":..oo  E""" E""" E""" F### ""5))) '//0FGGG#J//#++ $$\222 ))) $,,T->???'(<== &&t,,, (001PQQQ"+N";"; **5111$*+@$A$A!&/ J' ' #&/t__" "++DK,KLLL "6>>  1    **+C+E+EFFF #..u555 #0889WXXX ,44T5NOOO# D   ""5))) $,,T-DEEE--$/***$/***b"k&;[=PQQ$R[-BKDWXX"("8"8%KK %--d.BCCC!, &&u--- &..t/DEEE --  ""4#:;;;--b"k&9;;PQQ   $.///$.)))$5666$+,,,$7888$,---$6777$*+++$1222$3444$4555$/***'''$4555$.///$/000$/***$*+++$*%%%$+,,,$+&&&$-...$-((('"""$-...$1222"}} t0111t5666,''' ##G,,,# b"k&;[=PQQg&&& +++-(((     rGc>t|_|jtj|jdt dt}||j|j |dS)Nz

FastSD CPU z

(c)2023 - Rupesh Sreeraman

Faster stable diffusion on CPU

Based on Latent Consistency Models

GitHub : https://github.com/rupeshs/fastsdcpu/

) rlabelrrrr`rrrrr)rDrs rFrvzMainWindow.create_about_tabYsXX  ///  K  K K K   --$*%%%   )))))rGcH|jjjj}|jjjj}|dks|dkrO|dkrdn|}|dkrdn|}|j|||tj dS|j|dS)Nry) r,rBrLr[r]r setPixmapscaledrKeepAspectRatio)rDpixmapr[r] new_width new_heights rF show_imagezMainWindow.show_imagehsk*@L {+AN   ' s 2 '*S0AkI ,s 2D J H   &      H  v & & & & &rGc|jt|jdz krt|jdkr|jd|xjdz c_||j|j|jt|jdz kr |jddSdSdSdS)NrrTF)r@lenr?rrKrrrqs rFrzMainWindow.on_show_next_imagexs  s4?33a7 7 4C > >3t#7#7!#;; 4!,,U33333  4 4 4 4 4 4rGcptjtj|jjjdSrs)ropenUrlr fromLocalFiler,rBrCrqs rFrz!MainWindow.on_open_results_folders, !3DK4H4U!V!VWWWWWrGc |jdkrv|jd|xjdzc_||j|j|jdkr|jddSdSdS)NrTrF)r@rrKrr?rrqs rFrz!MainWindow.on_show_previous_images  q  8   ( ( . . .    !   OODOD,<= > > >1$ 8%0077777  8 8 8 8rGc(||jj_dSrs)r,rBrC)rDtexts rFrzMainWindow.on_path_changeds,0 )))rGctj}|tjz}tj|dd|}|r-||jj_|j|dSdS)NzSelect a Folderr/)options)rOptions ShowDirsOnlygetExistingDirectoryr,rBrCr`)rDr folder_paths rFrzMainWindow.on_browse_folders|%'';++!6 #R     30;DK -   % %k 2 2 2 2 2 3 3rGc|j|}t||jjj_dSrs)rXitemTextrPr,rBrLr[)rDindex width_txts rFrzMainWindow.on_width_changeds3J''.. ADY 2>>>rGc|j|}t||jjj_dSrs)r\rrPr,rBrLr])rDr height_txts rFrzMainWindow.on_height_changeds3[))%00 BEj// 2???rGcp|j|}||jjjj_dSrs)rirr,rBrLrkrDrmodel_ids rFrz#MainWindow.on_base_model_id_changeds1%..u55LT 2;IIIrGcp|j|}||jjjj_dSrs)rlrr,rBrLrkrs rFrz!MainWindow.on_lcm_lora_id_changeds1#,,U33JR 2;GGGrGcf|j|}||jjj_dSrs)rnrr,rBrLrs rFrz+MainWindow.on_openvino_lcm_model_id_changeds.-66u==KS 2HHHrGc|dkr|jd|jd|jd|jd|jd|jdd|jjj _ dS|jd|jd|jd|jd|jd|jdd|jjj _ dSNFT) rJrKrhrlrirprnr,rBrLrMrDstates rFrzMainWindow.use_openvino_changedsK A: L N % %e , , ,   ( ( / / /   ' ' . . .   ) )% 0 0 0 O & &t , , ,  & 1 1$ 7 7 7FJDK 6 C C C N % %d + + +   ( ( . . .   ' ' - - -   ) )$ / / / O & &u - - -  & 1 1% 8 8 8FKDK 6 C C CrGcn|dkrd|jjj_dSd|jjj_dSNrTF)r,rBrLrgrs rFrzMainWindow.use_tae_sd_changeds; A: UOSDK 6 L L LOTDK 6 L L LrGcn|dkrd|jjj_dSd|jjj_dSr )r,rBrLrcrs rFrz$MainWindow.use_offline_model_changeds; A: QKODK 6 H H HKPDK 6 H H HrGc|dkr|jd|jd|jd|jdd|jjj_dS|jd|jd|jd|jdd|jjj_dSr) rJrKrlrirpr,rBrLrhrs rFrzMainWindow.use_lcm_lora_changeds A: L N % %e , , ,   ' ' - - -   ) )$ / / / O & &t , , ,FJDK 6 C C C N % %d + + +   ' ' . . .   ) )% 0 0 0 O & &u - - -FKDK 6 C C CrGcn|dkrd|jjj_dSd|jjj_dSr )r,rBrLrVrs rFrz%MainWindow.use_safety_checker_changeds; A: RLPDK 6 I I ILQDK 6 I I IrGcl|jd|||jjj_dS)NzNumber of inference steps: )rr`r,rBrLr^rDvalues rFrzMainWindow.update_steps_labels8 "**+P+P+PQQQEJ 2BBBrGcl|jd|||jjj_dS)NzNumber of images: )rr`r,rBrLrers rFrz"MainWindow.update_num_images_labels8 %%&B5&B&BCCCFK 2CCCrGctt|dz d}|jd|||jjj_dS)NrIrzGuidance scale: )roundrPrr`r,rBrLrQ)rDrvals rFrz MainWindow.update_guidance_labelsQCJJOQ'' ##$:M:M:O:O 27<@K:M:M:O:O 27 dk"8999     rGc~|jd|jd|jd|jd|jd|jd|j d|j d|j t|jd|jddS)NFrrrI)rbrUrXrYr\r^rOrNrWr_rTrCr`r"get_results_pathrfrhrqs rFrzMainWindow.reset_all_settingsCs #..u555 !!%((( ""5))) %%a((( r""" **5111 ""5))) &&u--- !!":"<"<"M"M"O"OPPP ""5))) $$U+++++rG)%__name__ __module__ __qualname__r!r1r>r4rtrurvrrrrrrrrrrrrrrrrrrrrrPrr&rr-r __classcell__)rEs@rFr+r+-sMF{FFFFFF&> > > @ 888tV!V!V!p * * *''' 444XXX888111 3 3 3PPPRRRUUUSSSTTTLLL$UUU QQQ L L LRRR KKKLLLHHH HHH < < < |&&&  , , , , , , ,rGr+N)9PyQt5.QtWidgetsrrrrrrr r r r r rrrrrPyQt5rr PyQt5.QtGuirr PyQt5.QtCorerrrr PIL.ImageQtr constantsrrrr#frontend.gui.image_generator_workerr app_settingsr!pathsr"frontend.utilsr#r=r$models.interface_typesr%r&r'r(backend.lcm_modelsr) QApplication setAttributeAA_EnableHighDpiScalingAA_UseHighDpiPixmapsr+rGrFrEs$$#######11111111555555555555 EDDDDD$$$$$$******......000000GGGGGGGG333333 ##FI$EtLLL ##FI$BDIIIa,a,a,a,a,a,a,a,a,a,rG