ที่เก็บนี้มีรูปแบบที่ผ่านการฝึกอบรมรายงานไว้ในกระดาษ "Quo Vadis, Action Recognition? โมเดลใหม่และชุดข้อมูลจลนพลศาสตร์" โดย Joao Carreira และ Andrew Zisserman กระดาษถูกโพสต์บน ARXIV ในเดือนพฤษภาคม 2560 และจะเผยแพร่เป็นเอกสารการประชุม CVPR 2017
"Quo Vadis" แนะนำสถาปัตยกรรมใหม่สำหรับการจำแนกวิดีโอ, Convnet 3D ที่สูงเกินจริงหรือ I3D ที่นี่เราเปิดตัวรุ่น Inception-V1 I3D ที่ได้รับการฝึกฝนเกี่ยวกับการฝึกอบรมชุดข้อมูลจลนศาสตร์
ในบทความของเราเรารายงานผลลัพธ์ที่ล้ำสมัยในชุดข้อมูล UCF101 และ HMDB51 จากการปรับแต่งรุ่นเหล่านี้อย่างละเอียด รุ่น I3D ที่ผ่านการฝึกอบรมมาก่อนเกี่ยวกับจลนพลศาสตร์ก็เป็นอันดับแรกในการแข่งขัน CVPR 2017 Charades Challenge
ที่เก็บยังรวมถึงจุดตรวจสอบที่ผ่านการฝึกอบรมมาก่อนโดยใช้อินพุต RGB และได้รับการฝึกฝนตั้งแต่เริ่มต้นบน Kinetics-600
ใหม่ : การประมวลผลวิดีโอล่วงหน้าที่เราใช้ได้รับการเปิดโดย Google ในการตั้งค่าให้ตรวจสอบคำแนะนำเหล่านี้ใน repo mediapipe ของ Google
ข้อจำกัดความรับผิดชอบ: นี่ไม่ใช่ผลิตภัณฑ์ของ Google อย่างเป็นทางการ
ก่อนอื่นให้ทำตามคำแนะนำสำหรับการติดตั้ง Sonnet
จากนั้นโคลนพื้นที่เก็บข้อมูลนี้โดยใช้
$ git clone https://github.com/deepmind/kinetics-i3d
เรียกใช้รหัสตัวอย่างโดยใช้
$ python evaluate_sample.py
ด้วยการตั้งค่าสถานะเริ่มต้นสิ่งนี้จะสร้างโมเดลสองสตรีม I3D โหลดจุดตรวจ I3D ที่ผ่านการฝึกอบรมไว้ล่วงหน้าลงในเซสชัน TensorFlow จากนั้นส่งผ่านวิดีโอตัวอย่างผ่านโมเดล ตัวอย่างวิดีโอได้รับการประมวลผลล่วงหน้าพร้อมอาร์เรย์ RGB และ Flow NumPy (ดูรายละเอียดเพิ่มเติมด้านล่าง)
สคริปต์ส่งออกบรรทัดฐานของ logits เทนเซอร์เช่นเดียวกับคลาสจลนพลศาสตร์ 20 อันดับแรกที่คาดการณ์ไว้โดยแบบจำลองด้วยความน่าจะเป็นและค่า logit การใช้ธงเริ่มต้นเอาต์พุตควรมีลักษณะคล้ายกับความแตกต่างของความแม่นยำเชิงตัวเลข:
Norm of logits: 138.468643
Top classes and probabilities
1.0 41.8137 playing cricket
1.49716e-09 21.494 hurling (sport)
3.84312e-10 20.1341 catching or throwing baseball
1.54923e-10 19.2256 catching or throwing softball
1.13602e-10 18.9154 hitting baseball
8.80112e-11 18.6601 playing tennis
2.44157e-11 17.3779 playing kickball
1.15319e-11 16.6278 playing squash or racquetball
6.13194e-12 15.9962 shooting goal (soccer)
4.39177e-12 15.6624 hammer throw
2.21341e-12 14.9772 golf putting
1.63072e-12 14.6717 throwing discus
1.54564e-12 14.6181 javelin throw
7.66915e-13 13.9173 pumping fist
5.19298e-13 13.5274 shot put
4.26817e-13 13.3313 celebrating
2.72057e-13 12.8809 applauding
1.8357e-13 12.4875 throwing ball
1.61348e-13 12.3585 dodgeball
1.13884e-13 12.0101 tap dancing
ไฟล์ทดสอบสามารถเรียกใช้ได้โดยใช้
$ python i3d_test.py
สิ่งนี้ตรวจสอบว่าโมเดลสามารถสร้างได้อย่างถูกต้องและสร้างรูปร่างที่ถูกต้อง
โมเดลเริ่มต้นได้รับการฝึกอบรมล่วงหน้าบน Imagenet และจลนพลศาสตร์ ธงอื่น ๆ อนุญาตให้โหลดแบบจำลองที่ผ่านการฝึกอบรมไว้ล่วงหน้าบนจลนพลศาสตร์เท่านั้นและสำหรับการเลือกเฉพาะสตรีม RGB หรือ Flow สคริปต์ multi_evaluate.sh
แสดงวิธีเรียกใช้ชุดค่าผสมเหล่านี้ทั้งหมดสร้างผลลัพธ์ตัวอย่างใน out/
ไดเรกทอรี
data/checkpoints
ประกอบด้วยจุดตรวจสี่จุดที่ผ่านการฝึกอบรม สิ่งที่เพิ่งได้รับการฝึกฝนเกี่ยวกับจลนพลศาสตร์จะเริ่มต้นโดยใช้ Sonnet / Tensorflow Initializers เริ่มต้นในขณะที่การฝึกอบรมล่วงหน้าบน ImageNet จะเริ่มต้นโดย bootstrapping ตัวกรองจากรุ่น Inception-V1 2D เป็น 3D ตามที่อธิบายไว้ในกระดาษ ที่สำคัญสตรีม RGB และการไหลได้รับการฝึกฝนแยกต่างหากแต่ละครั้งมีการสูญเสียการจำแนกประเภท softmax ในช่วงเวลาทดสอบเรารวมสตรีมทั้งสองโดยการเพิ่ม logits ด้วยการถ่วงน้ำหนักเท่ากันดังที่แสดงในรหัส evalute_sample.py
เราฝึกอบรมโดยใช้ SGD แบบซิงโครนัสโดยใช้ tf.train.SyncReplicasOptimizer
สำหรับสตรีม RGB และการไหลแต่ละครั้งเราจะรวมกันในแบบจำลอง 64 แบบพร้อมแบบจำลองการสำรองข้อมูล 4 แบบ ในระหว่างการฝึกอบรมเราใช้ 0.5 Dropout และใช้ batchnorm ด้วยขนาด minibatch ที่ 6. เครื่องมือเพิ่มประสิทธิภาพที่ใช้คือ SGD ที่มีค่าโมเมนตัม 0.9 และเราใช้การสลายตัวของน้ำหนัก 1E-7 โมเดล RGB และ Flow ได้รับการฝึกฝนสำหรับ 115K และ 155K ขั้นตอนตามลำดับโดยมีตารางอัตราการเรียนรู้ดังต่อไปนี้
RGB:
ไหล:
นี่เป็นเพราะโมเดลการไหลถูกกำหนดให้ต้องฝึกอบรมเพิ่มเติมหลังจากการวิ่งเริ่มต้นที่ 115k ขั้นตอน
แบบจำลองได้รับการฝึกฝนโดยใช้การฝึกอบรมจลนพลศาสตร์ ในชุดทดสอบจลนพลศาสตร์เราได้รับความแม่นยำ TOP-1 / TOP-5 ต่อไปนี้:
แบบอย่าง | ImageNet + จลนพลศาสตร์ | จลนพลศาสตร์ |
---|---|---|
RGB-I3D | 71.1 / 89.3 | 68.4 / 88.0 |
flow-i3d | 63.4 / 84.9 | 61.5 / 83.4 |
I3D สองสตรีม | 74.2 / 91.3 | 71.6 / 90.0 |
การเปิดตัวชุดข้อมูลจลนพลศาสตร์ DeepMind นั้นรวมถึงรหัส YouTube เท่านั้นและเวลาเริ่มต้นและสิ้นสุดของคลิป สำหรับข้อมูลตัวอย่างที่นี่เราใช้วิดีโอจากชุดข้อมูล UCF101 ซึ่งวิดีโอทั้งหมดมีให้เต็ม วิดีโอที่ใช้คือ v_CricketShot_g04_c01.mp4
ซึ่งสามารถดาวน์โหลดได้จากเว็บไซต์ UCF101
การประมวลผลล่วงหน้าของเราใช้ไลบรารีภายในซึ่งตอนนี้ได้รับการตรวจสอบการซื้อใหม่ของ Google MediaPipe repo ของ Google มันทำดังต่อไปนี้: สำหรับสตรีมทั้งสองเราตัวอย่างเฟรมที่ 25 เฟรมต่อวินาที สำหรับจลนพลศาสตร์เรายังคลิปวิดีโอในช่วงเริ่มต้นและเวลาสิ้นสุด
สำหรับ RGB วิดีโอจะได้รับการปรับขนาดอัตราส่วนการรักษาเพื่อให้มิติที่เล็กที่สุดคือ 256 พิกเซลโดยมีการแก้ไข bilinear ค่าพิกเซลจะถูกลดขนาดระหว่าง -1 ถึง 1 ระหว่างการฝึกอบรมเราสุ่มเลือกการครอบตัดภาพ 224x224 ในขณะที่ระหว่างการทดสอบเราเลือก Center 224x224 การครอบตัดภาพจากวิดีโอ ไฟล์ .npy
ที่ให้ไว้จึงมีรูปร่าง (1, num_frames, 224, 224, 3)
สำหรับ RGB ซึ่งสอดคล้องกับขนาดแบทช์ 1
สำหรับสตรีมโฟลว์หลังจากสุ่มตัวอย่างวิดีโอที่ 25 เฟรมต่อวินาทีเราจะแปลงวิดีโอเป็นสีเทา เราใช้อัลกอริทึมการไหลแบบออปติคัล TV-L1 คล้ายกับรหัสนี้จาก OpenCV ค่าพิกเซลจะถูกตัดทอนไปยังช่วง [-20, 20] จากนั้นเพิ่มอัตราระหว่าง -1 ถึง 1 เราใช้มิติเอาท์พุทสองตัวแรกเท่านั้นและใช้การปลูกพืชเดียวกันกับ RGB ไฟล์ .npy
ที่ให้ไว้จึงมีรูปร่าง (1, num_frames, 224, 224, 2)
สำหรับการไหลซึ่งสอดคล้องกับขนาดแบทช์ 1
นี่คือ GIF ที่แสดงไฟล์ .npy
ที่ให้มา จากข้อมูล RGB เราเพิ่ม 1 แล้วหารด้วย 2 เพื่อลดระดับระหว่าง 0 ถึง 1 สำหรับข้อมูลการไหลเราเพิ่มช่องที่สามของทั้งหมด 0 ทั้งหมดจากนั้นเพิ่ม 0.5 ลงในอาร์เรย์ทั้งหมดเพื่อให้ผลลัพธ์อยู่ระหว่าง 0 ถึง 0 ถึง 0 ถึง 1.
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการประมวลผลล่วงหน้าให้ตรวจสอบสิ่งนี้ดูเอกสารของเราหรือติดต่อผู้เขียน
Brian Zhang, Joao Carreira, Viorica Patraucean, Diego de Las Casas, Chloe Hillier และ Andrew Zisserman ช่วยเตรียมการเปิดตัวครั้งแรกนี้ นอกจากนี้เรายังขอขอบคุณทีมงานที่อยู่เบื้องหลังชุดข้อมูลจลนพลศาสตร์และกระดาษเริ่มต้นต้นฉบับที่สถาปัตยกรรมและรหัสนี้ใช้
ในการมีส่วนร่วมในที่เก็บนี้คุณจะต้องลงนามในข้อตกลงใบอนุญาตผู้สนับสนุน Google (CLA) ก่อนซึ่งมีให้ในไฟล์ที่มีส่วนร่วม จากนั้นเราจะสามารถยอมรับคำขอแบบดึงใด ๆ ได้แม้ว่าจะไม่ได้มีเป้าหมายที่จะขยายไปยังรุ่นที่ผ่านการฝึกอบรมอื่น ๆ
สำหรับคำถามใด ๆ คุณสามารถติดต่อผู้เขียนกระดาษ "quo vadis" ซึ่งมีอีเมลอยู่ในกระดาษ