[อัปเดต:] ฉันได้ทำให้รหัสเป็น Pytorch 1.5, Torchvision 0.6 เพิ่มเติมและแทนที่ Ops Roipool ที่กำหนดเองและ NMS ด้วยหนึ่งจาก Torchvision หากคุณต้องการรหัสเวอร์ชันเก่าโปรดชำระเงินสาขา v1.0
โครงการนี้เป็นการดำเนินการ R-CNN ที่ง่าย ขึ้น โดยใช้ ChainerCV และโครงการอื่น ๆ ฉันหวังว่ามันจะทำหน้าที่เป็นรหัสเริ่มต้นสำหรับผู้ที่ต้องการทราบรายละเอียดของ R-CNN ที่เร็วขึ้น มันมีจุดมุ่งหมายเพื่อ:
และมีคุณสมบัติดังต่อไปนี้:

VGG16 รถไฟบน trainval และทดสอบการแยก test
หมายเหตุ : การฝึกอบรมแสดงให้เห็นถึงการสุ่มที่ยอดเยี่ยมคุณอาจต้องโชคดีและมีการฝึกอบรมมากขึ้นเพื่อไปยังแผนที่สูงสุด อย่างไรก็ตามมันควรจะง่ายกว่าที่จะเกินขอบเขตล่าง
| การดำเนินการ | แผนที่ |
|---|---|
| กระดาษต้นกำเนิด | 0.699 |
| ฝึกอบรมด้วยรูปแบบการปรับแต่งคาเฟอีน | 0.700-0.712 |
| ฝึกอบรมด้วยรูปแบบการปรับสภาพของ Torchvision | 0.685-0.701 |
| โมเดลแปลงจาก chainerCV (รายงาน 0.706) | 0.7053 |
| การดำเนินการ | GPU | การอนุมาน | การฝึก |
|---|---|---|---|
| กระดาษต้นกำเนิด | K40 | 5 fps | นา |
| สิ่งนี้ [1] | Titan XP | 14-15 fps | 6 fps |
| Pytorch-rcnn | Titan XP | 15-17fps | 6fps |
[1]: ตรวจสอบให้แน่ใจว่าคุณติดตั้ง Cupy อย่างถูกต้องและมีเพียงหนึ่งโปรแกรมที่รันบน GPU ความเร็วในการฝึกอบรมมีความไวต่อสถานะ GPU ของคุณ ดูการแก้ไขปัญหาสำหรับข้อมูลเพิ่มเติม เจ้านายมันช้าในช่วงเริ่มต้นของโปรแกรม - ต้องใช้เวลาในการอุ่นเครื่อง
มันอาจจะเร็วขึ้นโดยการลบการสร้างภาพการบันทึกการสูญเสียเฉลี่ย ฯลฯ
นี่คือตัวอย่างของการสร้างสภาพแวดล้อม ตั้งแต่เริ่มต้น ด้วย anaconda
# create conda env
conda create --name simp python=3.7
conda activate simp
# install pytorch
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
# install other dependancy
pip install visdom scikit-image tqdm fire ipdb pprint matplotlib torchnet
# start visdom
nohup python -m visdom.server &
ถ้าคุณไม่ใช้ Anaconda แล้ว:
ติดตั้ง pytorch ด้วย GPU (รหัสเป็น GPU เท่านั้น) อ้างถึงเว็บไซต์ทางการ
ติดตั้งการพึ่งพาอื่น ๆ : pip install visdom scikit-image tqdm fire ipdb pprint matplotlib torchnet
เริ่ม Visdom สำหรับการสร้างภาพข้อมูล
nohup python -m visdom.server & ดาวน์โหลดรุ่น Pretrained จาก Google Drive หรือ Baidu Netdisk (Passwd: SCXN)
ดู demo.ipynb สำหรับรายละเอียดเพิ่มเติม
ดาวน์โหลดการฝึกอบรมการตรวจสอบข้อมูลทดสอบและ vocdevkit
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar แยก Tars เหล่านี้ทั้งหมดออกเป็นไดเรกทอรีหนึ่งชื่อ VOCdevkit
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tarควรมีโครงสร้างพื้นฐานนี้
$VOCdevkit / # development kit
$VOCdevkit /VOCcode/ # VOC utility code
$VOCdevkit /VOC2007 # image sets, annotations, etc.
# ... and several other directories ... แก้ไขรายการ voc_data_dir CFG ใน utils/config.py หรือส่งผ่านไปยังโปรแกรมโดยใช้อาร์กิวเมนต์เช่น --voc-data-dir=/path/to/VOCdevkit/VOC2007/
หากคุณต้องการใช้แบบจำลองคาเฟอีนพรีทรานเป็นน้ำหนักเริ่มต้นคุณสามารถทำงานด้านล่างเพื่อรับน้ำหนัก VGG16 ที่แปลงจากคาเฟอีนซึ่งเหมือนกับการใช้กระดาษต้นกำเนิด
python misc/convert_caffe_pretrain.pyสคริปต์นี้จะดาวน์โหลดโมเดลที่ผ่านการฝึกอบรมและแปลงเป็นรูปแบบที่เข้ากันได้กับ Torchvision หากคุณอยู่ในประเทศจีนและไม่สามารถดาวน์โหลดโมเดล Pretrain ได้คุณอาจอ้างถึงปัญหานี้
จากนั้นคุณสามารถระบุตำแหน่งที่ caffe-pretraind model vgg16_caffe.pth เก็บไว้ใน utils/config.py โดยการตั้งค่า caffe_pretrain_path เส้นทางเริ่มต้นก็โอเค
หากคุณต้องการใช้โมเดลที่ผ่านการฝึกอบรมจาก Torchvision คุณสามารถข้ามขั้นตอนนี้ได้
หมายเหตุ โมเดลที่ผ่านการฝึกฝนของคาเฟอีนแสดงประสิทธิภาพที่ดีขึ้นเล็กน้อย
หมายเหตุ : โมเดลคาเฟอีนต้องการรูปภาพใน BGR 0-255 ในขณะที่โมเดล Torchvision ต้องการภาพใน RGB และ 0-1 ดู data/dataset.py สำหรับรายละเอียดเพิ่มเติม
python train.py train --env= ' fasterrcnn ' --plot-every=100 คุณอาจอ้างถึง utils/config.py สำหรับอาร์กิวเมนต์เพิ่มเติม
ข้อโต้แย้งสำคัญบางประการ:
--caffe-pretrain=False : ใช้แบบจำลอง pretrain จาก Caffe หรือ Torchvision (ค่าเริ่มต้น: Torchvison)--plot-every=n : การทำนายภาพ, การสูญเสีย ฯลฯ ทุกชุด n--env : Visdom Env สำหรับการสร้างภาพข้อมูล--voc_data_dir : ที่เก็บข้อมูล VOC--use-drop : ใช้การออกกลางคันในหัว ROI, ค่าเริ่มต้นเท็จ--use-Adam : ใช้ ADAM แทน SGD, SGD เริ่มต้น (คุณต้องตั้ง lr ต่ำมากสำหรับอดัม)--load-path : เส้นทางโมเดล pretrained, ค่าเริ่มต้น None ถ้ามีการระบุมันจะถูกโหลด คุณสามารถเปิดเบราว์เซอร์เยี่ยมชม http://<ip>:8097 และดูการสร้างภาพของขั้นตอนการฝึกอบรมดังต่อไปนี้:

Dataloader: received 0 items of ancdata
ดูการอภิปรายมันได้รับการแก้ไขอย่างเต็มที่ใน Train.py ดังนั้นฉันคิดว่าคุณเป็นอิสระจากปัญหานี้
รองรับ Windows
ฉันไม่มีเครื่อง Windows ที่มี GPU เพื่อแก้ไขข้อบกพร่องและทดสอบ ยินดีต้อนรับถ้าใครสามารถร้องขอดึงและทดสอบได้
งานนี้สร้างจากผลงานที่ยอดเยี่ยมมากมายซึ่งรวมถึง:
ได้รับใบอนุญาตภายใต้ MIT ดูใบอนุญาตสำหรับรายละเอียดเพิ่มเติม
ยินดีต้อนรับผลงาน
หากคุณพบปัญหาใด ๆ อย่าลังเลที่จะเปิดปัญหา แต่เมื่อเร็ว ๆ นี้ยุ่งเกินไป
แก้ไขฉันหากมีอะไรผิดปกติหรือไม่ชัดเจน
โครงสร้างแบบจำลอง