Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

สร้างภาพวาดประสาทของคุณเองด้วย DeepStyle &Ubuntu

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

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

นี่คือตัวอย่างบางส่วนจากบทความ ภาพแรกเป็นต้นฉบับ ภาพต่อมาเป็นผลที่สร้างขึ้น โดยมีภาพวาดจากตัวอย่างที่แสดงในรูปแบบย่อ

สร้างภาพวาดประสาทของคุณเองด้วย DeepStyle &Ubuntu

น่าเสียดายที่นักวิจัยดั้งเดิมยังไม่ได้เปิดเผยรหัสของพวกเขา อย่างไรก็ตาม โปรแกรมเมอร์ที่กล้าหาญบางคนได้จำลองผลลัพธ์ของพวกเขาในช่วงสองสามวันที่ผ่านมา และโค้ดของพวกเขาก็พร้อมใช้งาน โอเพ่นซอร์สบนอินเทอร์เน็ต สิ่งที่คุณต้องใช้ก็คือเครื่อง linux และความอดทนเพียงเล็กน้อย

วันนี้ ฉันจะมาแนะนำวิธีการทำ และแสดงผลลัพธ์ของฉันเอง คุณสามารถคิดได้ว่านี่เป็นภาคต่อของบทช่วยสอน DeepDream ของเรา ค่อนข้างซับซ้อน แต่ใครก็ตามที่มีเครื่อง Linux ก็ทำตามได้ ไม่จำเป็นต้องมีประสบการณ์ในการเขียนโค้ด

การตั้งค่าซอฟต์แวร์

ก่อนอื่น ถ้าคุณไม่รีบร้อนหรือไม่มีเครื่อง Linux คุณยังสามารถเล่นกับ DeepStyle โดยใช้บอท DeepForger Twitter ได้ (ส่งรูปภาพและสไตล์ไป แล้วมันจะตอบกลับผลลัพธ์ของคุณในที่สุด ต้องการ). หากคุณต้องการประมวลผลรูปภาพเร็วขึ้น (และควบคุมผลลัพธ์ได้มากขึ้น) ให้อ่านบทแนะนำ

ก่อนอื่น ตรวจสอบให้แน่ใจว่าคุณมีสำเนาของ Ubuntu . ที่เป็นปัจจุบัน (14.04 คือสิ่งที่ฉันใช้) คุณควรมีพื้นที่ฮาร์ดไดรฟ์เพิ่มขึ้นอย่างน้อยสองสามกิ๊ก สำหรับข้อมูลเพิ่มเติม โปรดดูบทช่วยสอนของเราเกี่ยวกับการบูท Ubuntu ควบคู่ไปกับ Windows คุณจะต้องมีสิทธิ์รูทด้วย ดังนั้นโปรดตรวจสอบก่อนดำเนินการต่อ

เครื่องมือพื้นฐาน

จริงๆ แล้วนี่เป็นโครงการโอเพ่นซอร์ส เราจึงต้องการมี Git ติดตั้ง Git เป็นมาตรฐานทองคำสำหรับซอฟต์แวร์ควบคุมเวอร์ชัน แทบทุกโครงการโอเพ่นซอร์สที่น่ารู้นั้นโฮสต์บน Github

ในการดาวน์โหลดและติดตั้ง Git เพียงเปิดเทอร์มินัลแล้วพิมพ์ "

sudo apt-get install git

" และตกลงตามความต้องการของผู้ติดตั้ง

ถัดไป:เราจะตั้งค่าเครื่องมือพื้นฐานบางอย่าง จำเป็นเพื่อให้ซอฟต์แวร์ทำงานได้

ขั้นแรก ติดตั้ง Lua นี่คือภาษาที่ใช้เขียนเครื่องมือ ซึ่งค่อนข้างเรียบง่าย เพียงพิมพ์ "

sudo apt-get install lua5.2

" และทำตามขั้นตอนการติดตั้ง

อย่างที่สอง เราจะไปหา Luarocks นี่คือเครื่องมือที่ช่วยให้ติดตั้งเครื่องมืออื่นๆ ได้ง่ายขึ้น (คุณไม่ชอบ Linux หรือเปล่า) สำหรับอันนี้ พิมพ์ "

sudo apt-get install luarocks

" และทำตามขั้นตอนการติดตั้ง

ประการที่สาม เราจะติดตั้ง Luajit นี่เป็นคอมไพเลอร์แบบทันเวลาสำหรับ Lua ที่จะทำให้ชีวิตของเราง่ายขึ้นเล็กน้อย เพียงพิมพ์ "

sudo apt-get install luajit

."

จนถึงตอนนี้ดีมาก

เฟรมเวิร์ค

ต่อไป เราจะติดตั้ง Torch ซึ่งเป็นเฟรมเวิร์กการคำนวณทางวิทยาศาสตร์และแมชชีนเลิร์นนิงที่ประกอบเป็นแกนหลักของแอปพลิเคชัน ขออภัย ไม่สามารถติดตั้งอันนี้โดยใช้ apt-get (ตัวจัดการแพ็คเกจมาตรฐานของ Ubuntu)

โชคดีที่พวกเขามีโปรแกรมติดตั้งแบบบรรทัดเดียวที่ใช้เวทย์มนตร์บรรทัดคำสั่ง กลับไปที่เทอร์มินัลของคุณและป้อน "

curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-all | bash

".

เมื่อเสร็จแล้ว ให้พิมพ์ "

luajit -ltorch

" นี่จะแสดงอินเทอร์เฟซของคบเพลิงขึ้นมาและตรวจสอบว่าติดตั้งทุกอย่างถูกต้องแล้ว

ออกจากตรงนั้น

ตอนนี้เราจะติดตั้ง loadcaffe -- แพ็คเกจเฉพาะเครือข่ายประสาท ติดตั้งการพึ่งพาเพียงอย่างเดียวโดยพิมพ์ "

sudo apt-get install libprotobuf-dev protobuf-compiler

" จากนั้นคุณสามารถติดตั้งแพ็คเกจได้เองโดยใช้ "

sudo luarocks install loadcaffe"

.

ตรวจสอบการขึ้นต่อกันอีกครั้ง

สุดท้ายนี้ เราจะอัปเดตบางสิ่งล่วงหน้าเพื่อให้แน่ใจว่าทุกอย่างจะดำเนินไปอย่างราบรื่น

พิมพ์ "

sudo luarocks install image

" เพื่อให้แน่ใจว่าแพ็คเกจรูปภาพของคุณเป็นปัจจุบัน ถัดไป ให้ป้อน "

luarocks install nn

" ซึ่งจะทำเช่นเดียวกันสำหรับแพ็คเกจ 'nn' ของคุณ

การติดตั้ง Deep Style

ไม่เป็นอะไร! ณ จุดนี้ เราพร้อมที่จะติดตั้งซอฟต์แวร์แล้วจริงๆ เพื่อความปลอดภัย ให้สร้างโฟลเดอร์ใหม่ในโฮมไดเร็กตอรี่ของคุณ ('mkdir DeepStyle') จากนั้นป้อนโดยใช้ "

cd Deepstyle

" ตอนนี้พิมพ์ "

sudo git clone https://github.com/jcjohnson/neural-style.git".

ถัดไป เราต้องดาวน์โหลดโมเดล ทำกาแฟสักแก้วหรืออะไรก็ได้ จะใช้เวลาสักครู่ กลับไปที่เทอร์มินัลแล้วพิมพ์ "

sudo sh models/download_models.sh

" นั่นจะเป็นการเริ่มต้นกระบวนการดาวน์โหลดที่ยาวและซับซ้อน หากไม่สำเร็จเนื่องจากข้อผิดพลาดในการอนุญาต ให้ลองให้สิทธิ์ในการอ่าน-เขียนในโฟลเดอร์ที่เกี่ยวข้องโดยใช้ chmod

การใช้รูปแบบลึก

โอเค เราไปกันได้แล้ว การใช้ซอฟต์แวร์นั้นค่อนข้างง่าย

ตรวจสอบให้แน่ใจว่าคุณอยู่ใน ไดเร็กทอรี DeepStyle/neural-style ในเทอร์มินัล ตอนนี้ คุณจะต้องมีรูปภาพเพื่อใช้งาน ดาวน์โหลดจากอินเทอร์เน็ต (หรืออะไรก็ตาม) จากนั้นคัดลอกลงใน โฟลเดอร์ DeepStyle/neural-style โดยใช้ไฟล์เบราว์เซอร์

ตอนนี้คุณสามารถใช้บรรทัดคำสั่งเพื่อประมวลผลแต่ละภาพ รูปแบบค่อนข้างตรงไปตรงมา:

th neural_style.lua -style_image YOURPAINTINGHERE.jpg - content_image YOURPHOTOHERE.jpg -gpu -1

(แน่นอนว่า คุณจะต้องแทนที่ส่วนต่างๆ ใน ​​ALL CAPS ด้วยชื่อไฟล์ของคุณ)

นั่นจะเป็นการเริ่มต้นโครงข่ายประสาทเทียม จะใช้เวลาประมาณหนึ่งชั่วโมง โดยจะคายภาพที่รวมบางส่วนใหม่ออกทุกๆ สองสามนาทีจนกว่าจะเสร็จสิ้น

-gpu -1

ธงจะหยุดไม่ให้พยายามเข้าถึง GPU ของคุณ

หลังจากพยายามอยู่หลายชั่วโมง (และทำให้ระบบปฏิบัติการพังหลายครั้ง) ฉันไม่สามารถให้ Ubuntu และ CUDA เล่นกับ GPU ของฉันได้ดี (NVIDIA GTX 970) หากคุณโชคดีกว่านี้ คุณจะต้องติดตั้ง CUDA และ cudann.torch (ดูข้อมูลเพิ่มเติมที่ github repo) หากไม่ ก็ไม่เป็นไร มันยังทำงานโดยใช้ CPU ของคุณ มันจะช้าลงอีกนิด

หากคุณมีปัญหาในการทำงานทั้งหมดนี้ ให้ถามฉันในความคิดเห็น แล้วเราจะพยายามอย่างเต็มที่เพื่อช่วยเหลือคุณ

ผลลัพธ์

นี่คือภาพบางส่วนที่ฉันสร้างขึ้นในช่วงสองสามวันที่ผ่านมา ผลลัพธ์ที่ได้นั้นหลากหลาย แต่หลายๆ อย่างก็ค่อนข้างน่าประทับใจ

สร้างภาพวาดประสาทของคุณเองด้วย DeepStyle &Ubuntu

คลิกที่นี่เพื่อดูความละเอียดเต็ม

นี่คือเพื่อนของฉัน Zack ในการเดินทางไปเยลโลว์สโตน สไตล์นี้มาจากภาพวาดนามธรรมที่สร้างโดย Theresa Paden ฉันอยากรู้ว่าระบบจะใช้รูปภาพที่ไม่มีโครงสร้างได้อย่างไร ผลลัพธ์ที่ได้ค่อนข้างเรียบร้อย และคุณสามารถเห็นความคล้ายคลึงกับรูปภาพสไตล์ได้อย่างแน่นอน

สร้างภาพวาดประสาทของคุณเองด้วย DeepStyle &Ubuntu

คลิกที่นี่เพื่อดูความละเอียดเต็ม

อันนี้ได้รับความอนุเคราะห์จากหนึ่งในศิลปินคนโปรดของฉัน Charles Demuth (ดู:Incense of a New Church และ Figure 5 in Gold) ที่น่าสนใจคือ Demuth เป็นหนึ่งในแรงบันดาลใจด้านภาพเบื้องต้นสำหรับงานศิลปะของ Team Fortress 2 ดังที่คุณเห็นจากภาพสไตล์

ฉันป้อนรูปภาพของเจอร์ซีย์ซิตีที่ฉันพบในวิกิมีเดีย ผลลัพธ์คือ...ค่อนข้างดี มันไม่ได้ดึงเอาความเฉียบแหลมของสไตล์ของ Demuth มา แต่แน่นอนว่ามันเลือกลุคที่นุ่มนวลของพื้นผิวและจานสี

สร้างภาพวาดประสาทของคุณเองด้วย DeepStyle &Ubuntu

คลิกที่นี่เพื่อดูความละเอียดเต็ม

อันนี้เป็นความพยายามที่จะสร้าง O'Keeffe สังเคราะห์ โดยใช้ภาพธรรมดาๆ ของดอกไม้ที่ฉันพบ ผลที่ได้คือตรงไปตรงมางดงาม นี่เป็นหนึ่งในผลลัพธ์ที่ฉันโปรดปราน ความสมบูรณ์ของสีและรูปร่างของ O'Keeffe ชัดเจน ขอบกลีบดอกไม้ที่เรียงเป็นชั้นๆ จะกลายเป็นขอบใบในพื้นหลัง ดอกไม้เองก็ละลายเป็นสีจนแทบจะเป็นนามธรรม

มันจะเป็นภาพวาดที่ดีถ้ามนุษย์ทำมัน ฉันอยากจะใช้เวลาสองสามวันในการแสดงผลเวอร์ชันที่มีความละเอียดสูงกว่าของเวอร์ชันนี้และใส่กรอบ

สร้างภาพวาดประสาทของคุณเองด้วย DeepStyle &Ubuntu

คลิกที่นี่เพื่อดูความละเอียดเต็ม

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

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

สร้างภาพวาดประสาทของคุณเองด้วย DeepStyle &Ubuntu

คลิกที่นี่เพื่อดูความละเอียดเต็ม

ค่อนข้างตรงไปตรงมา:รูปภาพของหอไอเฟล และของ อื่นๆ  . ของแวนโก๊ะ สตาร์รี่ ไนท์. แสดงผลคลาวด์ในสไตล์ Van Gogh-ey ได้เป็นอย่างดี แม้จะไม่มีเมฆในภาพต้นฉบับก็ตาม นอกจากนี้ยังสามารถแปลฉากจากวันเป็นคืนได้เป็นอย่างดี

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

สร้างภาพวาดประสาทของคุณเองด้วย DeepStyle &Ubuntu

คลิกที่นี่เพื่อดูความละเอียดเต็ม

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

เทคโนโลยี

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

สิ่งที่ทำให้ฉันตื่นเต้นเกี่ยวกับเรื่องทั้งหมดนี้คือ ฉันไม่คิดว่าข้อจำกัดเหล่านั้นเป็นพื้นฐาน

แนวทางที่ใช้ในที่นี้ -- ฝึกเครือข่ายบนภาพหนึ่งและใช้เพื่อสร้างอีกภาพหนึ่ง -- เป็นพื้นฐานของการแฮ็ก ทำให้เครือข่ายมีข้อมูลน้อยมากที่จะทำงานด้วย แอปพลิเคชันเวอร์ชันขั้นสูงกว่านี้จะใช้เครือข่ายที่มีข้อมูลเกี่ยวกับภาพวาดจำนวนมาก และอาจรวมถึงรูปภาพจริงด้วย เพื่อให้มีบริบทมากมายเกี่ยวกับภาพที่พยายาม "ระบายสี"

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

ซึ่งเป็นความคิดที่แปลกมากในบางแง่

การสร้างภาพของคุณเอง

หากคุณได้ผลลัพธ์ที่น่าผิดหวัง คุณสามารถลองเล่นกับตัวเลือกต่างๆ เพื่อให้ได้ผลลัพธ์ที่น่าเชื่อมากขึ้น รายการทั้งหมดอยู่ใน Github ที่สำคัญคือ

  • -content_weight -value เงื่อนไขการสร้างเนื้อหาใหม่มีน้ำหนักเท่าใด ค่าเริ่มต้นคือ 5e0
  • -style_weight -value: น้ำหนักเท่าไหร่ให้กับภาพสไตล์ ค่าเริ่มต้นคือ 1e2
  • -style_scale - ค่า: ระบบควรวิเคราะห์แพตช์รูปภาพขนาดใหญ่เพียงใด (ขนาดใหญ่ขึ้นกลายเป็นนามธรรมมากขึ้น) ค่าเริ่มต้นคือ 1.0

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

เครดิตรูปภาพ:จิตรกรสมองมนุษย์ผ่าน Shutterstock