รหัสสำหรับการฝึกอบรม/สร้าง GAN นั่นคือการออกแบบแบบอักษร
แบบอักษรที่สร้างขึ้นพวกเขามีสไตล์ที่หลากหลายและสามารถอ่านได้เป็นตัวละคร 
แบบสุ่มเดินในพื้นที่สไตล์อินพุต คุณสามารถดูฟอนต์ที่เปลี่ยนไปค่อยๆ


























Auther ตรวจสอบรหัสการรันในสภาพแวดล้อมต่อไปนี้เท่านั้น:
หากคุณต้องการทำงานกับสภาพแวดล้อมล่าสุดให้แก้ไขไฟล์บางไฟล์ตามความจำเป็น
อันดับแรกโคลนที่เก็บนี้ เพิ่ม --recursive เนื่องจากที่เก็บนี้มี submodule (font2img)
git clone --recursive https://github.com/uchidalab/fontdesign_gan
cd fontdesign_gan
หากคุณใช้ GPU และ Docker มันเป็นเรื่องง่ายที่จะตั้งค่าสภาพแวดล้อมของคุณ ห้องสมุดข้อกำหนดจะถูกเขียนขึ้นใน DockerFile
ติดตั้งไดรเวอร์ GPU/Nvidia Docker และเรียกใช้คำสั่งต่อไปนี้:
docker build -t fontdesign_gan .
docker run --runtime=nvidia -it --rm -p 6006:6006 --volume `pwd`:/workdir -w /workdir/ fontdesign_gan
ด้วย GPU: ติดตั้งไดรเวอร์ GPU/cuda/cudnn และเรียกใช้คำสั่งต่อไปนี้:
pip install -r requirements_gpu.txt
ด้วย CPU: เรียกใช้คำสั่งต่อไปนี้:
pip install -r requirements_cpu.txt
แปลงไฟล์ตัวอักษร (.ttf) เป็นไฟล์รูปภาพ (.png) และบรรจุไว้ในไฟล์ HDF5 (.h5)
สร้างไดเรกทอรี (เช่น ./ttfs ) และคัดลอกไฟล์ตัวอักษร ตั้งเส้นทางปลายทาง (เช่น . ./src/myfonts.h5 ) และเรียกใช้
python main.py --ttf2png --png2h5 --font_ttfs ./ttfs --font_h5 ./src/myfonts.h5
--ttf2png เป็นตัวเลือกสำหรับการแปลงไฟล์รูปภาพจะถูกบันทึกไว้ใน ./src/pngs/{YYYY-MM-DD_HHmmss} หากคุณใช้ --font_pngs ตัวเลือกคุณสามารถตั้งค่าพา ธ ด้วยตัวเอง
--png2h5 เป็นตัวเลือกสำหรับการบรรจุไฟล์แพ็คจะถูกบันทึกไว้ในเส้นทางที่คุณตั้งค่าด้วยตัวเลือก --font_h5
ตั้งค่าเส้นทางของไฟล์ที่บรรจุแล้วเรียกใช้
python main.py --train --font_h5 ./src/myfonts.h5
ผลลัพธ์จะถูกบันทึกไว้ใน ./result/{YYYY-MM-DD_HHmmss} คุณสามารถตั้งค่าปลายทางด้วย --gan_dir
ในไดเรกทอรี log ไฟล์ที่บันทึกไว้: บันทึกของแฟล็ก, การถ่ายโอนข้อมูลล่าสุดของ Tensorflow (.ckpt*), บันทึกของ Tensorboard
ในไดเรกทอรี sample ฟอนต์ที่สร้างชั่วคราวจะถูกบันทึกไว้
ในขณะที่การฝึกอบรม Tensorboard ก็ทำงานเช่นกัน เข้าถึง URL ที่จะแสดงในบรรทัดคำสั่ง
ตั้งค่าเส้นทางของไดเรกทอรีเอาต์พุตของ Gan ที่ผ่านการฝึกอบรมและไฟล์ JSON
ไฟล์ JSON ต้องเป็นรหัสสไตล์/อักขระ ID สไตล์สอดคล้องกับเมทริกซ์แบบสุ่ม รหัสอักขระที่สอดคล้องกับอักขระ
ID ถูกโหลดตามลำดับและคุณสามารถใช้ตัวถูกดำเนินการบางอย่าง ตัวอย่างเช่นหากไฟล์ JSON กำลังติดตาม:
{
"style_ids": [
"0", "5", "21", "37", "17..39:4"
],
"char_ids": [
"0-3", "6*4"
],
"col_n": 4
}
ID อินพุตจะเป็นเช่นนี้:
style_ids = [0, 5, 21, 37, (between 17 and 39 with 4 steps)]
char_ids = [0, 1, 2, 3, 6, 6, 6, 6]
และ # ของคอลัมน์ผลลัพธ์คือ 4 นอกจากนี้ยังตรวจสอบไฟล์ตัวอย่าง ( ./jsons/sample*.json )
หลังจากเตรียมไฟล์ JSON ให้เรียกใช้เช่นนี้:
python main.py --generate --gan_dir ./result/{trained} --ids ./jsons/sample01.json
ฟอนต์ที่สร้างขึ้นจะถูกบันทึกไว้ใน ./result/{trained}/generated/{YYYY-MM-DD_HHmmss}.png / {trained}/generated/ {yyyy-mm-dd_hhmmsssmpng คุณสามารถตั้งค่าชื่อไฟล์เอาต์พุตด้วย --gen_name
ภาพที่สร้างขึ้นเป็นเช่นนี้: 
หากคุณต้องการแบบอักษรการเดินแบบสุ่มให้ใช้ --generate_walk ไฟล์ JSON ไม่จำเป็น
python main.py --generate_walk --gan_dir ./result/{YYYY-MM-DD_HHmmss} --char_img_n 256
แบบอักษรของ 256 สไตล์จะถูกสร้างขึ้นและพวกมันจะถูกเปลี่ยนไปอย่างค่อยเป็นค่อยไป
มีตัวเลือกมากมาย ตรวจสอบตารางต่อไปนี้
| สำหรับ | ตัวเลือก | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|---|
| เตรียมรถไฟ | --img_width | ความกว้างของภาพ | 64 |
| เตรียมรถไฟ | --img_height | ความสูงของภาพ | 64 |
| เตรียมรถไฟ | --img_dim | มิติของภาพ | 3 |
| เตรียมรถไฟ | --chars_type | คุณสามารถเลือกประเภทตัวละคร "หมวก", "Hiragana" หรือ "หมวก, hiragana" | "แคป" |
| รถไฟสร้าง | --gpu_ids | GPU ID ที่คุณใช้ ประเภทนี้คือสตริง (เช่น "0, 1") | (ตั้งค่าโดยอัตโนมัติ) |
| รถไฟสร้าง | --batch_size | ขนาดแบทช์สำหรับกาน | 256 |
| รถไฟ | --arch | สถาปัตยกรรมของรุ่น GAN เลือก "dcgan" หรือ "resnet" | "dcgan" |
| รถไฟ | --style_ids_n | # ของรหัสสไตล์ | 256 |
| รถไฟ | --style_z_size | ขนาดของ style_z | 100 |
| รถไฟ | --gan_epoch_n | # ของการทำซ้ำยุค | 10,000 |
| รถไฟ | --critic_n | # ของการทำซ้ำนักวิจารณ์ | 5 |
| รถไฟ | --sample_imgs_interval | ช่วงเวลาของการบันทึกภาพตัวอย่าง | 10 |
| รถไฟ | --sample_col_n | # ของคอลัมน์ตัวอย่างภาพ | 26 |
| รถไฟ | --keep_ckpt_interval | ช่วงเวลาของการเก็บทิ้งของ Tensorflow | 250 |
| รถไฟ | --run_tensorboard | เรียกใช้ Tensorboard หรือไม่ | จริง |
| รถไฟ | --tensorboard_port | พอร์ตสำหรับหน้า tensorboard | 6006 |