เนื้อหาที่มีภาพประกอบสำหรับผู้ใหญ่ที่สร้างขึ้นในญี่ปุ่นจะต้องได้รับการตรวจสอบตามกฎหมาย การเซ็นเซอร์ทั่วไปสองประเภท ได้แก่ แถบเซ็นเซอร์และการเบลอภาพโมเสก สำหรับพวกเราที่อาศัยอยู่นอกประเทศญี่ปุ่นเสื่อมโทรม นั่นหมายความว่าพวกเรายังต้องอยู่ภายใต้การควบคุมของบาร์และโมเสก มีวิธีแก้ไข DeepCreamPy โดย deeppomf ที่สามารถดึงเซ็นเซอร์มาได้ โดยให้คุณบอกว่าเซ็นเซอร์อยู่ที่ไหน นั่นเป็นกระบวนการที่ใช้เวลานานและอุตสาหะ ดังนั้นฉันหวังว่าจะทำให้กระบวนการนั้นเป็นแบบอัตโนมัติกับโปรเจ็กต์นี้ โปรเจ็กต์นี้จะใช้การเรียนรู้เชิงลึกและการแบ่งส่วนภาพ ซึ่งเป็นเทคนิคที่มักใช้ในยานยนต์ขับเคลื่อนอัตโนมัติและงานคอมพิวเตอร์วิทัศน์ ใหม่สำหรับ 1.6.3 เราได้เพิ่ม ESRGAN เป็นทางเลือกแทน DeepCreamPy ซึ่งจะตรวจจับภาพโมเสค/วิดีโอหลังการตรวจจับด้วย
สิ่งนี้สร้างขึ้นบน Mask R-CNN ของ Matterport และการถอดรหัสวิดีโอใช้ ESRGAN
นี่คือวิดีโอ NSFW ที่แสดงได้ดีขึ้นว่าโปรเจ็กต์นี้ทำอะไรในรุ่นเก่า 161
ทวิตเตอร์ (NSFW)
ชอบสิ่งที่คุณเห็น? ช่วยเหลือกองทุนโครงการนี้:
คุณสามารถเข้าร่วมการพัฒนาและการอภิปรายข่าวสารได้ที่ช่อง Discord: https://discord.gg/j4dPZ7W
ตัวอย่างการตรวจจับแท่งในรุ่น 226:
ตัวอย่างการตรวจจับโมเสกในรุ่น 236:
สำหรับทั้งสองตัวอย่างดังกล่าว รุ่นใหม่ล่าสุด 161 ให้การมาสก์และการตรวจจับที่แม่นยำยิ่งขึ้นมาก
คุณจะต้องมีข้อกำหนดเดียวกันกับการใช้งาน Mask RCNN ของ Matterport ไม่มีอะไรเพิ่มเติม โปรดทราบว่าฉันใช้ tensorflow 1.8.0, tensorflow-gpu 1.9.0, torch 0.4.1 และ keras 2.2.0 ฉันยังไม่ได้ทดสอบความเสถียรของชุดค่าผสมที่ใหม่กว่าอย่างสมบูรณ์ ฉันใช้ Anaconda3 สำหรับบรรทัดคำสั่งของฉัน
รองรับเฉพาะ windows สำหรับปฏิบัติการเท่านั้น คุณสามารถดึงรหัสนี้สำหรับ linux
main.py ประกอบด้วย GUI และการจัดการ I/O และการแยกวิเคราะห์ไฟล์ทั้งหมด พร้อมด้วยการตรวจจับข้อผิดพลาดพื้นฐาน สร้างคลาสตัวตรวจจับทันที
detector.py ประกอบด้วยคลาสตัวตรวจจับของฉัน ซึ่งมีหน้าที่รับผิดชอบในการนำโครงข่ายประสาทเทียม เริ่มต้นการตรวจจับการอนุมาน และสร้างโอเวอร์เลย์จากมาสก์สำหรับ DCP ไม่ต้องการ Hentai.py อีกต่อไป และสามารถเรียกใช้การตรวจจับได้ด้วยตัวเอง รองรับการทำงานของ ESRGAN ด้วย
Hentai.py อินเทอร์เฟซระหว่างตัวตรวจจับของฉันกับโมเดล อ้างอิงจาก Balloon.py ของการนำ Mask RCNN ไปใช้ จำเป็นสำหรับการฝึกอบรมเท่านั้น
inspect_h_model.ipynb สมุดบันทึกนี้เหมือนกับสมุดบันทึกแบบบอลลูน ฉันแก้ไขให้ทำงานกับโปรเจ็กต์นี้แทน และเหมาะที่สุดในการตรวจสอบโมเดล สำหรับการบันทึกโดยละเอียด ให้ใช้ Tensorboard (ซึ่งควรติดตั้งหากคุณมีเทนเซอร์โฟลว์)
inspect_h_data.ipynb เช่นเดียวกับข้างต้น ยกเว้นสมุดบันทึกนี้ใช้เพื่อตรวจสอบชุดข้อมูล นอกจากนี้ยังมีข้อมูลดีๆ ที่แสดงถึงลักษณะเฉพาะและฟีเจอร์ของ MaskRcnn
test_combined_generator.py สคริปต์ที่ทำให้การเซ็นเซอร์แท่งและคำอธิบายประกอบเป็นแบบอัตโนมัติ อธิบายเพิ่มเติมด้านล่าง สิ่งนี้มีไว้เพื่อวางไว้ในโฟลเดอร์แยกต่างหาก และคาดว่าจะมีรูปภาพที่ไม่ถูกเซ็นเซอร์ในโฟลเดอร์ชื่อ "decensored_input" และส่งออกรูปภาพที่ถูกห้ามไปที่ "decensored_input_Original" และเติม csv พร้อมคำอธิบายประกอบ คุณไม่จำเป็นต้องใช้สคริปต์นี้ เว้นแต่คุณต้องการช่วยในการขยายชุดข้อมูล ในกรณีใดให้เข้าร่วม Discord และติดต่อฉัน
hent_AI_COLAB_1.ipynb สมุดบันทึก Google Colab พร้อมคำแนะนำสำหรับการถอดรหัสวิดีโอ ESRGAN ซึ่งจะใช้ GPU ของ Google บนคลาวด์ได้ฟรี และควรจะเร็วกว่า GPU ส่วนใหญ่ (หากไม่ใช่สำหรับผู้บริโภคทั้งหมด) แต่เซสชันจะถูกลบหลังจากไม่ได้ใช้งานเป็นเวลา 30 นาทีหรือ 12 ชั่วโมง ฉันขอแนะนำตัวเลือกนี้สำหรับการถอดรหัสวิดีโอทุกประเภท มันมีภาพที่ดีเพียงพอและรวดเร็วมาก
green_mask_project_mosaic_solution.py สคริปต์จาก GMP ที่ประมาณรายละเอียดของโมเสก (ขนาดของกล่องโมเสก) เพื่อใช้ในการถอดรหัส ESRGAN
ไฟล์การกำหนดค่า hconfig.ini ที่เก็บข้อมูลไดเร็กทอรี
ชุดข้อมูลมีส่วนผสมของคำอธิบายประกอบที่ทำด้วยมือบางส่วน และรูปภาพคำอธิบายประกอบที่ทำด้วยมือส่วนใหญ่โดยใช้ test_combined_generator ของเรา สคริปต์นี้นำรูปภาพที่ไม่ถูกเซ็นเซอร์มาเป็นอินพุต และสามารถสร้างโคลนของรูปภาพด้วยโมเสกและเซ็นเซอร์แท่งสุ่มได้ โดยใช้ NudeNet ชุดข้อมูลนี้ไม่ได้ระบุไว้ที่นี่ สนใจติดต่อผมได้ที่ Discord ครับ หากสนใจ
คำอธิบายประกอบชุดข้อมูลถูกสร้างขึ้นด้วยรูปทรงหลายเหลี่ยม แอ็ตทริบิวต์แถบและขอบเขตโมเสกมีรูปแบบดังนี้:
"region_attributes":{"censor":"bar"}} OR "region_attributes":{"censor":"mosaic"}}
นี่คือตัวอย่าง (NSFW) ของคำอธิบายประกอบชุดข้อมูลของฉัน พร้อมด้วยโปรแกรมแก้ไข vgg
คุณจะต้องการรุ่นล่าสุดเพื่อความแม่นยำที่ดีขึ้น
รุ่น 161 (เลิกใช้แล้ว)
รุ่น 226
รุ่น 236 *แพ็คเกจ v1.5
(ล่าสุด) รุ่น 268
เพียงลบไฟล์ Weights.h5 ปัจจุบันของคุณ และแทนที่ด้วยไฟล์ใหม่ โปรดเก็บชื่อโมเดลไว้เป็น Weights.h5
ESRGAN (ในโค้ดเท่านั้น) กำลังใช้โมเดลพิกเซลร้ายแรงของ Twittman สำหรับการขยายขนาด 4x ไม่ได้อยู่ใน repo นี้เนื่องจากมีการป้องกันโดย MPL-2.0 ดาวน์โหลดโมเดล 340000 ที่นี่จาก repo ของเขา วางโมเดลนี้ไว้ในไดเร็กทอรีหลัก
คุณจะต้องดาวน์โหลดและติดตั้ง DeepCreamPy ซึ่งมีลิงก์อยู่ในบทนำ
ไฟล์ปฏิบัติการจะต้องใช้ ffmpeg หากคุณต้องการให้เสียงส่งผ่านวิดีโอ วาง ffmpeg.exe ในไดเร็กทอรีหลักหรือที่ไหนสักแห่งที่กำหนดไว้ใน PATH ของคุณหรือในตัวแปรสภาพแวดล้อม สำหรับ linux ให้โคลน repo และปฏิบัติตามคำแนะนำที่ให้ไว้เพื่อรับข้อกำหนด หากต้องการรับ ffmpeg บน linux หรือ colab ให้ใช้:
!sudo add-apt-repository ppa:jon-severinsson/ffmpeg
!sudo apt-get update
!sudo apt-get install ffmpeg
(ซอร์สโค้ดบน Windows) ฉันขอแนะนำให้เรียกใช้สิ่งเหล่านี้ในสภาพแวดล้อมเสมือนด้วย Anaconda3 Python 3.5.2, TensorFlow 1.8, Keras 2.2, tensorflow-gpu 1.9.0, torch 0.4.1 และแพ็คเกจทั่วไปอื่นๆ ที่แสดงอยู่ใน requirements.txt
สำหรับตอนนี้ จำเป็นต้องมี DCP จนกว่าฉันจะสามารถสร้างทางเลือกของตัวเองได้ โปรเจ็กต์นี้คาดว่าจะใช้ไดเรกทอรี DCP คุณสามารถติดตั้งไฟล์ปฏิบัติการหรือซอร์สโค้ดก็ได้ ทั้งสองอย่างควรจะใช้งานได้
DCP ใช้งานได้กับรูปภาพ .png เท่านั้น ไม่ใช่ jpg ไม่ว่าคุณจะใช้ PNG เท่านั้นหรือลองใช้ตัวแปลง jpg ที่ให้มา (ปุ่ม Force jpg) คุณสามารถใช้เครื่องมือออนไลน์เช่น jpg2png อีกครั้งนี้ควรทำก่อนสิ่งอื่นใด
DCP เข้ากันไม่ได้กับสกรีนโทนหรือเอฟเฟ็กต์เส้นประซึ่งเป็นลักษณะของงานพิมพ์ (ดูด้านล่าง) เพียงอ้างถึงโปรเจ็กต์อื่นของฉัน Screentone Remover ซึ่งจะลบสกรีนโทนเป็นชุดโดยใช้เทคนิคการประมวลผลสัญญาณดิจิทัล นี่เป็นวิธีเดียวที่รูปภาพที่ไม่มีสีที่พิมพ์จะถูกเซ็นเซอร์
นี่คือตัวอย่างของรูปภาพสกรีนโทน และลักษณะที่ปรากฏเมื่อลบโดยแอป Screentone Remover ของฉัน:
สำหรับการถอดรหัสวิดีโอแบบเต็มผ่าน ESRGAN คุณจะต้องดาวน์โหลดโมเดลของ Twittman ที่นี่ และวางไว้ในโฟลเดอร์ ColabESRGAN/models
เจ้าของ Nvidia GPU ควรติดตั้ง CUDA 9.0 และ cuDNN 7.6.4 โปรดทราบว่าการ์ด RTX และ ESRGAN มีปัญหา ดังนั้นหากคุณต้องการใช้การ์ดดังกล่าว ฉันขอแนะนำให้ใช้สมุดบันทึก Colab อีกครั้ง
ฉันขอแนะนำอย่างยิ่งให้ใช้งาน hent-AI เป็นกลุ่ม เช่น โดจินหนึ่งตัวหรือโดจินสองสามตัวพร้อมกัน ส่วนที่ช้าที่สุดของ hent-AI คือการเริ่มต้น ดังนั้นการอนุมานครั้งแรกต้องใช้เวลา แต่ส่วนที่เหลือจะเร็วกว่า
โมเดลปัจจุบันยังไม่สมบูรณ์แบบ ยัง. คาดว่าจะเกิดปัญหากับแถบเซนเซอร์สีขาว แถบเซนเซอร์ขนาดเล็ก แถบเซนเซอร์ที่โปร่งใสบางส่วน และแถบเซนเซอร์ที่รวมเข้าด้วยกันเป็นเซนเซอร์ขนาดใหญ่ตัวเดียว การเซ็นเซอร์ในปริมาณที่ไร้สาระอาจทำให้เกิดปัญหากับ hent-AI
โมเดลนี้ไม่ได้รับการฝึกฝนให้รับรู้ถึงการเซ็นเซอร์โดยสมบูรณ์ โดยที่ไม่มีการดึงเอาพันธุกรรมออกมาเลย ไม่รองรับการเซ็นเซอร์ที่ไม่ได้มาตรฐานเช่นกัน
แบบจำลองนี้รองรับกระเบื้องโมเสกและแท่ง แต่จะลำบากมากเมื่อใช้ทั้งสองจุดในจุดเดียวกัน นอกจากนี้ DCP สามารถสร้างเฉพาะแท่งหรือโมเสกเท่านั้น ดังนั้นคุณจะต้องแยกงานเซ็นเซอร์โมเสกออกจากงานเซ็นเซอร์แท่ง หากคุณต้องถอดรหัสภาพด้วยทั้งสองภาพ ฉันขอแนะนำให้ทำการเซ็นเซอร์แถบในการรันครั้งเดียว จากนั้นจึงรันภาพโมเสกในไม่กี่วินาที
แนะนำให้ใช้ Nvidia GPU ที่รองรับ CUDA สำหรับรูปภาพหรือวิดีโอจำนวนมาก หากไม่มี โปรดดูสมุดบันทึก Colab
ปุ่ม Video Maker สร้างวิดีโอจากเอาต์พุตของ DCP ใน decensored_output เรียกใช้สิ่งนี้หลังจาก DCP เสร็จสิ้น โปรดทราบว่าคุณยังคงต้องเลือกไดเร็กทอรีสำหรับวิดีโอต้นฉบับและไดเร็กทอรีการติดตั้ง DCP
อย่าใส่คลิปทั้งหมดผ่านการตรวจจับวิดีโอ เนื่องจากเป็นงานที่ช้ามาก หากทำได้ ให้แก้ไขเฉพาะคลิปสั้นที่มีภาพโมเสกที่มองเห็นได้ รับเอาต์พุตที่ถูกเซ็นเซอร์ จากนั้นแก้ไขในส่วนที่เหลือของวิดีโอ
exe ที่คอมไพล์แล้วไม่รองรับ ESRGAN หากต้องการใช้สิ่งนี้ โปรดดูสมุดบันทึก Colab
v1.0.0: การเปิดตัวครั้งแรกสำหรับการสาธิต HackIllinois ปี 2020
v1.1.0: ทำความสะอาดโค้ด ลบการนำเข้าไลบรารี่ที่ไม่จำเป็นออก เพิ่มคำแนะนำในการติดตั้งและบทช่วยสอน เพิ่มการตรวจจับข้อผิดพลาด
v1.2.0: เวอร์ชันปฏิบัติการที่อิงจากสาขาที่ตรวจพบเท่านั้น ห้องสมุดการฝึกอบรมและห้องสมุดที่ซ้ำซ้อนได้ถูกลบหรือย้ายแล้ว แก้ไขข้อผิดพลาดที่ทั้งรูปภาพกลับเป็นสีเขียว เกณฑ์การตรวจจับลดลง
v1.3.0: (exe ยังไม่เปิดตัว) ลบข้อผิดพลาดที่ไม่ใช่ Unicode ออก เพิ่มป๊อปอัปหน้าจอโหลด เกณฑ์การตรวจจับลดลง การเปลี่ยนแปลง UI เล็กน้อย
v1.4.0: แก้ไขตัวตรวจจับวิดีโอที่ตั้งชื่อไฟล์ไม่ถูกต้อง เพิ่มป๊อปอัปในการโหลด การปรับแต่ง UI เกณฑ์การตรวจจับลดลง
v1.5.0: แก้ไขข้อผิดพลาดรูปร่างระดับสีเทา แก้ไขข้อผิดพลาดที่วิดีโอถูกคัดลอกไปยังโฟลเดอร์ DCP เพิ่มการรองรับ jpg เป็นตัวเลือกสำหรับการแปลง jpg เป็น PNG เพิ่มการจับข้อยกเว้นที่ดีขึ้น อัปเดตน้ำหนักเป็นรุ่น 236
v1.5.2: อัปเกรดเทนเซอร์โฟลว์เป็น 1.8 เพื่อเตรียมพร้อมสำหรับคุณสมบัติการตรวจจับวิดีโอในอนาคต ข้อผิดพลาดของภาพไม่หยุดโปรแกรมและถูกข้ามอีกต่อไป การพิมพ์เทอร์มินัลมีข้อมูลมากกว่า ปรับแต่ง UI
1.6.3: เพิ่ม ESRGAN สำหรับการถอดรหัสวิดีโอ โดยไม่จำเป็นต้องใช้ DCP การสนับสนุนเพิ่มเติมสำหรับชื่อไฟล์ที่ไม่ใช่ Unicode
1.6.5: เพิ่มการตรวจสอบรายละเอียดโมเสคแบบปรับได้ผ่าน GMP โดย rekaXua เพิ่มไฟล์ colab สำหรับการถอดรหัสวิดีโอ ESRGAN บนคลาวด์ฟรี
1.6.7: เปลี่ยนกระบวนการ ESRGAN ให้ทำงานใน 2 เฟส: ESRGAN ปรับขนาด จากนั้นจึงตรวจจับมาสก์ ช้ากว่าแต่สามารถให้อภัยได้มากขึ้น เพิ่มการเบลอมาสก์เพื่อลดรอยต่อบน ESRGAN สำหรับผู้ที่ไม่ใช่ ESRGAN ให้เพิ่มการขยายแบบกำหนดเองเพื่อขยายมาสก์ ตัวเลือกที่ถูกลบสำหรับ jpg จะถูกนำมาใช้โดยอัตโนมัติ ปรับปรุงการทำความสะอาดไฟล์
1.6.8: วิดีโอจะนำเสียงจากวิดีโอต้นฉบับโดยใช้ ffmpeg บิตเรตของวิดีโอที่เปลี่ยนแปลงได้ยังไม่มีให้ใช้งาน ดังนั้นขนาดไฟล์อาจไม่ตรงกับแหล่งที่มา ตอนนี้ ESRGAN จะบันทึกวิดีโอลงในไดเรกทอรีเดียวกันกับวิดีโอต้นฉบับ ซึ่งส่วนใหญ่จะเพื่อช่วยในเรื่อง Colab
1.6.9: การปรับแต่ง UI เล็กน้อย ขณะนี้มี hconfig.ini ที่จะบันทึกไดเร็กทอรีและการตั้งค่าที่คุณใช้ก่อนหน้านี้เมื่อเริ่มต้นระบบ ในระหว่างกระบวนการตรวจจับรูปภาพและวิดีโอ จำนวนรูปภาพ/เฟรมทั้งหมดจะปรากฏขึ้น
1.6.9b: โปรแกรมแก้ไขด่วนสำหรับวิดีโอ ESRGAN และ ESRGAN แก้ไขข้อบกพร่องด้วย .ini หมายเหตุ: .exe จะไม่ได้รับผลกระทบ ดังนั้นจึงไม่จำเป็นต้องใช้เวอร์ชันอื่น
1.6.9c: โปรแกรมแก้ไขด่วนสำหรับรูปภาพและโมเสค decensoring สำหรับ colab หมายเหตุ: .exe จะไม่ได้รับผลกระทบ ดังนั้นจึงไม่จำเป็นต้องใช้เวอร์ชันอื่น
สำหรับคำแนะนำโดยละเอียด โปรดปฏิบัติตาม Install_and_Tutorial.txt
ปฏิบัติการได้:
ติดตั้งจากลิงค์ด้านบน
แตกออกมาเป็นบางโฟลเดอร์
ติดตาม Install_and _tutorial เพื่อรับข้อมูลเพิ่มเติม
รหัส:
pip install -r requirements.txt
python setup.py install
python main.py
ในไดเร็กทอรีหลัก ทำตามคำแนะนำ UI จากที่นั่น
python sampleshentaihentai.py train --dataset=dataset_img/ --weights=path/to/weights
หรือคุณสามารถกลับมาฝึกต่อโดยใช้ --weights=last
ยินดีต้อนรับการมีส่วนร่วมและการปรับปรุง repo นี้ ดังนั้นฉันขอแนะนำให้เข้าร่วม Discord
แรงบันดาลใจจาก DeepCreamPy
การใช้งาน Mask Rcnn จาก Matterport
ได้รับตุ้มน้ำหนักจาก Mattya's chainer-DCGAN
การใช้งาน ESRGAN จากบทความนี้ โดยใช้สถาปัตยกรรมเก่าที่จัดทำโดย styler00dollar
การใช้พิกเซลร้ายแรงของโมเดล Twittman
ชุดข้อมูลที่มีคำอธิบายประกอบด้วย VGG annotator
ตัวอย่างรูปภาพเนื้อหาจากศิลปิน @ao_beni, 落書き色々まとめ และ @paxiti ตามลำดับ สกรีนโทนสาวมาจากศิลปิน soranosuzume
ภาพเนื้อหาปัจจุบันจาก 本ぱ西まり子 และ bibimbub บน Pixiv