├── img ├── 1.png ├── 2.png ├── 3.png └── 4.png ├── la_croix_model ├── keras_model.h5 └── labels.txt ├── installation_scripts ├── windows_install.bat ├── mac_install.sh └── linux_install.sh ├── tm_obj_det.py └── README.md /img/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fatihes1/Techable-Machine-Turkish-Directory/HEAD/img/1.png -------------------------------------------------------------------------------- /img/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fatihes1/Techable-Machine-Turkish-Directory/HEAD/img/2.png -------------------------------------------------------------------------------- /img/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fatihes1/Techable-Machine-Turkish-Directory/HEAD/img/3.png -------------------------------------------------------------------------------- /img/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fatihes1/Techable-Machine-Turkish-Directory/HEAD/img/4.png -------------------------------------------------------------------------------- /la_croix_model/keras_model.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fatihes1/Techable-Machine-Turkish-Directory/HEAD/la_croix_model/keras_model.h5 -------------------------------------------------------------------------------- /la_croix_model/labels.txt: -------------------------------------------------------------------------------- 1 | 0 Background 2 | 1 Apple 3 | 2 Banana 4 | 3 Bell Pepper 5 | 4 Cabbage 6 | 5 Carrot 7 | 6 Cauliflower 8 | 7 Corn 9 | 8 Cucumber 10 | 9 Eggplant 11 | 10 Grapes 12 | 11 Kiwi 13 | 12 Lemon 14 | 13 Lettuce 15 | 14 Onion 16 | 15 Orange 17 | 16 Pear 18 | 17 Pineapple 19 | 18 Patato 20 | 19 Tomato 21 | 20 Watermelon 22 | -------------------------------------------------------------------------------- /installation_scripts/windows_install.bat: -------------------------------------------------------------------------------- 1 | :: Install script for OpenCV & TensorFlow for Windows 2 | :: Author: Michael D'Argenio 3 | :: mjdargen@gmail.com 4 | 5 | :: windows 6 | ECHO This script will update your packages, and install new packages to run OpenCV and TensorFlow. 7 | ECHO It can take up to 30 minutes to run depending upon your system. 8 | ECHO Upon completion, you may need to reboot your machine before running. 9 | ECHO Python 3 should be installed before running script. 10 | timeout /t 10 11 | 12 | :: install PIP 13 | curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 14 | python get-pip.py 15 | del get-pip.py 16 | 17 | :: install PIP packages 18 | pip install setuptools 19 | pip install virtualenv virtualenvwrapper-win 20 | 21 | :: setup virtual environment 22 | virtualenv ../TMenv 23 | call ..\TMenv\Scripts\activate 24 | 25 | :: install PIP packages in virtual environment 26 | ..\TMenv\Scripts\pip install numpy==1.18.1 27 | ..\TMenv\Scripts\pip install scipy==1.4.1 28 | ..\TMenv\Scripts\pip install pypiwin32 29 | ..\TMenv\Scripts\pip install pyttsx3==2.71 30 | ..\TMenv\Scripts\pip install matplotlib 31 | ..\TMenv\Scripts\pip install cvlib==0.2.3 32 | ..\TMenv\Scripts\pip install opencv-python==4.2.0.32 33 | ..\TMenv\Scripts\pip install tensorflow==2.0.0 34 | deactivate 35 | 36 | ECHO Done! 37 | echo To activate your virtual environment, use command './TMenv/Scripts/activate'. 38 | echo To exit your virtual enviroment, use command 'deactivate'. 39 | -------------------------------------------------------------------------------- /installation_scripts/mac_install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Install script for OpenCV & TensorFlow for Mac 3 | # Author: Michael D'Argenio 4 | # mjdargen@gmail.com 5 | 6 | echo "This script will update your packages, and install new packages to run OpenCV and TensorFlow." 7 | echo "It can take up to an hour to run depending upon your system." 8 | echo "Upon completion, you may need to reboot your machine before running." 9 | echo "Python 3 should be installed before running script." 10 | sleep 5s 11 | 12 | # install homebrew package manager 13 | /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 14 | 15 | # update packages and remove any unnecessary packages 16 | brew update 17 | brew upgrade 18 | brew cleanup 19 | 20 | # install dependency packages 21 | brew install cmake pkg-config curl wget 22 | brew install jpeg libpng libtiff openexr 23 | brew install eigen tbb hdf5 pyqt qt 24 | brew install opencv --with-contrib 25 | brew install espeak 26 | 27 | # PIP Python Package installations 28 | curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 29 | sudo python3 get-pip.py 30 | sudo rm get-pip.py 31 | sudo rm -rf ~/.cache/pip 32 | 33 | # install pip packages 34 | sudo pip3 install setuptools 35 | sudo pip3 install virtualenv virtualenvwrapper 36 | 37 | # setup virtual environment 38 | virtualenv TMenv 39 | source TMenv/bin/activate 40 | 41 | # install PIP packages in virtual environment 42 | pip3 install numpy==1.18.1 43 | pip3 install scipy==1.4.1 44 | pip3 install pyttsx3==2.71 45 | pip3 install matplotlib 46 | pip3 install cvlib==0.2.3 47 | pip3 install opencv-contrib-python==4.1.2.30 48 | pip3 install tensorflow==2.0.0 49 | deactivate 50 | 51 | # update packages and remove any unnecessary packages 52 | brew update 53 | brew upgrade 54 | brew cleanup 55 | 56 | echo "Done!" 57 | echo "To activate your virtual environment, use command 'source TMenv/bin/activate'." 58 | echo "To exit your virtual enviroment, use command 'deactivate'." 59 | -------------------------------------------------------------------------------- /installation_scripts/linux_install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Install script for OpenCV & TensorFlow for Linux 3 | # Author: Michael D'Argenio 4 | # mjdargen@gmail.com 5 | 6 | echo "This script will update your packages, and install new packages to run OpenCV and TensorFlow." 7 | echo "It can take up to an hour to run depending upon your system." 8 | echo "Upon completion, you may need to reboot your machine before running." 9 | echo "Python 3 should be installed before running script." 10 | sleep 5s 11 | 12 | # update packages and remove any unnecessary packages 13 | sudo apt-get --assume-yes update 14 | sudo apt-get --assume-yes upgrade 15 | sudo apt-get --assume-yes autoremove 16 | sudo apt-get --assume-yes clean 17 | 18 | # install dependency packages 19 | sudo apt-get --assume-yes install python3-pip 20 | sudo apt-get --assume-yes install build-essential cmake pkg-config 21 | sudo apt-get --assume-yes install libjpeg-dev libtiff5-dev libjasper-dev libpng-dev 22 | sudo apt-get --assume-yes install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev 23 | sudo apt-get --assume-yes install libxvidcore-dev libx264-dev 24 | sudo apt-get --assume-yes install libfontconfig1-dev libcairo2-dev 25 | sudo apt-get --assume-yes install libgdk-pixbuf2.0-dev libpango1.0-dev 26 | sudo apt-get --assume-yes install libgtk2.0-dev libgtk-3-dev 27 | sudo apt-get --assume-yes install libatlas-base-dev gfortran 28 | sudo apt-get --assume-yes install libhdf5-dev libhdf5-serial-dev libhdf5-103 29 | sudo apt-get --assume-yes install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5 30 | sudo apt-get --assume-yes install libespeak-dev 31 | sudo apt-get --assume-yes install python3-dev 32 | sudo apt-get --assume-yes install curl wget 33 | 34 | # install PIP 35 | curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 36 | sudo python3 get-pip.py 37 | sudo rm get-pip.py 38 | sudo rm -rf ~/.cache/pip 39 | 40 | # install pip packages 41 | sudo pip3 install setuptools 42 | sudo pip3 install virtualenv virtualenvwrapper 43 | 44 | # setup virtual environment 45 | virtualenv TMenv 46 | source TMenv/bin/activate 47 | 48 | # install PIP packages in virtual environment 49 | pip3 install numpy==1.18.1 50 | pip3 install scipy==1.4.1 51 | pip3 install pyttsx3==2.71 52 | pip3 install matplotlib 53 | pip3 install cvlib==0.2.3 54 | pip3 install opencv-contrib-python==4.2.0.32 55 | pip3 install tensorflow==2.0.0 56 | deactivate 57 | 58 | # update packages and remove any unnecessary packages 59 | sudo apt-get --assume-yes update 60 | sudo apt-get --assume-yes upgrade 61 | sudo apt-get --assume-yes autoremove 62 | sudo apt-get --assume-yes clean 63 | 64 | # for linux install 65 | # if you get an error that states something similar to the following: 66 | # X Error: BadDrawable (invalid Pixmap or Window parameter) 9 67 | # you will need to run the following command 68 | sudo sh -c 'echo "QT_X11_NO_MITSHM=1" >> /etc/environment' 69 | 70 | echo "Done!" 71 | echo "To activate your virtual environment, use command 'source TMenv/bin/activate'." 72 | echo "To exit your virtual enviroment, use command 'deactivate'." 73 | -------------------------------------------------------------------------------- /tm_obj_det.py: -------------------------------------------------------------------------------- 1 | # Teachable Machine ile Makine Öğrenimi ve Nesne Algılama 2 | # 3 | # Fatih Es 4 | # 1.fatihes@gmail.com 5 | # https://github.com/fatihes1 6 | # Düzlenme Tarihi : 21 Şubat 2021 7 | # 8 | # Bu program videodaki nesneleri algılamak için Tensorflow ve OpenCV kullanır. 9 | # Bu program Michael D'Argenio tarafından Teachable Machine modellerini kullanılmak üzere 6 Şubat 2020 yılında 10 | #tasarlanmıştır. 11 | # Michael D'Argenio 12 | # mjdargen@gmail.com 13 | # https://dargenio.dev 14 | # https://github.com/mjdargen 15 | 16 | import multiprocessing 17 | import numpy as np 18 | import cv2 19 | import tensorflow.keras as tf 20 | import pyttsx3 21 | import math 22 | # use matplotlib if cv2.imshow() doesn't work 23 | # import matplotlib.pyplot as plt 24 | 25 | 26 | # this process is purely for text-to-speech so it doesn't hang processor 27 | def speak(speakQ, ): 28 | # initialize text-to-speech object 29 | engine = pyttsx3.init() 30 | # can adjust volume if you'd like 31 | volume = engine.getProperty('volume') 32 | engine.setProperty('volume', volume) # add number here 33 | # initialize last_msg to be empty 34 | last_msg = "" 35 | # keeps program running forever until ctrl+c or window is closed 36 | while True: 37 | msg = speakQ.get() 38 | # clear out msg queue to get most recent msg 39 | while not speakQ.empty(): 40 | msg = speakQ.get() 41 | # if most recent msg is different from previous msg 42 | # and if it's not "Background" 43 | if msg != last_msg and msg != "Background": 44 | last_msg = msg 45 | # text-to-speech say class name from labels.txt 46 | engine.say(msg) 47 | engine.runAndWait() 48 | if msg == "Background": 49 | last_msg = "" 50 | 51 | 52 | # main line code 53 | # if statement to circumvent issue in windows 54 | if __name__ == '__main__': 55 | 56 | # read .txt file to get labels 57 | labels_path = "la_croix_model/labels.txt" 58 | # open input file label.txt 59 | labelsfile = open(labels_path, 'r') 60 | 61 | # initialize classes and read in lines until there are no more 62 | classes = [] 63 | line = labelsfile.readline() 64 | while line: 65 | # retrieve just class name and append to classes 66 | classes.append(line.split(' ', 1)[1].rstrip()) 67 | line = labelsfile.readline() 68 | # close label file 69 | labelsfile.close() 70 | 71 | # load the teachable machine model 72 | model_path = 'la_croix_model/keras_model.h5' 73 | model = tf.models.load_model(model_path, compile=False) 74 | 75 | # initialize webcam video object 76 | cap = cv2.VideoCapture(0) 77 | 78 | # width & height of webcam video in pixels -> adjust to your size 79 | # adjust values if you see black bars on the sides of capture window 80 | frameWidth = 1280 81 | frameHeight = 720 82 | 83 | # set width and height in pixels 84 | cap.set(cv2.CAP_PROP_FRAME_WIDTH, frameWidth) 85 | cap.set(cv2.CAP_PROP_FRAME_HEIGHT, frameHeight) 86 | # enable auto gain 87 | cap.set(cv2.CAP_PROP_GAIN, 0) 88 | 89 | # creating a queue to share data to speech process 90 | speakQ = multiprocessing.Queue() 91 | 92 | # creating speech process to not hang processor 93 | p1 = multiprocessing.Process(target=speak, args=(speakQ, ), daemon="True") 94 | 95 | # starting process 1 - speech 96 | p1.start() 97 | 98 | # keeps program running forever until ctrl+c or window is closed 99 | while True: 100 | 101 | # disable scientific notation for clarity 102 | np.set_printoptions(suppress=True) 103 | 104 | # Create the array of the right shape to feed into the keras model. 105 | # We are inputting 1x 224x224 pixel RGB image. 106 | data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32) 107 | 108 | # capture image 109 | check, frame = cap.read() 110 | # mirror image - mirrored by default in Teachable Machine 111 | # depending upon your computer/webcam, you may have to flip the video 112 | # frame = cv2.flip(frame, 1) 113 | 114 | # crop to square for use with TM model 115 | margin = int(((frameWidth-frameHeight)/2)) 116 | square_frame = frame[0:frameHeight, margin:margin + frameHeight] 117 | # resize to 224x224 for use with TM model 118 | resized_img = cv2.resize(square_frame, (224, 224)) 119 | # convert image color to go to model 120 | model_img = cv2.cvtColor(resized_img, cv2.COLOR_BGR2RGB) 121 | 122 | # turn the image into a numpy array 123 | image_array = np.asarray(model_img) 124 | # normalize the image 125 | normalized_image_array = (image_array.astype(np.float32) / 127.0) - 1 126 | # load the image into the array 127 | data[0] = normalized_image_array 128 | 129 | # run the prediction 130 | predictions = model.predict(data) 131 | 132 | # confidence threshold is 90%. 133 | conf_threshold = 90 134 | confidence = [] 135 | conf_label = "" 136 | threshold_class = "" 137 | # create blach border at bottom for labels 138 | per_line = 2 # number of classes per line of text 139 | bordered_frame = cv2.copyMakeBorder( 140 | square_frame, 141 | top=0, 142 | bottom=30 + 15*math.ceil(len(classes)/per_line), 143 | left=0, 144 | right=0, 145 | borderType=cv2.BORDER_CONSTANT, 146 | value=[0, 0, 0] 147 | ) 148 | # for each one of the classes 149 | for i in range(0, len(classes)): 150 | # scale prediction confidence to % and apppend to 1-D list 151 | confidence.append(int(predictions[0][i]*100)) 152 | # put text per line based on number of classes per line 153 | if (i != 0 and not i % per_line): 154 | cv2.putText( 155 | img=bordered_frame, 156 | text=conf_label, 157 | org=(int(0), int(frameHeight+25+15*math.ceil(i/per_line))), 158 | fontFace=cv2.FONT_HERSHEY_SIMPLEX, 159 | fontScale=0.5, 160 | color=(255, 255, 255) 161 | ) 162 | conf_label = "" 163 | # append classes and confidences to text for label 164 | conf_label += classes[i] + ": " + str(confidence[i]) + "%; " 165 | # prints last line 166 | if (i == (len(classes)-1)): 167 | cv2.putText( 168 | img=bordered_frame, 169 | text=conf_label, 170 | org=(int(0), int(frameHeight+25+15*math.ceil((i+1)/per_line))), 171 | fontFace=cv2.FONT_HERSHEY_SIMPLEX, 172 | fontScale=0.5, 173 | color=(255, 255, 255) 174 | ) 175 | conf_label = "" 176 | # if above confidence threshold, send to queue 177 | if confidence[i] > conf_threshold: 178 | speakQ.put(classes[i]) 179 | threshold_class = classes[i] 180 | # add label class above confidence threshold 181 | cv2.putText( 182 | img=bordered_frame, 183 | text=threshold_class, 184 | org=(int(0), int(frameHeight+20)), 185 | fontFace=cv2.FONT_HERSHEY_SIMPLEX, 186 | fontScale=0.75, 187 | color=(255, 255, 255) 188 | ) 189 | 190 | # original video feed implementation 191 | cv2.imshow("Capturing", bordered_frame) 192 | cv2.waitKey(10) 193 | 194 | # # if the above implementation doesn't work properly 195 | # # comment out two lines above and use the lines below 196 | # # will also need to import matplotlib at the top 197 | # plt_frame = cv2.cvtColor(bordered_frame, cv2.COLOR_BGR2RGB) 198 | # plt.imshow(plt_frame) 199 | # plt.draw() 200 | # plt.pause(.001) 201 | 202 | # terminate process 1 203 | p1.terminate() 204 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![](https://img.shields.io/badge/Python-3776AB?style=for-the-badge&logo=python&logoColor=white) 2 | ![](https://img.shields.io/badge/TensorFlow-FF6F00?style=for-the-badge&logo=TensorFlow&logoColor=white) 3 | ![](https://img.shields.io/badge/OpenCV-27338e?style=for-the-badge&logo=OpenCV&logoColor=white) 4 | ![]() 5 | # Techable-Machine-Turkish-Directory 6 | Google Techable Machine Kullanımı Hakkında Rehber ve Meyve-Sebze Sınıflandırma Projesi 7 | 8 |

Bilgilendirme

9 |

Bu projede Kaggle üzerinden meyve ve sebzeleri içeren bu veri seti kullanılmıştır. Orijinal GitHub dosyaları Michael D'Argenio ait olup kaynak kodları yardımıyla farklı bir görüntü işleme projesi olarak düzenlenmiştir.

10 | 11 |

Öğretilebilir Makine (Teachable Machine) Nedir?

12 |

İlk versiyonu 2017 yılında yayınlanmış olan ve en kısa tanımı ile makine öğrenimi modelleri oluşturmayı hızlı, kolay ve herkes için erişilebilir olan web tabanlı bir araçtır denebilir. Öğretilebilir makine, web tarayıcımızda yaptığımız modelleri eğitmek ve çalıştırmak için Javascript’te makine öğrenmesi için kullanılan TensorFlow.js kitaplığını kullanmaktadır. Tek bir cümle ile ifade etmek istersek herhangi bir kodlamada yapmadan kendi derin öğrenme modelimizi geliştirmeye imkan sağlar. Bu aracı kullanımı ise oldukça basit :

13 |

    14 |
  1. Örneklerimizi, modelimizin öğrenmesini istediğimiz sınıf veya kategoriler halinde gruplarız.
  2. 15 |
  3. Modelimizi tek bir buton ile eğitip, ardından yeni örnekleri doğru şekilde sınıflandırılıp sınıflandırılmadığını test ederiz.
  4. 16 |
  5. Modelimizi siteler, uygulamalar gibi birçok alan için ücretsiz bir şekilde indirebiliriz.
  6. 17 |
18 |

Öğretilebilir makine esnek bir yapıya sahiptir. Bu esnek yapı sayesinde halihazırda olan dosyalarımızı kullanabilir veya o an web kamerası veya mikrofonu kullanarak verilerimizi oluşturabiliriz.

19 |

Şuanlık sadece üç model sunmaktadır. Fotoğraf, ses veya poz sınıflandırabiliyoruz. Geliştiriciler yakın zamanda yeni modellerin geleceğini de belirtmektedir.

20 |

Öğretebilir makine ile yapılan tüm modeller, Javascript’in çalıştığı her yerde çalışabilen TensorFlow.js modelleridir. Bu nedenle Glitch, P5,js, Node.js gibi araçlar ile verimli çalışabilmektedir.

21 | 22 |

Adım Adım Teachable Machine Kullanımı

23 | 24 |

Adım 1: Teachable Machine Üzerinden Model Oluşturma

25 |

Projenin Seçilmesi: Teachable Machine oldukça kolay bir arayüze sahiptir. Bu proje de görüntü işleme üzerine bir model geliştirip yerel bilgisayarımızda çalıştırmayı hedefliyoruz. https://teachablemachine.withgoogle.com/ adresine gidin ve ‘Get Started’ kısmına tıklayınız. Sonrasında ‘Image Project’ ksımını seçerek devam edin. Bu seçim bize resimlerden model oluşturup eğitebileceğimiz bir sayfa açar.

26 |

Veri Setinin Oluşturulması: Resimleri sınıflandırmak ve modeli eğitmek için sınıfları ekleyip onlara etiket atamalısınız. Bu etiketleri yani sınıf adlarını model eğitildikten sonra nesneyi tanıdığında ne olduğunu belirtmek için kullanacak.

27 |

Bir grubu ‘Arka Plan’ sınıfı olarak atmak mantıklı olacaktır. Böylelikle herhangi bir nesne konulmadığında arka plan çıktısı alırız. Buna ek olarak arka plandaki ayrıntıları diğer etiketli sınıflardan biriyle ilişkilendirilmemesine yardımcı oluruz.

28 |

Bir sınıfa görüntü eklemek için, webcam kullanabileceğiniz gibi başka kaynaktan görüntüler yükleyebiliriz. İnternet üzerinden hazır veri setleri bulacağımız gibi kendi veri setlerimizi de oluşturabiliriz. Bu örnekte Kaggle’da bulunan ve bu link (https://www.kaggle.com/kritikseth/fruit-and-vegetable-image-recognition) üzerinden erişilebilir olan meyve ve sebzeler üzerine fotoğraflardan oluşan seti kullanıyoruz.

29 |

Modeli Eğitmek: Tüm sınıfları oluşturduktan ve veri setimizin yeteri kadar fotoğraf içerdiğinden emin olduktan sonra modeli eğitme aşamasına gelmiş oluyoruz. Modeli eğitmek için tarayıcı üzerindeki sekmeyi açık bırakmalısınız ve elbette modeli eğitmek biraz zaman alabilmektedir. Tamamlandıktan sonra modeli test etme kısmına gelmiş oluyoruz.

30 |

Modeli Test Etmek: Şimdi eğitilmiş modelimizi test etme ve başarısının nasıl olduğunu görebiliriz. Önizleme bölgesine gidip ‘Input’ seçeneğini açarsak web kameramız açılacaktır. Web kamerası önüne eğitirken kullandığınız nesneleri koyarak doğru tahmin edip etmediğini kontrol edebiliriz. Eğer iyi bir performans almadığınızı düşünüyorsanız modeli dağa çok fotoğraf ile besleyerek tekrar eğitmeyi deneyin, memnunsanız modeli dışa aktarma zamanı gelmiştir.

31 |

Modeli Dışarı Aktarma: Modeli dışarı aktarmak için ‘Export Model’ butonuna tıklayın. Yeni bir pencere açılacaktır. ‘Tensorflow’ sekmesine tıkladıktan sonra hemen sonrasında ‘Keras’ türünü seçiniz. Bu işlemden sonra ‘Download my model’ diyerek modelinizi indirin. Modei sıkıştırmak ve indirmeye hazır hale getirmek birkaç dakika sürebilir. Bir ‘.zip’ doyası inecektir. Zip içerisindeki dosyaları dışarı çıkarttığınızda ‘keras_model.h5’ dosyası ve bir ‘label.txt’ dosyası görmelisiniz. Bu dosyları konumunu unutmayacağınız bir yere taşımanızı tavsiye ederim.

32 | 33 |

Adım 2: Python 3 Kurulumu

34 |

Yapılması gereken ilk işlem eğer bilgisayarınızda halihazırda kurulu değilse Python 3’ü kurmak olacaktır. https://www.python.org/downloads/ adresine gidip işletim sisteminiz için doğru kurulumu indirip çalıştırabilirsiniz. Kurulum sırasında, Python’u Path’e eklmek için kutuyu işaretlediğinizden emin olun.

35 |

Python’u tam olarak yükledikten ve Path’e ekledikten sonra, terminalizden veta komut istemcisini açıp ‘python –version’ ve hemen ardından ‘python3 –version’ yazın. Bu önemlidir çünkü; ‘python’ veya ‘python3’ komutunun Python 3 kurulumunuzla eşleşip eşleşmediğini bilmek istiyoruz. Python komut satırlarını çalıştırmak ve teni Python paketleri yüklemek gibi işlemler için bilmemiz gerek. Python ve Python3 ile hiçbir yürütülebilir dosya eşlenmemiş ise, işletim sisteminizin Path kısmına ortam değişkenleri eklemeyi deneyebilirsiniz.

36 |

Şimdi bu projeyi yaparken yararlandığımız dosyaları, makine öğrenimi modelini ve demo Python programını projeyi farklı bir veri seti ile yapan Micheal’in Github deposundan veya direkt olarak bu projeyi şahsi Github depomdan almanız gerekecek. Bir git istemcisi kurabilir ve depoyu klonlayabilir veya isterseniz direkt tarayıcınızdan deponun zip dosyasını indirebilirsiniz:

37 |

Micheal Github Depo Linki : https://github.com/mjdargen/Teachable-Machine-Object-Detection

38 | 39 |

Adım 3: Python Ortamını Ayarlama: OpenCV ve TensorFlow

40 | 41 |

Bu geliştirme ortamı için kurulum sürecini basitleştirmek adına Micheal’in hazırladığı kurulum komut dosyalarını kullanacağız. Github üzerinden aldığım dosyalar içerisinde ‘installation_scripts’ adlı klasörün içerisine girmeliyiz. İşletim sistemimize uygun olan çalıştırmalıyız.

42 |

Windows Kurulumu : Python 3’ün kurulu olduğunu varsayar.Python 3 çalıştırılabilir dosyanızın ‘python3’ ile çağrıldığını varsayar. Aksi takdirde, kabuk komut dosyasını düzenlemeniz ve ‘python3’ komutunun her örneğini ‘python’ ile değiştirmeniz gerekir. ‘Windows_install.btt’ toplu komut dosyasını çalıştırmalıyız ancak yönetici olarak çalıştırmayalım. Sistem ve internet hızına bağlı olarak yarım saat veya daha fazla sürebilmektedir.

43 |

Mac Kurulumu: Python 3’ün kurulu olduğunu varsayar.Python 3 çalıştırılabilir dosyanızın ‘python3’ ile çağrıldığını varsayar. Aksi takdirde, kabuk komut dosyasını düzenlemeniz ve ‘python3’ komutunun her örneğini ‘python’ ile değiştirmeniz gerekir. İndirilen dosyların olduğu klasörde açılan terminale şu kodu yazarak komut dosyasını çalıştırılabilir hale getirmeniz gerekmektedir :

44 | 47 |

 Kabuk komut dosyasını şu komutu kullanarak çalıştırabilirsiniz:

48 | 51 |

 Sistem ve internet hızına bağlı olarak yarım saat veya daha fazla sürebilmektedir.

52 |

Linux Kurulumu: Python 3’ün kurulu olduğunu varsayar.Python 3 çalıştırılabilir dosyanızın ‘python3’ ile çağrıldığını varsayar. Aksi takdirde, kabuk komut dosyasını düzenlemeniz ve ‘python3’ komutunun her örneğini ‘python’ ile değiştirmeniz gerekir. İndirilen dosyların olduğu klasörde açılan terminale şu kodu yazarak komut dosyasını çalıştırılabilir hale getirmeniz gerekmektedir :

53 | 56 |

  Kabuk komut dosyasını şu komutu kullanarak çalıştırabilirsiniz:

57 | 60 |

 Not: OpenCV ve Tensorfow kurulumlarını resmi siteleri üzerinden de yapabilirsiniz.

61 | 62 |

Adım 4: Kaynak Kodunu Ayarlama

63 |

Artık OpenCV ve TensorFlow geliştirme ortamı kurulumlarına sahip olduğumuza göre Teachable Machine modelimizi çalıştırabiliriz. Sağlanılan örnek modeli veta oluşturup dışa aktardığınız modeli kullanabilirisiniz

64 |

Modelimizi dışarı aktardırdıktan ve sonrada ‘.zip’ dosyasından dizine çıkardıktan sonra ‘.h5’ uzantılı dosyamız ve ‘label.txt’ dosyamız vardı. Bunları kopyalıp Github üzerinden indirdiğimiz dosyların dizininde bulunan ‘la_croix_model’ klasörünün içine yapıştırıp içeride aynı adla bulunan dosyalarla değiştir dememiz yeterlidir.

65 |

Webcam video beslemesinin genişlik ve yükselliğini piksel cinsenden belirlemek için ‘tm_obj_det.py’ dosyasını sağ tık yaptıktan sonra ‘Edit with IDLE’ diyebiliriz (Windows bilgisayarlar için). Açtıktan sonra ‘frameWidth’ ve ‘frameHeight’ değişkenlerini güncelleyebilirsiniz veya bu kısma hiç dokunmadan devam edebilirsiniz.

66 |

İsterseniz güven eşiğini (conf_threshold)  ayarlayabilirsiniz. Bu değişken, modelimizin görüntüyü etiketlemeden ve tahmini söylemeden mnce ne kadar emin olmasını belirlediğimiz bir yüzde değeridir. Varsayılan olarak güven eşiği %90’a ayarlanmıştır.

67 |

Son olarak, videonun düzgün bir şekilde gösterilmesi ile ilgili sorunla karşılaşıyorsanız, matplotlib uygulamasını kullanabilirsiniz. Bunun için ‘cv.imshow’ ve ‘cv2.waitKey’ satırlarını yorumlamanız gerekecektir. Daha sonrasında ‘import matplotlib’ ve kodun sonlarına doğru olan olan ‘plt’ kod satırlarının yorumlarını kaldırmanız gerekecektir.

68 | 69 |

Adım 5: Çalıştırma Zamanı

70 |

Artık kodumuz çalışacak şekilde ayarlanmış olmalı. Dizine gidin, terminal yardımıyla veya kullandığınız bir IDE (Tümleşik Geliştirme Ortamı) aracılığıyla ‘tm_obj_det.py’ dosyasını çalıştırın. Program, hangi nesneyi tanıdığını etiketleyecek ve nesnenin adını söyleyecektir.

71 |

Not: Programı kapatmak için CTRL + C tuşlarını kullanın aksi takdirde çalışmaya devam edecektir veya kullandığınız IDE üzerinden durdurma butonuna basabilirsiniz. (Pycharm da olduğu gibi)

72 |

Örnek Çıktı: (Telefon ekranından portakal resmi gösterilmiştir.)

73 | 74 | 75 | --------------------------------------------------------------------------------