โครงข่ายประสาทเทียมของภาพ การจัดแต่งรูปภาพโดยใช้โครงข่ายประสาทเทียม: ไม่มีเวทย์มนต์ แค่มาตัน

บ้าน / อดีต

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

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

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

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

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

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

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

    Youtube ยังมีซีรี่ย์ที่อ่านง่าย ลูกกลิ้งเกี่ยวกับวิธีการทำงานของโครงข่ายประสาทเทียม

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

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

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

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

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

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

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

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


การสร้างภาพและทำความเข้าใจกับ Convolutional Networks (28 พ.ย. 2556)

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

ย้อนกลับ ReLu

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

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

ย้อนกลับ convolution

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


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

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

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

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

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

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



ผลลัพธ์

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

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

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


การแสดงภาพคุณลักษณะ


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


แผนที่ Salency โดยใช้ deconvnet

Deep Inside Convolutional Networks: การแสดงภาพแบบจำลองการจำแนกรูปภาพและแผนที่เด่น (19 เมษายน 2014)

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

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

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



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


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

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

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

ภาพที่ได้คือ:




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


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


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

การแยกระดับความสามารถ

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


Salency Maps โดยใช้อนุพันธ์


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

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

โดยทั่วไป บทความนี้ไม่ได้เกี่ยวกับการสร้างภาพข้อมูล แต่เกี่ยวกับความจริงที่ว่าการแทนที่การรวมกลุ่มด้วยการบิดเป็นเกลียวด้วยก้าวย่างขนาดใหญ่ไม่ได้นำไปสู่การสูญเสียคุณภาพ แต่เป็นผลพลอยได้จากการวิจัย ผู้เขียนได้เสนอวิธีใหม่ในการแสดงภาพคุณลักษณะ ซึ่งพวกเขาเคยใช้ในการวิเคราะห์สิ่งที่โมเดลเรียนรู้ได้แม่นยำยิ่งขึ้น แนวคิดของพวกเขามีดังนี้: หากเราแค่หาอนุพันธ์ ในระหว่าง deconvolution คุณสมบัติเหล่านั้นที่น้อยกว่าศูนย์บนอิมเมจอินพุตจะไม่ย้อนกลับ (โดยใช้ 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),)

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


แผนที่ Saliency โดยใช้คำแนะนำ Backpropagation

ลงลึก

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


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



Conv1_2

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




Conv3_3


Conv4_3


conv5_3


pool5


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


Conv1_1


Conv2_2


Conv4_3


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

อัลกอริธึมประสาทของรูปแบบศิลปะ (2 ก.ย. 2558)

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

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

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




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



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


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

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


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



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




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

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

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


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


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

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

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


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




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



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


Vincent




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


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


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




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

คอมโบขาดทุน

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



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


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

รุ่นสุดท้ายสามารถแสดงได้ดังนี้




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



พยายามควบคุมกระบวนการ

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




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


ตัวอย่างการปรับแต่งสีและขนาดของคุณสมบัติ


หรือจะถ่ายภาพธรรมดาๆ เป็นสไตล์ก็ได้



ผลลัพธ์








และนี่คือวิโดสิกแต่ได้เท็กซ์เจอร์ที่ต้องการเท่านั้น

Texture Networks: Feed-forward Synthesis of Textures and Stylized Images (10 มี.ค. 2016)

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




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



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

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




บล็อกที่เหลือและบล็อก Conv. ตามลำดับ



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

จุดจบ

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



สร้างอะไรแบบนั้น


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

ที่คั่นหน้า

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

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

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

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

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

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

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

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

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

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

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

จนถึงปัจจุบัน โอกาสในการชดใช้เป็นไปตามอำเภอใจ หากผู้ใช้แต่ละคนจ่าย 10 รูเบิลสำหรับการประมวลผล บางทีมันอาจจะจ่ายออกไป […]

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

Andrey ตัวแทนของ Ostagram

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

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

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

© 2021 skudelnica.ru - ความรัก, การทรยศ, จิตวิทยา, การหย่าร้าง, ความรู้สึก, การทะเลาะวิวาท