====== Features mit caffe für Bilder bekommen ====== {{/dokuwiki/lib/images/smileys/fixme.gif|FIXME}} Seite ist obsolet, wir setzen nur noch theano+dnn+cuda ein {{/dokuwiki/lib/images/smileys/icon_exclaim.gif|:!:}} Wünsche, Bugs, Gedankenspiele und geldwerte Zuwendungen bitte an mich Bekannte Bugs {{/dokuwiki/lib/images/smileys/fixme.gif|FIXME}}: - doppelte json codierung - Beim MEMORY_DATA muss **ggf.** ein Resize und manuelles Abziehen des Mean durchgeführt werden https://github.com/BVLC/caffe/issues/1791. (auf grapu entsteht gerade ein neuer ansatz aus dem next branch, der hat einen patch, der bereits cv::Mat direkt unterstützen soll (das uchar Problem mit Datum wäre dann hinfällig)) Notizen zur alpha: **Aktuell wird die Testversion umgebaut auf caffeHomeMade (von Frozen geclont und gepatcht) und tee, Änderungen in der Doku folgen. Auch ein Blick wert: [[jetson_tk1|Jetson TK1 (Tegra-Board)]]** Qellcode liegt aktuell auf dem tegraBoard abgelegt in caffe/tools/: * base64.{h,cpp} * client.py * feat_from_img.cpp auf grapu abgelegt in /home/bengt/tegra/bengt_playground/caffe/tools/ offen: * blobs können noch nicht an http-Server übergeben werden (nur am Socket variabel), aktuell immer fc7 ===== c++-Part ===== - compilieren: g++-4.7 tools/feat_from_img.cpp -MMD -MP -pthread -fPIC -DNDEBUG -O2 -I/usr/include/python2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/local/include -I.build_release/src -I./src -I./include -I/usr/local/cuda/include -Wall -Wno-sign-compare -std=c++11 -c -o ./own/feat_from_img.o g++-4.7 ./own/feat_from_img.o -Wl,--whole-archive .build_release/lib/libcaffe.a -Wl,--no-whole-archive -o ./own/feat_from_img.bin -pthread -fPIC -DNDEBUG -O2 -I/usr/include/python2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/local/include -I.build_release/src -I./src -I./include -I/usr/local/cuda/include -Wall -Wno-sign-compare -L/usr/lib -L/usr/local/lib -L/usr/lib -L/usr/local/cuda/lib -L.build_release/lib -lcudart -lcublas -lcurand -lglog -lgflags -lprotobuf -lleveldb -lsnappy -llmdb -lboost_system -lhdf5_hl -lhdf5 -lm -lopencv_core -lopencv_highgui -lopencv_imgproc -lboost_thread -lstdc++ -lcblas -latlas -ljsoncpp - compilieren auf dem MacBook: g++ tools/feat_from_img.cpp -DCPU_ONLY -MMD -MP -pthread -fPIC -DNDEBUG -O2 -I/usr/include/python2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/local/include -I.build_release/src -I./src -I./include -I/usr/local/cuda/include -Wall -Wno-sign-compare -std=c++11 -c -o ./own/feat_from_img.o; g++ ./own/feat_from_img.o -Wl,--whole-archive .build_release/lib/libcaffe.a -Wl,--no-whole-archive -o ./own/feat_from_img.bin -pthread -fPIC -DNDEBUG -O2 -I/usr/include/python2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/local/include -I.build_release/src -I./src -I./include -I/usr/local/cuda/include -Wall -Wno-sign-compare -L/usr/lib -L/usr/local/lib -L/usr/lib -L/usr/local/cuda/lib -L.build_release/lib -lglog -lgflags -lprotobuf -lleveldb -lsnappy -llmdb -lboost_system -lhdf5_hl -lhdf5 -lm -lopencv_core -lopencv_highgui -lopencv_imgproc -lboost_thread -lstdc++ -lcblas -latlas -ljsoncpp - starten: [vorher Schritte von http://caffe.berkeleyvision.org/gathered/examples/feature_extraction.html durchführen] ./own/feat_from_img.bin models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel examples/_temp/imagenet_val.prototxt ./socket 1 GPU Wenn ''%%GPU%%'' weggelassen wird nutzt er CPU. Nach dem Start Ausgabe z.B.: E0326 23:14:53.339955 24906 feat_from_img.cpp:223] Using CPU E0326 23:14:56.075637 24906 upgrade_proto.cpp:619] Attempting to upgrade input file specified using deprecated transformation parameters: models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel E0326 23:14:56.075977 24906 upgrade_proto.cpp:624] Note that future Caffe releases will only support transform_param messages for transformation fields. Time for settup net (ms) = 2850 Heimdall opens the Bifröst Das Prog. lauscht jetzt am Socket auf Arbeit. - Abhängigkeiten: Neben den ganzen Abhängingkeiten von caffe kommt noch die zur ''%%libjsoncpp-dev%%'' hinzu. ==== Notizen ==== LD_LIBRARY_PATH=../caffeHomeMade/caffe/.build_release/lib:/usr/local/cuda/lib ===== http-Server für url via GET und POST ===== - ''%%client.py%%'' - starten: python ./tools/client.py ./socket - http-Server lauscht jetzt auf localhost:3141 - Port freigeben für 192.168.0.15 mit iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 3141 -j ACCEPT - alternativ: ufw allow 3141/tcp ===== Testen ob was kommt ===== - url via GET: curl localhost:3141/?url=http://petattack.com/wp-content/uploads/2014/07/little_cute_cat_1920x1080.jpg - Daten via POST: curl --data-urlencode image@./examples/images/cat.jpg localhost:3141 ===== Antwort ===== { "duration" : , : [[]], } Beispiel: { "duration" : 160.555, "fc7" : [[0.0,5.653236425, ... ,0.0]] }