[2024.04.18] - ???โค้ดการฝึกอบรมและชุดข้อมูล ( AnyWord-3M ) เปิดตัวแล้ว!
[2024.04.18] - คุณสามารถรวมตุ้มน้ำหนักจากโมเดลที่ฝึกฝนด้วยตนเองหรือโมเดลชุมชนลงใน AnyText ได้แล้วตอนนี้ รวมถึงโมเดลพื้นฐานและโมเดล LoRA ที่ใช้ SD1.5 มีความสุข!
[2024.02.21] - โค้ดการประเมินและชุดข้อมูล ( AnyText-benchmark ) ได้รับการเผยแพร่
[2024.02.06] - สวัสดีปีใหม่ทุกคน! เราได้เปิดตัวแอปสนุกๆ (表情包大师/MeMeMaster) บน ModelScope และ HuggingFace เพื่อสร้างสติกเกอร์มีมสุดน่ารัก มาสนุกไปกับมัน!
[2024.01.17] - ?AnyText ได้รับการยอมรับจาก ICLR 2024( Spotlight ) แล้ว!
[2024.01.04] - การอนุมาน FP16 พร้อมใช้งานแล้ว เร็วขึ้น 3 เท่า! ขณะนี้สามารถใช้งานการสาธิตบน GPU ที่มีหน่วยความจำ >8GB ได้แล้ว สนุก!
[2024.01.04] - การสาธิต HuggingFace ออนไลน์มีให้เล่นแล้วที่นี่!
[12.28.2023] - การสาธิต ModelScope ออนไลน์พร้อมให้ใช้งานแล้วที่นี่!
[2023.12.27] - ?เราเปิดตัวจุดตรวจ (v1.1) และโค้ดการอนุมานล่าสุด ตรวจสอบ ModelScope เป็นภาษาจีน
[2023.12.05] - มีบทความวิจัยอยู่ที่นี่
หากต้องการผลงานที่เกี่ยวข้องกับ AIGC เพิ่มเติมของกลุ่มของเรา โปรดเยี่ยมชมที่นี่ และเรากำลังมองหาผู้ร่วมงานและนักศึกษาฝึกงานด้านการวิจัย (ส่งอีเมลถึงเรา)
AnyText ประกอบด้วยไปป์ไลน์การแพร่กระจายที่มีองค์ประกอบหลักสององค์ประกอบ: โมดูลแฝงเสริมและโมดูลฝังข้อความ แบบแรกใช้อินพุต เช่น สัญลักษณ์ข้อความ ตำแหน่ง และรูปภาพที่ปกปิด เพื่อสร้างคุณสมบัติแฝงสำหรับการสร้างหรือแก้ไขข้อความ อย่างหลังใช้โมเดล OCR สำหรับการเข้ารหัสข้อมูลเส้นขีดเป็นการฝัง ซึ่งผสมผสานกับการฝังคำบรรยายภาพจากโทเค็นไนเซอร์ เพื่อสร้างข้อความที่ผสานรวมกับพื้นหลังได้อย่างราบรื่น เราใช้การสูญเสียการแพร่กระจายของการควบคุมข้อความและการสูญเสียการรับรู้ข้อความสำหรับการฝึกอบรมเพื่อเพิ่มความแม่นยำในการเขียน
# Install git (skip if already done)
conda install -c anaconda git
# Clone anytext code
git clone https://github.com/tyxsspa/AnyText.git
cd AnyText
# Prepare a font file; Arial Unicode MS is recommended, **you need to download it on your own**
mv your/path/to/arialuni.ttf ./font/Arial_Unicode.ttf
# Create a new environment and install packages as follows:
conda env create -f environment.yaml
conda activate anytext
[แนะนำ] : เราปล่อยการสาธิตบน ModelScope และ HuggingFace! คุณยังสามารถลองใช้ AnyText ผ่านบริการ API ของเราได้
AnyText มีสองโหมด: การสร้างข้อความและการแก้ไขข้อความ เรียกใช้โค้ดง่ายๆ ด้านล่างเพื่อทำการอนุมานในทั้งสองโหมด และตรวจสอบว่ามีการติดตั้งสภาพแวดล้อมอย่างถูกต้องหรือไม่
python inference.py
หากคุณมี GPU ขั้นสูง (ที่มีหน่วยความจำอย่างน้อย 8G) ขอแนะนำให้ปรับใช้การสาธิตของเราตามด้านล่างนี้ ซึ่งรวมถึงคำแนะนำการใช้งาน อินเทอร์เฟซผู้ใช้ และตัวอย่างมากมาย
export CUDA_VISIBLE_DEVICES=0 && python demo.py
การอนุมาน FP16 ถูกใช้เป็นค่าเริ่มต้น และโหลดโมเดลการแปลภาษาจีนเป็นอังกฤษสำหรับการป้อนข้อมูลโดยตรงของพรอมต์ภาษาจีน (ใช้หน่วยความจำ GPU ~ 4GB) พฤติกรรมเริ่มต้นสามารถแก้ไขได้ เนื่องจากคำสั่งต่อไปนี้เปิดใช้งานการอนุมาน FP32 และปิดใช้งานโมเดลการแปล:
export CUDA_VISIBLE_DEVICES=0 && python demo.py --use_fp32 --no_translator
หากใช้ FP16 และไม่ได้ใช้โมเดลการแปล (หรือโหลดบน CPU โปรดดูที่นี่) การสร้างอิมเมจขนาด 512x512 เดียวจะใช้หน่วยความจำ GPU ~7.5GB
นอกจากนี้ ไฟล์ฟอนต์อื่นๆ ยังสามารถใช้ได้ (แม้ว่าผลลัพธ์อาจไม่เหมาะสม):
export CUDA_VISIBLE_DEVICES=0 && python demo.py --font_path your/path/to/font/file.ttf
คุณยังสามารถโหลดจุดตรวจสอบ AnyText ที่ระบุได้:
export CUDA_VISIBLE_DEVICES=0 && python demo.py --model_path your/path/to/your/own/anytext.ckpt
โปรดทราบ ว่าเมื่อดำเนินการอนุมานเป็นครั้งแรก ไฟล์โมเดลจะถูกดาวน์โหลดไปที่:
~/.cache/modelscope/hub
หากคุณต้องการแก้ไขไดเร็กทอรีดาวน์โหลด คุณสามารถระบุตัวแปรสภาพแวดล้อมได้ด้วยตนเอง: MODELSCOPE_CACHE
ในการสาธิตนี้ คุณสามารถเปลี่ยนสไตล์ระหว่างการอนุมานได้โดยเปลี่ยนโมเดลพื้นฐานหรือโหลดโมเดล LoRA (ต้องยึดตาม SD1.5):
/path/of/lora1.pth 0.3 /path/of/lora2.safetensors 0.6
ดาวน์โหลดชุดข้อมูล AnyText-benchmark จาก ModelScope หรือ GoogleDrive แล้วแตกไฟล์ ในโฟลเดอร์ เบนช์มาร์ก laion_word และ wukong_word เป็นชุดข้อมูลสำหรับการประเมินภาษาอังกฤษและภาษาจีน ตามลำดับ เปิดแต่ละ test1k.json และแก้ไข data_root
ด้วยเส้นทางโฟลเดอร์ imgs ของคุณเอง ไดเรกทอรี FID ประกอบด้วยรูปภาพที่ใช้ในการคำนวณคะแนน FID (Fréchet Inception Distance)
ก่อนการประเมิน เราจำเป็นต้องสร้างรูปภาพที่สอดคล้องกันสำหรับแต่ละวิธีตามชุดการประเมิน เรายังจัดเตรียมรูปภาพที่สร้างไว้ล่วงหน้าสำหรับทุกวิธีด้วย ทำตามคำแนะนำด้านล่างเพื่อสร้างภาพของคุณเอง โปรดทราบว่าคุณต้องแก้ไขเส้นทางและพารามิเตอร์อื่น ๆ ในสคริปต์ทุบตีตามลำดับ
bash ./eval/gen_imgs_anytext.sh
(หากคุณพบข้อผิดพลาดที่เกิดจากการบล็อก Huggingface โปรดยกเลิกการใส่เครื่องหมายบรรทัด 98 ของ ./models_yaml/anytext_sd15.yaml และแทนที่เส้นทางของโฟลเดอร์ clip-vit-large-patch14 ด้วยเส้นทางในเครื่อง)
bash eval/gen_glyph.sh
ถัดไป โปรดโคลนพื้นที่เก็บข้อมูลอย่างเป็นทางการของ ControlNet , Textdiffuser และ GlyphControl และปฏิบัติตามเอกสารประกอบเพื่อตั้งค่าสภาพแวดล้อม ดาวน์โหลดจุดตรวจสอบที่เกี่ยวข้อง และตรวจสอบให้แน่ใจว่าการอนุมานสามารถดำเนินการได้ตามปกติ จากนั้น คัดลอกไฟล์ทั้งสามไฟล์ <method>_singleGPU.py
, <method>_multiGPUs.py
และ gen_imgs_<method>.sh
จากโฟลเดอร์ ./eval ไปยังไดเร็กทอรีรากของโค้ดเบสที่เกี่ยวข้อง แล้วรัน:
bash gen_imgs_ < method > .sh
เราใช้ Sentence Accuracy (Sen. ACC) และ Normalized Edit Distance (NED) เพื่อประเมินความถูกต้องของข้อความที่สร้างขึ้น กรุณาเรียกใช้:
bash eval/eval_ocr.sh
เราใช้ตัวชี้วัด FID เพื่อประเมินคุณภาพของภาพที่สร้างขึ้น กรุณาเรียกใช้:
bash eval/eval_fid.sh
เมื่อเปรียบเทียบกับวิธีการที่มีอยู่แล้ว AnyText มีข้อได้เปรียบอย่างมากในการสร้างข้อความทั้งภาษาอังกฤษและภาษาจีน โปรดทราบว่าเราได้จัดระเบียบโค้ดใหม่และปรับการกำหนดค่าเพิ่มเติมสำหรับแต่ละวิธีภายใต้การประเมิน ด้วยเหตุนี้ จึงอาจมีความแตกต่างเชิงตัวเลขเล็กน้อยเมื่อเทียบกับที่รายงานในรายงานต้นฉบับ
anytext
จากคำแนะนำก่อนหน้านี้ ซึ่งมีการตรวจสอบเวอร์ชันของไลบรารี มิฉะนั้น หากคุณพบปัญหาการพึ่งพาด้านสิ่งแวดล้อมหรือการฝึกอบรม โปรดตรวจสอบว่าตรงกับเวอร์ชันที่ระบุไว้ใน environment.yaml
หรือไม่data_root
ด้วยเส้นทางโฟลเดอร์ imgs ของคุณเองสำหรับชุดข้อมูลย่อยแต่ละชุดpython tool_add_anytext.py
เพื่อรับโมเดลที่ได้รับการฝึกล่วงหน้าสำหรับข้อความใดๆpython train.py
Configs
ภายใน train.py โปรดตรวจสอบอย่างละเอียด @article{tuo2023anytext,
title={AnyText: Multilingual Visual Text Generation And Editing},
author={Yuxiang Tuo and Wangmeng Xiang and Jun-Yan He and Yifeng Geng and Xuansong Xie},
year={2023},
eprint={2311.03054},
archivePrefix={arXiv},
primaryClass={cs.CV}
}