2016-03-26 43 views
1

16 bit veriyi kabul etmek için Caffe'de bazı değişiklikler yapmaya çalışıyorum.
image_convert veya DIGITS yardımcı programları ile oluşturulabilen olağan 8 bit lmdb olacağı gibi "dize" olarak kaydedilmiş, olağan kafe yerine 8 bit işaretsiz 256x256 görüntüyle doldurulmuş bir lmdb veri kümesi oluşturmayı başardım.
Bu lmdb'yi 16bit "string" verilerinde oluşturmak için io.py işlevlerini array_to_datum ve datum_to_array değiştirdim. Şimdi, eğer bu lmdb'yi caffe'de kullanırsam (sadece 4 sınıf), ağlar çalışır ancak yakınsama olmaz. Verilerimi düzgün bir şekilde okumadığından şüpheleniyorum. Sorun şu ki, array_to_blobproto ve blobproto_to_array numaralı io.py işlevleri iç veri içerikleri arasında herhangi bir ayrım yapmıyor gibi görünüyor ve 16 bit ile çalışırken değiştirmem gereken kodu bulamıyorum.
Herkes bana nerede çalışacaklarına dair ipucu verebilir mi?Caffe'yi lmdb içinde 16 bit veri kabul edecek şekilde değiştirme

Düzenleme: Kodda dolaşırken, bmd üzerinde lmdb'yi kullanmadan doğrudan png üzerinde çalışmak istersek, yeni bir veri katmanı veya yeni bir görüntü veri katmanı oluşturma olasılığının olması gerektiğini düşünüyorum. Ama bu C++ kodunu değiştirmeye çalışmak benim için önemsiz bir görev değil, esp. Kod içindeki veri akışını kolayca takip edemiyorum. Yeni katmanın python dilinde yazılabildiğini görüyorum. Yeni bir girdi veri katmanının güzel çalışabileceğini veya cnn performansını yavaşlatabileceğini düşünüyor musunuz?

cevap

0

Caffe/lmdb arabirimini dönüştürme ve uyarlama hakkında pek bir şey bilmiyorum, ancak yaptığınız şeyle% 100 emin değilseniz almak için çok riskli bir yol gibi görünüyor.
Örneğin, python arabirimindeki io ​​işlevlerini değiştirdiniz, ancak caffe'nin komut satırından çalışırken bu arabirimi kullandığını düşünmüyorum (ör. $CAFFE_ROOT/build/tools/caffe train ...). io.cpp dosyasında cpp io işlevlerine baktınız mı?

Alternatif bir yol öneririm: lmdb yerine hdf5 ikili girişleri kullanın.
Float32 için 16bit görüntüyü dönüştürebilir ve bunları hdf5 dosyalarında saklayabilir, daha sonra "HDF5Data" katmanı aracılığıyla bunları caffe'ye girebilirsiniz.

hdf5 ve caffe in this thread hakkında daha fazla bilgi edinin.