-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
- Loading branch information
There are no files selected for viewing
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"pageProps":{"postData":{"id":"10-chonlana-kruawuthikun","content":"\n![image](/images/2024/10/01.png)\n\n- ขั้นแรกคือ data เนื่องจากยังไม่มีคนทำ Dataset ของภาพสปีชีส์สัตว์น้ำ จึงทำการ scrape ด้วย library fastbook โดยอิงคลาสจาก List of Marine aquarium fish species (https://en.m.wikipedia.org/wiki/List_of_marine_aquarium_fish_species) ที่มีอยู่ 617 คลาส ได้มาทั้งหมด 74,040 รูป\n- หลังจากทำการ cleaning แล้ว ได้มีการทำการลบคลาส และการรวมคลาสใน genus เดียวกัน เนื่องจากปัญหาจำนวนภาพน้อย, ใน genus เดียวกันคล้ายกันจนแยกไม่ออก จึงเหลืออยู่ 549 คลาส 43,287 รูป และในแต่ละคลาสจำนวนรูปต่างกันมาก เลยมีการทำ oversampling ด้วย library imblearn\n- Train โมเดลมาเทียบทั้งหมด 4 โมเดล คือ MobileNet (ไม่ได้ finetune), MobileNet (finetune), ResNet50V2, DenseNet121 โดย MobileNet (finetune) ได้ผลลัพธ์บน test set ดีที่สุดที่ accuracy 83%\n- สร้าง baseline set เพื่อทำการเทียบ accuracy ของโมเดลกับ Google reverse image search โดยกำหนดไว้ว่าต้องพบชื่อสามัญ หรือชื่อวิทยาศาสตร์ของสัตว์น้ำในรูปนั้น ๆ ภายใน 3 ลิงก์แรก โดย Google reverse search สามารถหาชื่อสปีชีส์เจอที่อัตรา 76.6859% ส่วนโมเดลมี accuracy ที่ 82.51% ซึ่งถือว่าโมเดลของเราชนะในเรื่อง usage ไปค่\n- ในส่วนของ Future plan คือจะทำให้เมื่อ predict สปีชีส์แล้ว จะแสดงข้อมูลของสปีชีส์นั้น ๆ แบบสรุปอ่านง่าย และพัฒนาต่อเป็นแอปพลิเคชัน\n\n\n### แรงจูงในในการเข้าร่วมโครงการ (จากใบสมัครเข้าร่วมเมื่อ 10 สัปดาห์ที่แล้ว)\n\n> คือหนูเป็นคนที่มีไอเดียโปรเจคโผล่ขึ้นมาบ่อยมาก แต่ไม่รู้จะเริ่มต้นทำจริงยังไง ไม่รู้ว่ามันเป็นไปได้มั้ย สเกลใหญ่เกินความสามารถหนูไปรึเปล่า หรือต้องเอาไอเดียนี้ไปต่อยังไงอยู่ตลอด ซึ่งอาจจะเพราะว่าความรู้หนูไม่ได้แน่นถึงขนาดขั้นทำโปรเจคด้วยตัวเองได้ แต่สุดท้ายคือต้องพับไอเดียลงไปตลอดเลยค่ะ หนูเลยคิดว่าถ้าหนูเอาไอเดียที่มีมาลงโครงการนี้ ไอเดียนั้น ๆ จะสำเร็จได้ ด้วยการที่โครงการนี้มี mentor คอยช่วยคอยไกด์ แนะนำวิธีทำทางไปต่อในโปรเจค หนูไม่น่าจะเคว้งจนโปรเจคล่มเหมือนตอนทำเองคนเดียวค่ะ แล้วหนูน่าจะได้ความรู้ในด้านการทำ ai เพิ่มขึ้น พื้นฐานแน่นขึ้นจากการเรียนระหว่างโครงการนี้ จนหนูสามารถเอาความรู้ตรงนี้ไปต่อยอด ไปประยุกต์ใช้ทำโปรเจคต่อ ๆ ไปได้ ทำให้น่าจะวนกลับไปต่อยอดไอเดียเก่า ๆ ที่เคยมีได้ด้วยค่ะ แล้วคือหนูอยากเข้าโครงการนี้มาตั้งแต่ปีที่แล้ว แต่ว่าตอนนั้นยังเขียนโปรแกรมไม่เก่งพอจะทำข้อสอบเข้า แต่ว่าตอนนี้หนูสามารถทำได้แล้ว หนูเลยอยากเข้าโครงการให้ติดในรอบนี้มาก ๆ ค่ะ\n ","date":"31-7-24","title":"Aquarium Fish Species Classification - โมเดลระบุสปีชีส์สัตว์น้ำจากภาพ","builder":"ชลนา เครือวุฒิกุล(วาวา)","builder_info":"สาธิต มศว ประสานมิตร (ฝ่ายมัธยม) / กรุงเทพมหานคร","thumbnail":"/images/2024/10/01.png","links":{"github":"https://github.com/chonlanawawa/FishClassificationProject","facebook":"","blog":"https://medium.com/@chonlanawawa/aquarium-fish-species-classification-cd8fe60ab02a"}}},"__N_SSG":true} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"pageProps":{"postData":{"id":"11-tharadon-jitsue","content":"\n![image](/images/2024/11/01.png)\n\n- ใช้ Dataset จาก E-GMD โดยเลือก audio ที่มีการเล่นจังหวะ 8 beats เป็นหลัก ได้มาทั้งหมด 51 audios ความยาวรวมกันกว่า 2 ชั่วโมง\n- ทำการ sliced ออกเป็นจังหวะ 8 beats เลือก data ที่มีเสียงที่สมบูรณ์ ไม่มีการเล่น 16 beats (เพราะจะทำให้มี 2 เสียงใน 1 audio) หลังจากนั้นทำการ label ว่า sliced audio นั้นมีการเล่นกลองชิ้นไหนบ้าง\n- ใช้ librosa ในการแปลง audio เป็น mel spectrogram และแปลงด้วย Fast Fourier Transform (FFT)\n- จะสร้างโมเดล 5 โมเดลสำหรับแต่ละชิ้นกลอง เพื่อทำนายว่า audio นั้นมีชิ้นกลองชิ้นนั้นหรือไม่ และนำผลลัพท์จากทั้ง 5 โมเดลมารวมกันเป็นโน้ตกลอง\n- สำหรับ mel spectrogram ใช้โมเดล resnet50, mobilenet, และลองทำ custom cnn model สำหรับ FFT จะให้ข้อมูล tabular data จึงใช้โมเดล RandomForest และ XGBoost ผลคือ resnet50 และ mobilenet มีประสิทธิภาพสูงที่สุด\n- นำโมเดลที่ผ่านการเทรนแล้วไปทดลองใช้แกะเพลงจริง และทำการเทียบ accuracy และ process time กับมนุษย์\n- ทำการ Post-Processing สำหรับชิ้น hihat เนื่องจากเป็นชิ้นกลองที่มักจะมีเสียงเบาและถูกกลบเวลาเล่นในเพลงจริง ทำให้ accuracy สูงมากขึ้น\n- สิ่งที่จะนำไปพัฒนาต่อคือสอนให้โมเดลรู้จักกับจังหวะเงียบ และการแยกเสียงจริงกับเสียง echo\n\n\n### แรงจูงในในการเข้าร่วมโครงการ (จากใบสมัครเข้าร่วมเมื่อ 10 สัปดาห์ที่แล้ว)\n\n> ตอนนี้ผมเรียนอยู่มหิดลวิทยานุสรณ์ ชั้น ม.5 ผมมีความฝันที่อยากจะไปเรียนต่อด้าน computer science ที่ nus สิงคโปร์ และอยากจบมาเป็น data scientist อยากทำ research ของตัวเองขึ้นมา ผมมีความสามารถด้านคณิตศาสตร์มาตั้งแต่เด็ก เมื่อขึ้นม.ต้นจึงได้ลองเรียน coding ด้วย python และพบว่าด้วยความรู้ด้าน math ที่สะสมมาทำให้ผมสามารถเรียนรู้ได้เร็ว เนื่องจากหัวใจหลัก ๆ ของ coding ก็อยู่ที่การคิด algorithm ตอนม.4 ได้เข้าร่วมค่าย data science ของ samsung และได้ลองทำ mini project ด้าน data analytics จึงค้นพบว่าการทำงานสายนี้เป็นสิ่งที่ผมชอบและสนุกกับมันจริง ๆ จากการเข้าค่ายนี้ทำให้ผมมีความเชี่ยวชาญในการใช้ python มากขึ้นในปัจจุบันนี้ผมอยากทำ project machine learning ผมได้ศึกษาความรู้ใน internet และลองทำตาม project end to end ใน youtube จึงพอมีพื้นฐานเกี่ยวกับการทำ ml ด้วยโมเดลต่าง ๆ แต่การเรียนใน youtube ก็เป็นแค่การใช้ data set ของคนอื่นแล้วก็ลองทำตามเฉย ๆผมเลยคิดว่าถ้าได้เริ่มทำ project ตั้งแต่ 0 เลย เริ่มตั้งแต่การคิดปัญหา การหาข้อมูล การ cleaning การทำ model จะทำให้ผมเรียนรู้อะไรหลาย ๆ อย่าง และภูมิใจกัน\n ","date":"31-7-24","title":"DrumScribe - แกะโน้ตกลองด้วย deep learning","builder":"ธราดล จิตซื่อ(ธีร์)","builder_info":"มหิดลวิทยานุสรณ์ / นครปฐม","thumbnail":"/images/2024/11/01.png","links":{"github":"https://github.com/tjitsue/DrumScribe-Project","facebook":"","blog":"https://medium.com/@tjitsue/drumscribe-development-of-a-machine-learning-model-to-automatically-transcribe-drum-audio-f753be6fe2b6"}}},"__N_SSG":true} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"pageProps":{"postData":{"id":"12-peemmaphat-sripongsai","content":"\n![image](/images/2024/12/01.png)\n\n- โมเดลสร้าง spritesheet ใน openpose format จากข้อความ สำหรับ generate 2d character animation ด้วย stable diffusion และ LoRA\n- แรงบันดาลใจอยากจะสร้าง animation ให้กับตัวละคร 2D เพื่อให้ game developer ที่ไม่มี art skills สามารถสร้าง 2d character animation จากข้อความได้\n- dataset สร้างขึ้นเองจากการรวบรวมรูป spritesheet แล้วนำมา Pose Estimation + จัดท่าทางให้ถูกต้อง รวบรวมมาได้ทั้งหมด 400 samples\n- ตั้ง data condition ขนาด canvas = 300 x 900 และ มีจำนวน frames = 5 เพื่อให้ง่ายต่อการทดลอง\n- ทำการ fix bad data หากพบว่า data ที่เก็บมาไม่ตรงกับ condition ที่ตั้งไว้\n- preprocess โดยการ sort order ใหม่ด้วย nose keypoints และ remove z axis\n- ใช้ sentence transformer all-MiniLM-L6-v2 สำหรับ text embedding และ การเข้าใจ context ของประโยค\n- ทดลองกับ model หลายแบบเพื่อหา architecture ที่ perform ได้ดีที่สุดตั้งแต่ Neural network ธรรมดา, CNN, RNN, LSTM และ modify T5 Transformer\n- ใช้ MAE เป็น metrics เทียบ keypoints ระหว่าง ground truth กับ predicted\n- LSTM perform ได้ดีที่สุดบน test set ซึ่งเป็น unseen data โดยได้ค่า MAE เฉลี่ยที่ 20.756538\n- Baseline ให้ผู้คนทำ form โดยใช้ Likert Scale เทียบกันระหว่าง ground truth และ predicted และ เทียบ performances กับวิธีการสร้าง openpose spritesheet ในปัจจุบัน\n- model สามารถ generate ท่าง่ายๆได้ แต่ยังไม่สามารถ generate ท่าที่มีความซับซ้อนได้\n- ต้องการ data ที่มากกว่านี้ รวมถึงจำนวน frames และ diversity ของท่าทางมากกว่านี้\n- อาจจะลองวิธีใหม่ๆ เช่น การแปลง keypoints ในแต่ละ frames เป็น discrete tokens ด้วย VQ-VAE และ ลอง model อื่นๆ อย่าง Seq2Seq model และ Autoregressive model\n\n### แรงจูงในในการเข้าร่วมโครงการ (จากใบสมัครเข้าร่วมเมื่อ 10 สัปดาห์ที่แล้ว)\n\n> ผมสนใจคอมพิวเตอร์มาตั้งแต่เด็กๆ และผมก็เขียนโปรแกรมตั้งแต่ ม.ต้น จนผมเรียนรู้ด้วยตัวเองและมีความรู้ความสามารถในด้านการพัฒนา fullstack app และ game dev เคยแข่งโครงงานระดับประเทศ ได้รับรางวัลแข่ง nsc และพัฒนา project มามากมาย ผมมีความฝันที่จะพัฒนาสังคมให้ดีขึ้นด้วยความสามารถด้านเทคโนโลยีของผม และ ช่วงนี้อยู่ในช่วงที่ผมพึ่งจบ ม.6 มาพอดี และกำลังจะขึ้นมหาวิทยาลัย ซึ่งกว่ามหาวิทยาลัยของผมจะเปิดก็เดือนสิงหาคม ผมจึงอยากที่จะใช้เวลาของผมในการเรียนรู้สิ่งใหม่ๆ นั้นก็คือสาย ai เพราะเป็นสายที่ผมรู้สึกว่าผมยังเชี่ยวชาญน้อยที่สุดหากเทียบกับ fullstack และ game dev ที่ผมค่อนข้างมั่นใจใน skill ของผม ผมเคยทำ project เกี่ยวกับ machine learning มาบ้าง เช่น image classification ด้วย convolution neural network แต่ก็รู้สึกว่ายังไม่ได้เข้าใจอย่าง\"ถ่องแท้\" ถ้าเทียบสองสายก่อนหน้านี้ที่ผมทำ ที่ผมทำอย่างมากก็สร้าง model neural network ด้วย tensorflow แต่ทำไม connected layer ถึงมีจำนวนเท่านี้ ทำไมต้องใช้ loss functionนี้ ทำไม activation function ต้องใช้อันนี้ และทำไม optimizer ต้องเป็น adam สิ่งเหล่านี้คือสิ่งที่ผมยังไม่เข้าใจ ผมจึงเลยอยากจะเข้าร่วมโครงการนี้เพื่อเรียนรู้ในสายของ data science และ \n ","date":"31-7-24","title":"PoseCrafts: สร้าง 2D Characters Animation Spritesheet ใน Openpose format จาก ข้อความ","builder":"ภีมพัฒน์ ศรีผ่องใส(ภีม)","builder_info":"หล่มสักวิทยาคม / เพชรบูรณ์","thumbnail":"/images/2024/12/01.png","links":{"github":"https://github.com/SupeemAFK/PoseCrafts","facebook":"","blog":"https://medium.com/@Supeem/posecrafts-transforming-text-into-dynamic-2d-characters-with-openpose-594861900be6"}}},"__N_SSG":true} |