โครงข่ายประสาทเทียมวาดภาพออนไลน์ Ostagram: บริการบนเครือข่ายประสาทเทียมที่รวมภาพถ่ายและเครื่องประดับให้เป็นผลงานศิลปะชิ้นเอก


เนื่องจากนักวิจัยชาวเยอรมันจากมหาวิทยาลัย Tübingen ได้นำเสนอแนวคิดในการถ่ายโอนสไตล์ของศิลปินชื่อดังไปยังภาพถ่ายอื่นๆ ในเดือนสิงหาคม 2558 บริการต่างๆ ก็เริ่มปรากฏให้เห็นซึ่งสร้างรายได้จากโอกาสนี้ เปิดตัวในตลาดตะวันตกและมีการเปิดตัวสำเนาทั้งหมดในตลาดรัสเซีย

บุ๊กมาร์ก

แม้ว่า Ostagram จะเปิดตัวในเดือนธันวาคม แต่ก็เริ่มได้รับความนิยมอย่างรวดเร็วบนโซเชียลเน็ตเวิร์กในช่วงกลางเดือนเมษายน ในเวลาเดียวกัน ณ วันที่ 19 เมษายน มีคนในโครงการ VKontakte ไม่ถึงพันคน

ในการใช้บริการ คุณจะต้องเตรียมรูปภาพสองรูป: ภาพถ่ายที่ต้องประมวลผล และรูปภาพพร้อมตัวอย่างสไตล์ที่จะซ้อนทับบนรูปภาพต้นฉบับ

บริการนี้มีเวอร์ชันฟรี: สร้างรูปภาพที่มีความละเอียดขั้นต่ำสูงสุด 600 พิกเซลตามด้านที่ยาวที่สุดของรูปภาพ ผู้ใช้จะได้รับผลลัพธ์ของการวนซ้ำของการใช้ฟิลเตอร์กับภาพถ่ายเพียงครั้งเดียว

มีสองเวอร์ชันที่ต้องชำระเงิน: พรีเมียมจะสร้างรูปภาพที่มีขนาดสูงสุด 700 พิกเซลในด้านที่ยาวที่สุด และใช้การประมวลผลโครงข่ายประสาทเทียมซ้ำ 600 รอบกับรูปภาพ (ยิ่งวนซ้ำมาก การประมวลผลก็จะยิ่งน่าสนใจและเข้มข้นมากขึ้น) หนึ่งภาพดังกล่าวจะมีราคา 50 รูเบิล

ในเวอร์ชัน HD คุณสามารถปรับแต่งจำนวนการวนซ้ำได้: 100 จะมีราคา 50 รูเบิลและ 1,000 จะมีราคา 250 รูเบิล ในกรณีนี้รูปภาพจะมีความละเอียดสูงถึง 1200 พิกเซลในด้านที่ยาวที่สุดและสามารถใช้สำหรับการพิมพ์บนผืนผ้าใบได้: Ostagram เสนอบริการดังกล่าวพร้อมการจัดส่งเริ่มต้นที่ 1,800 รูเบิล

ในเดือนกุมภาพันธ์ ตัวแทนของ Ostagram ประกาศว่าพวกเขาจะไม่ยอมรับคำขอการประมวลผลภาพจากผู้ใช้ "จากประเทศที่มีระบบทุนนิยมที่พัฒนาแล้ว" แต่จะเข้าถึงการประมวลผลภาพถ่ายสำหรับผู้ใช้ VKontakte จากทั่วทุกมุมโลก ตัดสินโดยรหัส Ostagram ที่เผยแพร่บน GitHub ได้รับการพัฒนาโดย Sergey Morugin ชาวเมือง Nizhny Novgorod วัย 30 ปี

TJ ติดต่อผู้อำนวยการฝ่ายการค้าของโครงการ ซึ่งแนะนำตัวเองว่าชื่อ Andrey ตามที่เขาพูด Ostagram ปรากฏตัวต่อหน้า Instapainting แต่ได้รับแรงบันดาลใจจากโครงการที่คล้ายกันที่เรียกว่า Vipart

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

ผู้สร้าง Ostagram ต้องการใช้เซิร์ฟเวอร์คลาวด์ของ Amazon ในการประมวลผลภาพ แต่หลังจากมีผู้ใช้เข้ามาจำนวนมาก ก็เห็นได้ชัดว่าค่าใช้จ่ายจะเกินหนึ่งพันดอลลาร์ต่อวันโดยมีผลตอบแทนจากการลงทุนน้อยที่สุด Andrey ซึ่งเป็นนักลงทุนในโครงการได้เช่าความจุเซิร์ฟเวอร์ใน Nizhny Novgorod

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

หากการเข้าถึงการประมวลผลภาพก่อนหน้านี้ถูกจำกัดโดยเจตนาสำหรับผู้ใช้ชาวต่างชาติ (พวกเขาคิดที่จะเริ่มสร้างรายได้ในรัสเซีย) ตอนนี้ Ostagram กำลังนับจำนวนผู้ชมชาวตะวันตกมากขึ้น

วันนี้โอกาสในการชดใช้นั้นมีเงื่อนไข หากผู้ใช้แต่ละคนจ่ายเงิน 10 รูเบิลสำหรับการประมวลผลบางทีมันอาจจะคุ้มค่า -

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

อันเดรย์ ตัวแทน Ostagram

ตามที่ Andrey ทีมงาน Ostagram กำลังทำงานบนเวอร์ชันใหม่ของเว็บไซต์โดยเน้นด้านสังคมมากขึ้น: “มันจะคล้ายกับบริการที่รู้จักกันดี แต่จะต้องทำอย่างไร” ตัวแทนของ Facebook ในรัสเซียสนใจโครงการนี้แล้ว แต่เรื่องดังกล่าวยังไม่ถึงการเจรจาขาย

ตัวอย่างงานบริการ

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

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


การแสดงภาพและทำความเข้าใจเครือข่าย Convolutional (28 พฤศจิกายน 2556)

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

ย้อนกลับ ReLu

ในเครือข่ายแบบหมุนวน มักใช้ฟังก์ชันการเปิดใช้งาน ReLu(x) = สูงสุด(0, x)ซึ่งทำให้การเปิดใช้งานทั้งหมดบนเลเยอร์ไม่เป็นลบ ดังนั้น เมื่อย้อนกลับไปสู่ความไม่เชิงเส้น ก็จำเป็นต้องได้รับผลลัพธ์ที่ไม่เป็นลบด้วย สำหรับสิ่งนี้ผู้เขียนแนะนำให้ใช้ ReLu เดียวกัน จากมุมมองทางสถาปัตยกรรม Theano จำเป็นต้องแทนที่ฟังก์ชันการไล่ระดับการดำเนินการ (สมุดบันทึกที่มีค่าอนันต์อยู่ใน Lasagna Recipes จากนั้นคุณจะได้รับรายละเอียดว่าคลาส ModifiedBackprop คืออะไร)

คลาส ZeilerBackprop(ModifiedBackprop): def grad(self, inputs, out_grads): (inp,) = inputs (grd,) = out_grads #return (grd * (grd > 0).astype(inp.dtype),) # แก้ไขอย่างชัดเจน return (self.nonlinearity(grd),) # ใช้ความไม่เชิงเส้นที่กำหนด

การพลิกกลับ

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


การบิดตัวด้วยการก้าวเท้า = 1

การบิดตัวด้วยการก้าวเท้า = 1 เวอร์ชันย้อนกลับ

การบิดตัวด้วยการก้าวเท้า = 2

การบิดตัวด้วยการก้าวเท้า = 2 เวอร์ชันย้อนกลับ

การรวมตัวแบบย้อนกลับ

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



ผลลัพธ์

อัลกอริธึมการแสดงภาพนั้นง่ายมาก:

  1. จ่ายบอลตรงๆ.
  2. เลือกเลเยอร์ที่เราสนใจ
  3. บันทึกการเปิดใช้งานของเซลล์ประสาทตั้งแต่หนึ่งตัวขึ้นไปและรีเซ็ตส่วนที่เหลือ
  4. ให้ข้อสรุปที่ตรงกันข้าม

สี่เหลี่ยมสีเทาแต่ละรูปในภาพด้านล่างสอดคล้องกับการแสดงภาพตัวกรอง (ซึ่งใช้สำหรับการบิด) หรือน้ำหนักของเซลล์ประสาทหนึ่งอัน และรูปภาพสีแต่ละภาพจะเป็นส่วนหนึ่งของรูปภาพต้นฉบับที่กระตุ้นเซลล์ประสาทที่เกี่ยวข้อง เพื่อความชัดเจน เซลล์ประสาทภายในชั้นเดียวจะถูกจัดกลุ่มออกเป็นกลุ่มตามใจความ โดยทั่วไปแล้วปรากฎว่าโครงข่ายประสาทเทียมเรียนรู้อย่างชัดเจนถึงสิ่งที่ Hubel และ Weisel เขียนเกี่ยวกับงานของพวกเขาเกี่ยวกับโครงสร้างของระบบภาพซึ่งพวกเขาได้รับรางวัลโนเบลในปี 1981 ต้องขอบคุณบทความนี้ เราจึงได้เห็นภาพว่าโครงข่ายประสาทเทียมแบบม้วนเรียนรู้อะไรในแต่ละเลเยอร์ ความรู้นี้จะช่วยให้เราสามารถจัดการเนื้อหาของภาพที่สร้างขึ้นได้ในภายหลัง แต่ยังห่างไกลออกไป ไม่กี่ปีข้างหน้าก็ถูกใช้ไปในการปรับปรุงวิธีการของโครงข่ายประสาทเทียมแบบ "trepanning" นอกจากนี้ ผู้เขียนบทความยังเสนอวิธีวิเคราะห์วิธีที่ดีที่สุดในการสร้างสถาปัตยกรรมของเครือข่ายประสาทเทียมเพื่อให้ได้ผลลัพธ์ที่ดีขึ้น (แม้ว่าพวกเขาจะไม่ชนะ ImageNet 2013 แต่พวกเขากลับขึ้นไปอยู่ด้านบนสุด) รปภ: ปรากฎว่าพวกเขาชนะ Clarifai คือสิ่งที่พวกเขาเป็น)


การแสดงภาพคุณสมบัติ


นี่คือตัวอย่างของการแสดงภาพการเปิดใช้งานโดยใช้ deconvnet ในปัจจุบันผลลัพธ์นี้ดูพอใช้ได้ แต่แล้วมันก็เป็นความก้าวหน้า


แผนที่ความโดดเด่นโดยใช้ deconvnet

เครือข่าย Convolutional ภายในลึก: การแสดงแบบจำลองการจำแนกประเภทรูปภาพและแผนที่ความโดดเด่น (19 เมษายน 2014)

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

การแสดงโมเดลคลาส

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



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


def Compile_saliency_function(net): """ รวบรวมฟังก์ชันเพื่อคำนวณแผนที่ความโดดเด่นและคลาสที่คาดการณ์ไว้สำหรับมินิแบทช์ที่กำหนดของอิมเมจอินพุต """ inp = net["input"].input_var outp = lasagne.layers.get_output(net ["fc8"], กำหนด=True) max_outp = T.max(outp, แกน=1) saliency = theano.grad(max_outp.sum(), wrt=inp) max_class = T.argmax(outp, แกน=1) กลับ theano.function(, )

คุณอาจเคยเห็นภาพแปลกๆ ที่มีหน้าสุนัขบนอินเทอร์เน็ต - DeepDream ในรายงานต้นฉบับ ผู้เขียนใช้กระบวนการต่อไปนี้เพื่อสร้างภาพที่ขยายคลาสที่เลือกให้สูงสุด:

  1. เริ่มต้นภาพเริ่มต้นด้วยศูนย์
  2. คำนวณค่าอนุพันธ์จากภาพนี้
  3. เปลี่ยนรูปภาพโดยเพิ่มรูปภาพผลลัพธ์จากอนุพันธ์ลงไป
  4. กลับไปที่จุดที่ 2 หรือออกจากวง

ภาพที่ออกมาคือ:




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


ข้อควรระวัง 60mb


ทำไมจึงมีหน้าและตาสุนัขมากมาย? ง่ายมาก: มีสุนัขเกือบ 200 ตัวจาก 1,000 คลาสในอิมเมจเน็ต พวกมันมีตา และยังมีอีกหลายชั้นเรียนที่มีแต่คน

การสกัดจุดเด่นของคลาส

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


แผนที่ความโดดเด่นโดยใช้อนุพันธ์


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

มุ่งมั่นเพื่อความเรียบง่าย: The All Convolutional Net (13 เมษายน 2558)

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




คลาส GuidedBackprop (ModifiedBackprop): def grad (ตัวเอง, อินพุต, out_grads): (inp,) = อินพุต (grd,) = out_grads dtype = inp.dtype return (grd * (inp > 0).astype (dtype) * (grd > 0).astype(dtype),)

จากนั้นคุณจะได้ภาพที่สะอาดและตีความได้อย่างสมบูรณ์


แผนที่ความโดดเด่นโดยใช้ Guided Backpropagation

เจาะลึกลงไปอีก

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


มาลองการทดลองต่อไปนี้บนเครือข่าย VGG-19:



การแปลง1_2

ใช่ คุณแทบจะมองไม่เห็นอะไรเลย เพราะ... พื้นที่รับสัญญาณมีขนาดเล็กมาก นี่คือการบิดครั้งที่สองของ 3x3 ตามลำดับ พื้นที่ทั้งหมดคือ 5x5 แต่เมื่อซูมเข้าเราจะเห็นว่าฟีเจอร์นี้เป็นเพียงตัวตรวจจับความลาดชัน




การแปลง3_3


Conv4_3


Conv5_3


พูล5


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


การแปลง1_1


การแปลง2_2


Conv4_3


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

อัลกอริธึมประสาทของสไตล์ศิลปะ (2 ก.ย. 2558)

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

การสูญเสียเนื้อหา

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




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



หากต้องการทดลองใช้บทความนี้ คุณสามารถใช้แล็ปท็อปมหัศจรรย์เครื่องนี้ซึ่งมีการคำนวณ (ทั้งบน GPU และ CPU) GPU ใช้ในการคำนวณคุณสมบัติของโครงข่ายประสาทเทียมและค่าของฟังก์ชันต้นทุน Theano สร้างฟังก์ชันที่สามารถคำนวณความชันของฟังก์ชันวัตถุประสงค์ได้ eval_gradโดยใส่รูปภาพ x- จากนั้นจะถูกป้อนเข้าสู่ lbfgs และกระบวนการวนซ้ำจะเริ่มต้นขึ้น


# เริ่มต้นด้วยภาพสัญญาณรบกวนที่สร้าง_image.set_value(floatX(np.random.uniform(-128, 128, (1, 3, IMAGE_W, IMAGE_W)))) x0 = สร้างภาพ.get_value().astype("float64") xs = xs.append(x0) # ปรับให้เหมาะสม บันทึกผลลัพธ์เป็นระยะสำหรับ i ในช่วง (8): print(i) scipy.optimize.fmin_l_bfgs_b(eval_loss, x0.flatten(), fprime=eval_grad, maxfun=40) x0 = สร้าง_รูปภาพ.get_value().astype("float64") xs.ผนวก(x0)

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


การสูญเสียเนื้อหา: conv4_2



กระบวนการเพิ่มประสิทธิภาพ




ง่ายต่อการสังเกตเห็นคุณสมบัติสองประการของภาพที่ได้:

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

การเพิ่มเลเยอร์แรกๆ จะช่วยแก้ไขสถานการณ์สีได้ทันที


การสูญเสียเนื้อหา: conv1_1, conv2_1, conv4_2


หวังว่าตอนนี้คุณจะรู้สึกว่าคุณสามารถควบคุมสิ่งที่จะถูกวาดใหม่ลงบนภาพไวท์นอยส์ได้

การสูญเสียสไตล์

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


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




จากนั้น Style Loss จะถูกป้อนดังนี้ โดยที่ - นี่คือภาพที่มีสไตล์:



เรามาลองให้วินเซนต์ดูไหม? โดยหลักการแล้วเราได้รับสิ่งที่คาดหวัง - สัญญาณรบกวนในรูปแบบของ Van Gogh ข้อมูลเกี่ยวกับการจัดเรียงคุณสมบัติเชิงพื้นที่หายไปโดยสิ้นเชิง


วินเซนต์




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


ภาพถ่ายที่สูญเสียสไตล์


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




การสูญเสียสไตล์เรียบง่าย

ขาดทุนรวมกัน

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



จริงๆ แล้วยังมีตัวทำให้สม่ำเสมอด้วย แต่เราจะละเว้นไว้เพื่อความเรียบง่าย ยังคงต้องตอบคำถามต่อไปนี้: ควรใช้เลเยอร์ (น้ำหนัก) ใดในระหว่างการปรับให้เหมาะสม? และฉันเกรงว่าฉันไม่มีคำตอบสำหรับคำถามนี้ และผู้เขียนบทความก็ไม่มีคำตอบเช่นกัน พวกเขามีข้อเสนอให้ใช้สิ่งต่อไปนี้ แต่ไม่ได้หมายความว่าชุดค่าผสมอื่นจะทำงานได้แย่ลงเลย พื้นที่ค้นหามีขนาดใหญ่เกินไป กฎข้อเดียวที่ตามมาจากการทำความเข้าใจโมเดล: ไม่มีประโยชน์ที่จะต้องใช้เลเยอร์ที่อยู่ติดกันเพราะว่า คุณลักษณะของพวกมันจะไม่แตกต่างกันมากนัก ดังนั้นจึงมีการเพิ่มเลเยอร์จากแต่ละกลุ่ม Conv*_1 ให้กับสไตล์


# กำหนดฟังก์ชั่นการสูญเสีย loss = # การสูญเสียเนื้อหา loss.append(0.001 * content_loss(photo_features, gen_features, "conv4_2")) # loss loss.append(0.2e6 * style_loss(art_features, gen_features, "conv1_1")) loss.append (0.2e6 * style_loss(art_features, gen_features, "conv2_1")) loss.append(0.2e6 * style_loss(art_features, gen_features, "conv3_1")) loss.append(0.2e6 * style_loss(art_features, gen_features, "conv4_1") ) loss.append(0.2e6 * style_loss(art_features, gen_features, "conv5_1")) # การสูญเสียการลงโทษรูปแบบรวม ผนวก (0.1e-7 * Total_variation_loss(generated_image)) Total_loss = ผลรวม (การสูญเสีย)

แบบสุดท้ายสามารถนำเสนอได้ดังนี้




และนี่คือผลงานของบ้านที่มีแวนโก๊ะ



กำลังพยายามควบคุมกระบวนการ

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




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


ตัวอย่างการจัดการสีและขนาดของฟีเจอร์


หรือคุณสามารถใช้รูปภาพที่เรียบง่ายเป็นสไตล์ได้



ผลลัพธ์








นี่คือวิดีโอ แต่มีพื้นผิวที่ถูกต้องเท่านั้น

เครือข่ายพื้นผิว: การสังเคราะห์พื้นผิวและภาพที่มีสไตล์แบบฟีดไปข้างหน้า (10 มีนาคม 2559)

ดูเหมือนว่าเราสามารถหยุดอยู่แค่นั้นได้ถ้าไม่ใช่เพื่อความแตกต่างเล็กน้อย อัลกอริธึมการจัดรูปแบบข้างต้นใช้เวลานานมากในการดำเนินการให้เสร็จสิ้น หากเราดำเนินการโดยที่ lbfgs ทำงานบน CPU กระบวนการจะใช้เวลาประมาณห้านาที หากคุณเขียนใหม่เพื่อให้การเพิ่มประสิทธิภาพไปที่ GPU กระบวนการจะใช้เวลา 10-15 วินาที นี่ไม่ใช่เรื่องดี บางทีผู้เขียนบทความนี้และบทความถัดไปอาจคิดเรื่องเดียวกัน สิ่งพิมพ์ทั้งสองได้รับการตีพิมพ์แยกกัน ห่างกัน 17 วัน เกือบหนึ่งปีหลังจากบทความก่อนหน้านี้ ผู้เขียนบทความปัจจุบัน เช่นเดียวกับผู้เขียนบทความก่อนหน้า มีส่วนร่วมในการสร้างพื้นผิว (หากคุณเพิ่งรีเซ็ต Style Loss ให้เป็นศูนย์ คุณจะได้รับสิ่งนี้) พวกเขาเสนอให้ปรับให้เหมาะสมไม่ใช่ภาพที่ได้รับจากสัญญาณรบกวนสีขาว แต่เป็นโครงข่ายประสาทเทียมบางส่วนที่สร้างภาพที่มีสไตล์




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



การสูญเสียการรับรู้สำหรับการถ่ายโอนสไตล์แบบเรียลไทม์และความละเอียดขั้นสูง (27 มีนาคม 2559)

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




ดังนั้น บล็อกที่เหลือและบล็อกคอนวี



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

จบ

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



สร้างบางอย่างเช่นนี้


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

มันเกิดขึ้นดังนี้: อัลกอริธึมวิเคราะห์ภาพถ่าย ค้นหาชิ้นส่วนในนั้นที่เตือนให้นึกถึงวัตถุที่คุ้นเคย - และบิดเบือนภาพตามข้อมูลเหล่านี้

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

โครงข่ายประสาทเทียมเรียนรู้การสร้างภาพดังกล่าวได้อย่างไร แล้วทำไมถึงเรียกแบบนั้นล่ะ?

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

อัลกอริทึมในการเล่นหมากรุก เช่น วิเคราะห์เกมหมากรุก ในทำนองเดียวกันอัลกอริทึม AlphaGo จาก Google DeepMind ในเกม Go ของจีนซึ่งถูกมองว่าเป็นความก้าวหน้าเนื่องจาก Go นั้นซับซ้อนกว่าและไม่เป็นเชิงเส้นมากกว่าหมากรุก

    คุณสามารถลองใช้โมเดลโครงข่ายประสาทเทียมที่เรียบง่ายและเข้าใจหลักการของมันได้ดียิ่งขึ้น

    นอกจากนี้ยังมีชุดภาพวาดที่เข้าใจง่ายบน YouTube ลูกกลิ้งเกี่ยวกับการทำงานของโครงข่ายประสาทเทียม

บริการยอดนิยมอีกอย่างหนึ่งคือ Dreamscope ซึ่งไม่เพียงแต่ฝันถึงสุนัขเท่านั้น แต่ยังเลียนแบบสไตล์การวาดภาพที่หลากหลายอีกด้วย การประมวลผลภาพที่นี่ก็ง่ายและรวดเร็วมาก (ประมาณ 30 วินาที)

เห็นได้ชัดว่าส่วนอัลกอริธึมของบริการคือการปรับเปลี่ยนโปรแกรม "สไตล์ประสาท" ซึ่งเราได้พูดคุยไปแล้ว

เมื่อเร็ว ๆ นี้ปรากฏว่ามีโปรแกรมที่ให้สีภาพขาวดำอย่างสมจริง ในเวอร์ชันก่อนหน้านี้ โปรแกรมที่คล้ายกันทำงานได้ไม่ดีนัก และถือว่าประสบความสำเร็จอย่างมากหากผู้คนอย่างน้อย 20% ไม่สามารถแยกแยะภาพจริงจากภาพที่ระบายสีด้วยคอมพิวเตอร์ได้

นอกจากนี้ การปรับสีที่นี่ใช้เวลาประมาณ 1 นาทีเท่านั้น

บริษัทพัฒนาเดียวกันนี้ยังได้เปิดตัวบริการที่สามารถจดจำวัตถุประเภทต่างๆ ในรูปภาพได้

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

การสอนอัลกอริธึมให้จดจำภาพเป็นงานที่นักพัฒนาปัญญาประดิษฐ์ต้องดิ้นรนมาเป็นเวลานาน ดังนั้นโปรแกรมที่สร้างสีสันให้กับภาพถ่ายเก่าๆ และวาดภาพสุนัขบนท้องฟ้าจึงถือเป็นส่วนหนึ่งของกระบวนการที่ใหญ่กว่าและน่าสนใจยิ่งขึ้น