
ที่เก็บนี้มีรหัสเพื่อสร้างอินสแตนซ์และปรับใช้ตัวเพิ่มความละเอียดภาพ โมเดลนี้สามารถเพิ่มภาพพิกเซลได้ด้วย 4 ปัจจัยในขณะที่สร้างรายละเอียดความสมจริงของภาพถ่าย
GAN ตั้งอยู่บนพื้นที่เก็บข้อมูลของ GitHub นี้และในบทความการวิจัยนี้
โมเดลได้รับการฝึกฝนบนชุดข้อมูล 600,000 ภาพของชุดข้อมูล OpenImages V4 และไฟล์โมเดลนั้นโฮสต์บนที่เก็บอ็อบเจ็กต์ IBM Cloud Object รหัสในที่เก็บนี้ปรับใช้โมเดลเป็นบริการเว็บในคอนเทนเนอร์ Docker พื้นที่เก็บข้อมูลนี้ได้รับการพัฒนาเป็นส่วนหนึ่งของการแลกเปลี่ยนสินทรัพย์แบบจำลอง IBM นักพัฒนาและ API สาธารณะนั้นขับเคลื่อนโดย IBM Cloud
| โดเมน | แอปพลิเคชัน | อุตสาหกรรม | กรอบ | ข้อมูลการฝึกอบรม | รูปแบบข้อมูลอินพุต |
|---|---|---|---|---|---|
| วิสัยทัศน์ | ความละเอียดสูง | ทั่วไป | เทนเซอร์โฟลว์ | OpenImages v4 | รูปภาพ (RGB/HWC) |
| set5 | srgan ของผู้แต่ง | srgan นี้ |
|---|---|---|
| PSNR | 29.40 | 29.56 |
| SSIM | 0.85 | 0.85 |
| set14 | srgan ของผู้แต่ง | srgan นี้ |
|---|---|---|
| PSNR | 26.02 | 26.25 |
| SSIM | 0.74 | 0.72 |
| BSD100 | srgan ของผู้แต่ง | srgan นี้ |
|---|---|---|
| PSNR | 25.16 | 24.4 |
| SSIM | 0.67 | 0.67 |
ประสิทธิภาพของการใช้งานนี้ได้รับการประเมินในชุดข้อมูลสามชุด: SET5, SET14 และ BSD100 การประเมินตัวชี้วัด PSNR (สัญญาณสูงสุดต่อเสียงรบกวน) และ SSIM (ดัชนีความคล้ายคลึงกันของโครงสร้าง) ได้รับการประเมินแม้ว่ากระดาษจะกล่าวถึง MOS (คะแนนความคิดเห็นเฉลี่ย) เป็นตัวชี้วัดที่ดีที่สุด ในสาระสำคัญการใช้งาน SRGAN ซื้อขายคะแนน PSNR หรือ SSIM ที่ดีขึ้นเพื่อให้ได้ผลที่ดึงดูดสายตามนุษย์มากขึ้น สิ่งนี้นำไปสู่คอลเลกชันของภาพที่มีรายละเอียดที่คมชัดและเป็นจริงมากขึ้น
หมายเหตุ: SRGAN ในกระดาษได้รับการฝึกฝนในตัวอย่าง Imagenet 350K ในขณะที่ Srgan นี้ได้รับการฝึกฝนบนรูปภาพ OpenImages V4 600K
| ส่วนประกอบ | ใบอนุญาต | การเชื่อมโยง |
|---|---|---|
| ที่เก็บนี้ | Apache 2.0 | ใบอนุญาต |
| น้ำหนักแบบจำลอง | Apache 2.0 | ใบอนุญาต |
| รหัสรุ่น (บุคคลที่สาม) | มิกซ์ | ใบอนุญาต |
| ตัวอย่างทดสอบ | CC โดย 2.0 | readme สินทรัพย์ |
| CC0 | readme สินทรัพย์ |
docker : อินเทอร์เฟซบรรทัดคำสั่ง Docker ทำตามคำแนะนำการติดตั้งสำหรับระบบของคุณในการเรียกใช้อิมเมจนักเทียบท่าซึ่งจะเริ่มต้นรุ่นที่ให้บริการ API โดยอัตโนมัติให้เรียกใช้:
$ docker run -it -p 5000:5000 quay.io/codait/max-image-resolution-enhancer
สิ่งนี้จะดึงภาพที่สร้างไว้ล่วงหน้าจาก quay.io คอนเทนเนอร์รีจิสทรี (หรือใช้ภาพที่มีอยู่หากแคชไว้ในเครื่องแล้ว) และเรียกใช้ หากคุณต้องการชำระเงินและสร้างโมเดลในเครื่องคุณสามารถทำตามขั้นตอนการรันท้องถิ่นด้านล่าง
คุณสามารถปรับใช้ Microservice ที่ให้บริการแบบจำลองบน Red Hat OpenShift โดยทำตามคำแนะนำสำหรับ OpenShift Web Console หรือแพลตฟอร์ม OpenShift Container CLI ในบทช่วยสอนนี้ระบุ quay.io/codait/max-image-resolution-enhancer เป็นชื่อรูปภาพ
นอกจากนี้คุณยังสามารถปรับใช้โมเดลบน Kubernetes โดยใช้อิมเมจนักเทียบท่าล่าสุดบน Quay
บนคลัสเตอร์ Kubernetes ของคุณเรียกใช้คำสั่งต่อไปนี้:
$ kubectl apply -f https://github.com/IBM/max-image-resolution-enhancer/raw/master/max-image-resolution-enhancer.yaml
รุ่นนี้จะพร้อมใช้งานภายในที่พอร์ต 5000 แต่ยังสามารถเข้าถึงได้จากภายนอกผ่าน NodePort
บทช่วยสอนที่ซับซ้อนยิ่งขึ้นเกี่ยวกับวิธีการปรับใช้โมเดล MAX นี้เพื่อการผลิตบน IBM Cloud สามารถพบได้ที่นี่
โคลนที่เก็บนี้ในพื้นที่ ในเทอร์มินัลเรียกใช้คำสั่งต่อไปนี้:
$ git clone https://github.com/IBM/max-image-resolution-enhancer.git
เปลี่ยนไดเรกทอรีเป็นโฟลเดอร์ฐานที่เก็บ:
$ cd max-image-resolution-enhancer
ในการสร้างอิมเมจนักเทียบท่าในพื้นที่ให้เรียกใช้:
$ docker build -t max-image-resolution-enhancer .
สินทรัพย์รุ่นที่ต้องการทั้งหมดจะถูกดาวน์โหลดในระหว่างกระบวนการสร้าง โปรดทราบ ว่าปัจจุบันอิมเมจนักเทียบท่านี้เป็น CPU เท่านั้น (เราจะเพิ่มการสนับสนุนสำหรับภาพ GPU ในภายหลัง)
ในการเรียกใช้อิมเมจนักเทียบท่าซึ่งจะเริ่มต้นรุ่นที่ให้บริการ API โดยอัตโนมัติให้เรียกใช้:
$ docker run -it -p 5000:5000 max-image-resolution-enhancer
เซิร์ฟเวอร์ API จะสร้างหน้าเอกสาร Swagger แบบโต้ตอบโดยอัตโนมัติ ไปที่ http://localhost:5000 เพื่อโหลด จากนั้นคุณสามารถสำรวจ API และสร้างคำขอทดสอบ
ใช้ model/predict จุดสิ้นสุดเพื่อโหลดภาพทดสอบ (คุณสามารถใช้หนึ่งในภาพทดสอบจากโฟลเดอร์ samples/test_examples/low_resolution ) เพื่อให้ได้ภาพเอาต์พุตความละเอียดสูง
อิมเมจอินพุตในอุดมคติคือไฟล์ PNG ที่มีความละเอียดระหว่าง 100x100 ถึง 500x500 โดยเฉพาะอย่างยิ่งโดยไม่มีการประมวลผลหลังการจับภาพและสีที่ฉูดฉาด โมเดลสามารถสร้างรายละเอียดได้จากภาพพิกเซล (DPI ต่ำ) แต่ไม่สามารถแก้ไขภาพ 'เบลอ' ได้
ซ้าย: อินพุตอิมเมจ (128 × 80) ขวา: ภาพเอาท์พุท (512 × 320)

นอกจากนี้คุณยังสามารถทดสอบได้ในบรรทัดคำสั่งเช่น:
$ curl -F "image=@samples/test_examples/low_resolution/food.png" -XPOST http://localhost:5000/model/predict > food_high_res.png
คำสั่งด้านบนจะส่งไฟล์ food.png ความละเอียดต่ำไปยังรุ่นและบันทึกภาพเอาต์พุตความละเอียดสูงไปยังไฟล์ food_high_res.png ในไดเรกทอรีรูท
ในการเรียกใช้แอพ Flask API ในโหมดการดีบักให้แก้ไข config.py เพื่อตั้งค่า DEBUG = True ภายใต้การตั้งค่าแอปพลิเคชัน จากนั้นคุณจะต้องสร้างภาพนักเทียบท่าใหม่ (ดูขั้นตอนที่ 1)
โปรดจำไว้ว่าให้ตั้ง DEBUG = False เมื่อเรียกใช้โมเดลในการผลิต
หากต้องการหยุดคอนเทนเนอร์ Docker ให้พิมพ์ CTRL + C ในเทอร์มินัลของคุณ
model/predict จุดสิ้นสุดฆ่าคอนเทนเนอร์ Docker ด้วยข้อความ Killedสิ่งนี้อาจเกิดขึ้นเนื่องจากข้อ จำกัด เริ่มต้นของการจัดสรรหน่วยความจำของ Docker เป็น 2 GB นำทางไปยังเมนู
Preferencesใต้แอปพลิเคชัน Docker Desktop ใช้แถบเลื่อนเพื่อเพิ่มหน่วยความจำที่มีอยู่เป็น 8 GB และรีสตาร์ทเดสก์ท็อป Docker
รุ่นนี้สร้างรายละเอียดโดยทั่วไป 'ออกจากอากาศบาง' การสร้างบางสิ่งบางอย่างโดยไม่มีอะไรเป็นไปไม่ได้โดยไม่ต้องตั้งสมมติฐาน เครือข่ายพยายามจดจำองค์ประกอบในภาพความละเอียดต่ำซึ่งสามารถอนุมานได้ว่าความเป็นจริง (ตามนุษย์ | ความละเอียดสูง) อาจเป็นอย่างไร หากกลุ่มของพิกเซลมีลักษณะคล้ายกับการสังเกตที่ไม่เกี่ยวข้องกับเนื้อหาของภาพมันอาจนำไปสู่การสังเกตผลลัพธ์ที่ไม่เป็นไปได้ทางร่างกาย
ตัวอย่างเช่น: พิกเซลสีขาวในภาพความละเอียดต่ำอาจถูกแปลงเป็นเกล็ดหิมะแม้ว่าภาพต้นฉบับอาจถูกถ่ายในทะเลทราย ตัวอย่างนี้เป็นจินตนาการและไม่ได้รับการสังเกต
การสังเกตสิ่งประดิษฐ์ในบางภาพน่าเสียดายที่หลีกเลี่ยงไม่ได้เนื่องจากเครือข่ายประสาทใด ๆ อยู่ภายใต้ข้อ จำกัด ทางเทคนิคและลักษณะของข้อมูลการฝึกอบรม
โปรดทราบว่าผลลัพธ์ที่ดีที่สุดจะเกิดขึ้นได้ด้วยสิ่งต่อไปนี้:
- ภาพ PNG
- ภาพที่ซูมเข้ามาอย่างเพียงพอในระหว่างกระบวนการเครือข่ายกลุ่มหนึ่งบล็อกของพิกเซลเข้าด้วยกัน หากบล็อกมีรายละเอียดมากกว่าที่เครือข่ายผลิตผลลัพธ์จะเป็นของปลอม
- ภาพที่ถ่ายภายใต้แสงธรรมชาติโดยไม่มีตัวกรองและมีสีสันสดใสหรือฉูดฉาดเล็กน้อย เครือข่ายประสาทไม่ได้รับการฝึกฝนในภาพที่แก้ไขอย่างหนัก
- ภาพที่มีความละเอียดสูงพอที่จะไม่ทำให้เครือข่ายสับสนด้วยความเป็นไปได้หลายอย่าง (เช่นพิกเซลเพียงอย่างเดียวในภาพที่มีความละเอียดต่ำมากอาจเป็นตัวแทนของรถยนต์ทั้งหมดแซนวิช .. )
- โมเดลสามารถสร้างรายละเอียดได้จากภาพพิกเซล (DPI ต่ำ) แต่ไม่สามารถแก้ไขภาพ 'เบลอ' ได้
หากคุณสนใจที่จะมีส่วนร่วมในโครงการแลกเปลี่ยนสินทรัพย์แบบจำลองหรือมีข้อสงสัยใด ๆ โปรดทำตามคำแนะนำที่นี่