การแนะนำ

โพสต์นี้จะแสดงให้คุณเห็นถึงวิธีการถ่ายภาพชุดและเวกเตอร์รูปภาพ และเตรียมพร้อมสำหรับการแสดงภาพใน TensorBoard ของ TensorFlow

ลองนึกภาพฉันกำลังทำงานกับชุดข้อมูลรูปภาพ (ไม่ต้องใช้จินตนาการมากนัก…) อาจใช้เพื่อการจำแนกประเภท อาจใช้เพื่อฝึกแบบจำลองเชิงกำเนิด หรืออาจใช้ทำนายปริมาณน้ำฝนรายวันในเมืองแอนติโกนิช โนวาสโกเชีย สำหรับโพสต์นี้ ฉันไม่สำคัญว่าฉันใช้รูปภาพเพื่ออะไร สำหรับโพสต์นี้ สิ่งสำคัญคือฉันได้ส่งรูปภาพของฉันผ่านแบบจำลองที่แมปรูปภาพเหล่านั้นไปยังพื้นที่ฝัง และตอนนี้ฉันมีการแสดงรูปภาพของฉันแบบฝัง (หรือที่เรียกว่าเวกเตอร์)

ตอนนี้ ด้วยเวกเตอร์รูปภาพเหล่านี้ ฉันอยากจะเข้าใจว่าพื้นที่ที่ฝังไว้นั้นเป็นอย่างไร มีหลายวิธีในการดำเนินการนี้ แต่วิธีที่รวดเร็ววิธีหนึ่งที่ฉันทำคือใช้ TensorBoard ของ TensorFlow มันให้การแสดงภาพที่สวยงามแก่ฉัน และฉันสามารถเรียกใช้อัลกอริธึม 2D/3D PCA และ t-SNE บนเวกเตอร์รูปภาพของฉันได้โดยตรงในเบราว์เซอร์ของฉัน เวอร์ชันสาธิตของ TensorBoard มี "UMAP" 😮 TensorBoard มาพร้อมกับ TensorFlow เพื่อให้คุณสามารถติดตั้งได้โดยทำตาม คู่มือการติดตั้ง TensorFlow

เมื่อฉันพยายามทำสิ่งนี้ครั้งแรก ฉันพบว่าไม่มีแหล่งข้อมูลดีๆ มากมายที่จะแนะนำวิธีเตรียมรูปภาพสำหรับ TensorBoard มี "ปัญหา GitHub" และปัญหา GitHub อีกปัญหาหนึ่งที่บอกว่า "ไม่มีตัวอย่างโค้ด" แม้ว่าลิงก์ที่สองจะมีแหล่งข้อมูลอยู่บ้าง แต่ก็ยังเข้าถึงได้ไม่ง่ายนัก ฉันหวังว่าโพสต์นี้จะช่วยอธิบายวิธีแสดงภาพเวกเตอร์ฟีเจอร์รูปภาพใน TensorBoard ได้อย่างตรงไปตรงมา

ด้วยจิตวิญญาณแห่งความตรงไปตรงมา คุณจะพบ "สมุดบันทึก jupyter ที่นี่" พร้อมโค้ดในกรณีที่คุณไม่สนใจที่จะเดินผ่าน

รหัส

ในสองสามย่อหน้าถัดไป ฉันจะอธิบายวิธีเปลี่ยนจากรูปภาพและเวกเตอร์รูปภาพไปเป็นการนำเสนอที่สามารถมองเห็นเป็นภาพได้ใน TensorBoard เพื่อให้ใช้งานได้ โมเดลที่ฉันได้รับเวกเตอร์รูปภาพไม่จำเป็นต้องอยู่ใน TensorFlow อาจเป็น PyTorch, Chainer อะไรก็ได้ ตราบใดที่เวกเตอร์สามารถบันทึกเป็นอาร์เรย์ numpy ได้ ก่อนอื่นฉันจะสร้างภาพต่อเรียงสำหรับ TensorBoard จากนั้นบันทึกเวกเตอร์รูปภาพของฉันเป็นตัวแปร TensorFlow เพื่อให้ TensorBoard สามารถอ่านและเชื่อมโยงกับภาพต่อเรียงได้

สร้างภาพต่อเรียงด้วยฟังก์ชันต่อไปนี้:

เมื่อดูโค้ดแล้ว บล็อกแรกจะปรับภาพทั้งหมดให้เป็นภาพ RGB 3 ช่อง บล็อกที่สองเพิ่มช่องว่างภายในรูปภาพ ภาพต่อเรียงควรเป็นรูปสี่เหลี่ยมจัตุรัส ดังนั้นเราจึงคำนวณช่องว่างภายในที่เราต้องการเพื่อจัดเรียงภาพให้เป็นสี่เหลี่ยมจัตุรัส โค้ดบล็อกที่สามจะเรียงแต่ละภาพให้เป็นภาพสไปรท์สี่เหลี่ยม

เมื่อใช้ฟังก์ชันนี้ในตัวอย่าง อาจมีลักษณะดังนี้:

ตอนนี้ ฉันจะโหลดเวกเตอร์ฟีเจอร์ สร้างข้อมูลเมตา และบันทึกไว้สำหรับการโหลดลงใน TensorBoard:

รหัสควรง่ายต่อการปฏิบัติตาม ฉันสร้างไฟล์ข้อมูลเมตา จากนั้นเพิ่มการฝังลงในการกำหนดค่า TensorBoard และแนบข้อมูลเมตาและสไปรท์กับการฝัง

การแสดงภาพ

จากนั้น ฉันจะเปิด TensorBoard และดูความมหัศจรรย์ที่เกิดขึ้น

$ tensorboard --logdir my-log-dir

บทสรุป

ขอบคุณที่อ่าน. ฉันได้แสดงให้คุณเห็นถึงวิธีถ่ายภาพเวกเตอร์คุณลักษณะและรูปภาพที่เกี่ยวข้อง และเตรียมพร้อมสำหรับการแสดงภาพใน TensorBoard ฉันหวังว่าคุณจะสนุกกับการโพสต์ คุณสามารถดูตัวอย่างการทำงาน (พร้อมกับข้อมูล!) ได้ที่ github อย่าลังเลที่จะติดต่อเราหากมีคำถามใดๆ

คุณสามารถติดตามฉันสำหรับเนื้อหาเพิ่มเติมบน Twitter @andrewbrownmart