niciBume / Cat_Prey_Analyzer

Cat Prey Image-Classification with deeplearning
MIT License
142 stars 22 forks source link

how can i use your code? #1

Closed staebchen0 closed 3 years ago

staebchen0 commented 3 years ago

Hi, I came across your blog by chance today :-) I have been trying to create a mouse recognition using deep learning / transfer learning for months.

As you wrote in your post, you need a lot of pictures for this process. I would like to try your method on me. However, I am currently still using a Windows 10 PC and a USB Cam for my project. (Python 3.7) with Visual Studio 2017.

How can I use your code?

A bot is addressed in your code

class NodeBot ():
    def __init __ (self):
        #Insert Chat ID and Bot Token according to Telegram API
        self.CHAT_ID = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
        self.BOT_TOKEN = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

What do you have to enter here?

What kind of object is that? from object_detection.utils import label_map_util

And what has to be installed in the Pyhton environment?

If you still need pictures for your project with loot, I can send you gladly provide some ;-)

niciBume commented 3 years ago

Hi Mate!

Nice that you're interested in this project! As for the code, the github repo is specifically made for the Raspberry Pi, and the section you sent me is the API key of the telegram-bot. Yet if you want to run the system, you can do so by utilizing only the cascade part of it. Since you're already acquainted with ML&TL I suppose you now keras? Worst case you can use the h5 models in the /models folder. Other than that, if you want more details, check out the /readme_images folder, there you should find my written thesis which goes into more detail.

The package you mentioned comes from the tensorflow object detection API, as the first stage of the cascade is simply tensorflows coco trained model. For the cascade you'll need the usual ML packages: numpy, pandas, cv2. I'll add the exact versions asap!

If you have any questions just hit me up!

Cheers,

Nic


Von: staebchen0 notifications@github.com Gesendet: Mittwoch, 9. September 2020 14:19:39 An: niciBume/Cat_Prey_Analyzer Cc: Subscribed Betreff: [niciBume/Cat_Prey_Analyzer] how can i use your code? (#1)

Hi, I came across your blog by chance today :-) I have been trying to create a mouse recognition using deep learning / transfer learning for months.

As you wrote in your post, you need a lot of pictures for this process. I would like to try your method on me. However, I am currently still using a Windows 10 PC and a USB Cam for my project. (Python 3.7) with Visual Studio 2017.

How can I use your code?

A bot is addressed in your code

class NodeBot (): def init (self):

Insert Chat ID and Bot Token according to Telegram API

    self.CHAT_ID = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
    self.BOT_TOKEN = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

What do you have to enter here? And what has to be installed in the Pyhton environment?

If you still need pictures for your project with loot, I can send you gladly provide some ;-)

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/niciBume/Cat_Prey_Analyzer/issues/1, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AEHXQHJD7FNKS5C7YVUH6VTSE5XFXANCNFSM4RCC42UA.

staebchen0 commented 3 years ago

Hi Nic,

yes, i have one more question:

I always get an error when loading the

mscoco_label_map.pbtxtmscoco_label_map.pbtxt

do I still have to download the label map?

Thanks and best regards Anja

niciBume commented 3 years ago

Hey Anja! So you have installed the TF objectdetection API on your windows based system? Does that run correctly? The mscoco_label_map.pbtxtmscoco_label_map.pbtxt is part of said API and needs to be linked in your python package. On the RPI you could follow this turorial: https://github.com/EdjeElectronics/TensorFlow-Object-Detection-on-the-Raspberry-Pi

So your problem is regarding the import of this: from object_detection.utils import label_map_util Check that you have exported the object_detection package to your PYTHONPATH as in: https://github.com/tensorflow/models/issues/1990#issuecomment-351445424

Also my code is meant to run on unix based OS so you would might have to apply changes to the parts of the code regarding the filesystems such as: sys.path.append('/home/pi/CatPreyAnalyzer')

Hope this helps you somewhat, else don't hesitate to hit me up 👍

Best, Nic

staebchen0 commented 3 years ago

Hey nic,

thanks, i will check the installation again. To test your program, I installed "tensorflow-object-detection-api 0.1.1" on my Win10 system. Probably part of the installation is still missing when I look at the information from your link

I will experiment a little more. ;-)

In my program I use Tensorflow without the API mentioned above with a self-made hdf5 model and it works ;-)

greetings Anja

niciBume commented 3 years ago

Thats awesome! The only reason I used the TF object detection API was that the CatFinder stage runs faster on the RPI. If you have a more powerful machine you can also use YOLOV3 for this stage.

Have fun!

staebchen0 commented 3 years ago

Hi Nic,

ich habe in eurer Semesterthesis gelesen, das du in der Schweiz studierst... ist es okay, wenn ich auf deutsch schreibe?

Viele Grüße Anja

niciBume commented 3 years ago

Klar 👍

staebchen0 commented 3 years ago

Super 👍

In der readme, schreibst du , das ihr noch Bilder zum verbessern des Modells benötigt.

Ich könnte dir meine Bilder zur Verfügung stellen? Insgesamt 11.000 Bilder, von meiner Katze vor der Katzenklappe. Davon .ca 2500 mit Beute.

Mich würde sehr interessieren, wie dein Programm bei der Erkennung abschneidet😊 Ohne darauf trainiert worden zu sein.

Mein Modell, ist mittlerweile ganz gut, aber vielleicht kann ich es verbessern, in dem ich zuerst den Mund der Katze suche und dann die pretiction mit meinem Modell durchführe. (Modell muss ich dann neu trainieren, da ja der Ausschnitt anders ist)

Kannst du mir sagen, welchen Code, aus deinem Programm ich dafür nutzen kann?

Viele Grüße Anja

niciBume commented 3 years ago

2500 😳?! Wow, das hätte ich zu Beginn der Arbeit unbedingt gebraucht! xD Sind es alles Bilder deiner eigenen Katze? Falls ja würde so ein Bias entstehen, sodass das Modell nur noch für deine Katze funktionieren würde. Am besten wären viele unterschiedliche Bilder... Aber ich würde gerne ca 15 Beute und 30 No_Beute Fotos entgegennehmen! Unser model ist nur mit 150 Beutebildern trainiert. Darum finden wir zuerst die Schnauze der Katze um den Task zu vereinfachen 😬

Du kannst der Kaskade ein "volles" Bild einfügen indem du Cascade.do_single_cascade() benutzt, in cascade.py. Ruf es in etwa so auf:

target_event_obj = Event_Element(img_name=img_name, cc_target_img=target_img) single_cascade = self.base_cascade.do_single_cascade(event_img_object=target_event_obj)

Das Objekt single_cascade beinhaltet nun alle Informationen: self.img_name = img_name self.cc_target_img = cc_target_img self.cc_cat_bool = None self.cc_pred_bb = None self.cc_inference_time = None self.cr_class = None self.cr_val = None self.cr_inference_time = None self.bbs_target_img = None self.bbs_pred_bb = None self.bbs_inference_time = None self.haar_pred_bb = None self.haar_inference_time = None self.ff_haar_bool = None self.ff_haar_val = None self.ff_haar_inference_time = None self.ff_bbs_bool = None self.ff_bbs_val = None self.ff_bbs_inference_time = None self.face_box = None self.face_bool = None self.pc_prey_class = None self.pc_prey_val = None self.pc_inference_time = None self.total_inference_time = None self.output_img = None Alle None's sollten bei einem erfolgreichen Durchlauft gesetzt sein. pc_prey_val ist die der output der logistic regression und hat ihren threshold bei 0.5 => 1:prey, 0:no_prey. Visueller output ist output_img welche alle Werte und BoundingBoxes direkt ins Bild einfügt, da siehst du ob die Kaskade funktioniert hat.

Halte mich auf dem laufenden ob es geklappt hat! Gruss Nici

staebchen0 commented 3 years ago

Kannst du mir deine email Adresse geben, dann schicke ich dir den link zu meinem Google Drive. Du kannst dir dann die Bilder aussuchen😉

staebchen0 commented 3 years ago

.... Mail ist unterwegs :-)

niciBume commented 3 years ago

Danke dir! 👍 Bezüglich: "Könnte ich auch den Aufruf "DummyDQueque", um die Bilder im input verzeichnis alle zu prüfen? Ich bin erstaunt, dass ihr mit 150 Bilder so ein Ergebnis erzielt habt. Mit welchen Parametern habt ihr MobileNetV2 trainiert?"

Könntest du indem du das verwendest: sq_cascade = Sequential_Cascade_Feeder() sq_cascade.dummy_queque_handler() => Change DummyDQueque path to your images Aber um zu benchmarken ist dies nicht die beste option, weil es die bilder als sequenz betrachtet und so Events aus deinen bildern macht. Du könntest single_debug() benutzen und so die metrics für deine ROC oder Precision-Recall berechnen.

Die Parameter müsste ich nochmals augraben, aber MobileNet wird für den detection Part benutzt und VGG16 für die Classification von Prey.

Cheers!

davidfrei90 commented 3 years ago

Hey vielen Dank für deinen Code, echt super! Ich habe alles installiert soweit. Auch der Chatbot funktioniert. Mein Problem liegt daran, dass nach dem Reboot nichts passiert. Ich hab dein Projekt auf dem RPI mit dem Befehl git clone angelegt. Wenn ich sudo python cascade.py install mache, dann erscheint ein Fehler SyntaxError: Non-ASCII character '\xf0' in file cascade.py on line 182. Sorry ich bin ein anfänger.... Muss ich was anderst machen. Vielleicht liegt es auch daran, dass ich ein RPI3 B habe... Hast du ein Tipp für mich? Danke Gruss David

niciBume commented 3 years ago

Hi David! Cool! Soweit so gut! Mhm... Wenn es bis vor dem reboot funktioniert, dann wird das Problem glaube ich kaum am RPI3 liegen, sondern eher am crontab. Kannst du mir mal den output von crontab -e zeigen? Gruss, Nic

davidfrei90 commented 3 years ago

Hi Nic. Danke für die schnelle Antwort.

pi@raspberrypi:~ $ crontab -e

@reboot python3 /home/pi/CatPreyAnalyzer/Cat_Prey_Analyzer/catCam_starter.sh

Ja schon, aber wenn ich das Projekt ja clone, muss ich es ja auch builden. Was sind die richtigen Schritte nach dem git clone git@github.com:niciBume/Cat_Prey_Analyzer.git Ich glaube da liegt mein Problem^^....

niciBume commented 3 years ago

Hmm sieht korrekt aus. Befindet sich dein Projekt aber auch in /home/pi ? Soweit ich weiss sollte das clonen genügen... Falls du es doch an den richtigen ort gecloned hast und es noch immer nicht läuft, mach einen neuen issue auf, ansonsten muss sich Anja alles mit anhören :)

koelbljp commented 3 years ago

Kannst du mir deine email Adresse geben, dann schicke ich dir den link zu meinem Google Drive. Du kannst dir dann die Bilder aussuchen😉

@staebchen0 Hallo Anja, Nici hat mich auf deine Bilder aufmerksam gemacht. Der Grund dafür ist mein Family Projekt KittyFlap.ch bei dem es exakt um so eine Katzenklappe geht. Ich habe insgesamt 170 mit und 170 Bilder ohne Beute und wollte dich fragen ob du interesse an meinen Bildern hast und im Gegenzug deine mit mir teilen würdest? Wäre echt toll. Danke im voraus, liebe grüsse Jean Paul

staebchen0 commented 3 years ago

hi Paul,

klar, das kann ich machen 😊 Schreib mir hier deine e-mail Adresse, ich schalte dich frei. Ich vermute jedoch, das dir die Bilder von meiner Katze mit Beute noch viel bringen, aber ein Versuch ist es wert 😉 Ich habe nur Bilder, die einen bestimmt Ausschnitt der Klappe zeigen. Viele Grüße Abja

koelbljp commented 3 years ago

Hallo Anja Danke für das freundliche Angebot! Ich versuche es mal und melde mich, sobald ich Zugriff habe.

Danke, LG jp

staebchen0 notifications@github.com schrieb am Do., 5. Nov. 2020, 19:18:

hi Paul,

klar, das kann ich machen 😊 Schreib mir hier deine e-mail Adresse, ich schalte dich frei. Ich vermute jedoch, das dir die Bilder von meiner Katze mit Beute noch viel bringen, aber ein Versuch ist es wert 😉 Ich habe nur Bilder, die einen bestimmt Ausschnitt der Klappe zeigen. Viele Grüße Abja

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/niciBume/Cat_Prey_Analyzer/issues/1#issuecomment-722552656, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKW4SQF67BZVXO6LTK3UMX3SOLT7XANCNFSM4RCC42UA .

staebchen0 commented 3 years ago

Habe ich jetzt was übersehen? Ich kann dich nur freischalten, wenn du die e-Mail Adresse hier einstellst

koelbljp commented 3 years ago

Hallo Anja, Sry wisste nicht das meine Mail nicht erscheint.

Jeanpaul.koelbl@gmail.com

LG jp

staebchen0 notifications@github.com schrieb am Fr., 6. Nov. 2020, 17:49:

Habe ich jetzt was übersehen? Ich kann dich nur freischalten, wenn du die e-Mail Adresse hier einstellst

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/niciBume/Cat_Prey_Analyzer/issues/1#issuecomment-723183232, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKW4SQA4YVSHIX3CD2H2Y5LSOQSIZANCNFSM4RCC42UA .

dlandolf commented 3 years ago

@staebchen0 Hi Anja,

Ich bin dabei, meinen eigenen Beute-Detektor zu basteln, da wir 2 Katzen haben, die uns immer wieder ihre Beute in die Wohnung bringen (manchmal sind es sogar unsere Nachbarskatzen, die uns eine Maus vorbeibringen!). Ich konnte bis jetzt leider erst sehr wenige Bilder sammeln und wollte dich fragen, ob ich vielleicht einige deiner Beute-Bilder benutzen könnte? Dies wäre sehr hilfreich! :)

Vielen Dank und liebe Grüsse Dominic (dominiclandolf@hotmail.com)

staebchen0 commented 3 years ago

Hallo Dominic,

Ohje, das ist wirklich nicht schön! Bei mir funktioniert es mittlerweile sehr gut😊

Ich schaue morgen mal nach, was noch auf dem Drive liegt und schicke dir einen Link. Ich habe mein Modell allerdings nur mit den Bildern meiner Katze trainiert.

Viele Grüße Anja

Am 16.03.2021 um 16:47 schrieb Dominic Landolf @.***>:

 @staebchen0 Hi Anja,

Ich bin dabei, meinen eigenen Beute-Detektor zu basteln, da wir 2 Katzen haben, die uns immer wieder ihre Beute in die Wohnung bringen (manchmal sind es sogar unsere Nachbarskatzen, die uns eine Maus vorbeibringen!). Ich konnte bis jetzt leider erst sehr wenige Bilder sammeln und wollte dich fragen, ob ich vielleicht einige deiner Beute-Bilder benutzen könnte? Dies wäre sehr hilfreich! :)

Vielen Dank und liebe Grüsse Dominic @.***)

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.