Saya mencoba melatih yolo pada dataset saya sendiri. Saya berhasil melatih overfit pada 10 gambar dengan 2 objek. Inferensi bekerja dengan baik.
Sekarang saya mencoba melatih dataset lengkap 6000 gambar dan mendapatkan kesalahan.
Cmd yang saya gunakan untuk melatih:
./flow --train --dataset /home/ubuntu/datasets/img/ --annotation /home/ubuntu/datasets/anno/ --model cfg/yolo-17c.cfg --load bin/yolo.weights --keep 5 --epoch 30000 --save 1000 --lr 0.00001 --batch 16 --gpu .8
Kesalahan sebenarnya:
Disebabkan oleh op 'Reshape', didefinisikan di:
File "./flow", baris 44, di
tfnet = TFNet(BENDERA)
File "/home/ubuntu/darkflow/net/build.py", baris 63, di __init__
self.setup_meta_ops()
File "/home/ubuntu/darkflow/net/build.py", baris 106, di setup_meta_ops
jika self.FLAGS.train: self.build_train_op()
File "/home/ubuntu/darkflow/net/help.py", baris 15, di build_train_op
self.framework.loss(self.out)
File "/home/ubuntu/darkflow/net/yolov2/train.py", baris 56, hilang
net_out_reshape = tf.reshape(net_out, [-1, H, W, B, (4 + 1 + C)])
File "/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/ops/gen_array_ops.py", baris 2630, dalam bentuk ulang
nama = nama)
File "/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py", baris 763, di apply_op
op_def=op_def)
File "/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", baris 2327, di create_op
original_op=self._default_original_op, op_def=op_def)
File "/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", baris 1226, di __init__
self._traceback = _extract_stack()
InvalidArgumentError (lihat di atas untuk traceback): Input untuk membentuk kembali adalah tensor dengan nilai 1149200, tetapi bentuk yang diminta memerlukan kelipatan 18590
[[Node: Reshape = Reshape[T=DT_FLOAT, Tshape=DT_INT32, _device="/ job:localhost/replica :0/ task:0/gpu :0"](output, Reshape/shape)]]
[[Node: mul_30/_195 = _Recv[client_terminated=false, recv_device="/ job:localhost/replica :0/ task:0/cpu :0", send_device="/ job:localhost/replica :0/ tugas:0 /gpu :0", send_device_incarnation=1, tensor_name="edge_188_mul_30", tensor_type=DT_FLOAT, _device="/ job:localhost/replica :0/ task:0/cpu :0"]()]]
File labels.txt
memiliki 17 label.
Perubahan yang saya buat pada yolo-17c.cfg adalah:
filters=125
untuk lapisan terakhir saya juga mencoba ini dengan 425
dan 35
classes=17
berdasarkan jumlah kelas
Saya menyadari bahwa nomor 18590
dikaitkan dengan width=416, height=416
ketika saya mengubahnya menjadi width=224, height=224
, saya mengerti
...but the requested shape requires a multiple of 21560
@thtrieu , @Dhruv-Mohan , @abagshaw apakah Anda punya ide mengapa saya mendapatkan kesalahan ini ?
Terima kasih atas bantuannya
Anda perlu mengatur filters=110
untuk konv. terakhir. lapisan.
Itu perlu didasarkan pada rumus ini:
filter= #num * (#kelas + 5)
[konvolusi]
ukuran = 1
langkah = 1
pad = 1
filter = 110
aktivasi = linier
[wilayah]
jangkar = 0.738768,0.874946, 2.42204,2.65704, 4.30971,7.04493, 10.246,4.59428, 12.6868,11.8741
Semoga membantu
@1NNcoder Tolong beri tahu apakah masalah sudah teratasi? Jika ya, Anda dapat menutupnya dan mengosongkan ruang untuk orang lain :)
Ya ini bekerja
Komentar yang paling membantu
Anda perlu mengatur
filters=110
untuk konv. terakhir. lapisan.Itu perlu didasarkan pada rumus ini:
filter= #num * (#kelas + 5)
Semoga membantu