การเพิ่มประสิทธิภาพ
เป็นที่ทราบกันทั่วไปว่าการทำงานด้าน Computer Vision ก็คือการทำงานด้าน Machine Learning ซึ่งต้องการทรัพยากรด้านฮาร์ดแวร์เพื่อการคำนวณค่อนข้างมาก ในขณะที่ CPU ที่นำมาติดตั้งบน Raspberry Pi 3 Model B นั้น ได้มีการนำเอาเทคโนโลยีสองเรื่องมาติดตั้งไว้แล้วคือ NEON [2] และ Floating Point [3] และในการติดตั้ง OpenCV ครั้งนี้ก็จะนำมาใช้ด้วยการเพิ่ม Swap File
Swap File คือ virtual memory ที่อยู่บน media (ในกรณีของ Raspberry Pi คือ SD Card) แทนที่จะอยู่บน RAM มีวัตถุประสงค์เพื่อเพิ่มขนาดของพื้นที่จัดเก็บข้อมูลในระหว่างการทำงาน การ compilation ครั้งนี้หากไม่มีการเพิ่ม Swap File ก็อาจส่งผลให้ไม่สามารถทำงานได้สำเร็จ ขั้นตอนมีดังนี้1. แก้ไข /etc/dphys-swapfile โดยกำหนดค่าของ CONF_SWAPSIZE จากเดิมกำหนดไว้ที่ 100 (100 MB) เป็น 1024 (1 GB)
2. restart
$ sudo /etc/init.d/dphys-swapfile stop
รอจนเสร็จ
$ sudo /etc/init.d/dphys-swapfile start
ขั้นตอนการติดตั้ง
ให้ดำเนินการเช่นเดียวกับที่กล่าวไว้ใน [1] ตั้งแต่ขั้นตอนที่ 1 - 5ในขั้นตอนที่ 6 มีการเปลี่ยนแปลงคือจะเพิ่มการใช้ NEON และ Floting Point เข้าไป configure ที่ใช้คือ
$ cd opencv
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=/path/to/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON ..
หลังจากนี้ไปก็ดำเนินตามขั้นตอนกล่าวไว้ใน [1] ต่อไปได้
ปล.
1. ในขั้นตอนที่ใช้คำสั่ง make -j4 เลข 4 คือจำนวน Core ของ CPU ที่จะใช้งาน หากกำหนดเป็น 4 หมายความว่า ต้องการให้ทุก Core ของ CPU บน Raspberry Pi ทำงานทั้งหมดประโยชน์คือเวลาในการทำงานทั้งหมดจะสั้นลง แต่ก็อาจนำมาซึ่งความร้อนที่สูงเกินไปก็ได้ ควรพิจารณาลดตัวเลขลง (ซึ่งจะใช้เวลานานขึ้น) หรือเพิ่มระบบระบายความร้อนให้กับ CPU
2. หลังจากติดตั้งเสร็จเรียบร้อย ให้ทำการเปลี่ยนค่า CONF_SWAPFILE ใน /etc/dphys-swapfile กลับไปเป็นค่าเดิมคือ 100 (100 MB) แล้วทำการ reboot
3. OpenCV source code ที่ดาวน์โหลดมานั้น ไม่มีความจำเป็นต้องเก็บไว้ อาจพิจารณาลบทิ้งไป หรือย้ายไปเก็บไว้ เพื่อให้มีเนื้อที่บน SD Card เหลือใช้งาน
เว็บไซต์อ้างอิง
[1] https://raspberrypi-thailand.blogspot.com/2016/07/opencv-310-raspberry-pi.html[2] https://developer.arm.com/technologies/neon
[3] https://developer.arm.com/technologies/floating-point
Sign up here with your email
ConversionConversion EmoticonEmoticon