קורס בינה מלאכותית : RB41-06 זיהוי מספרים וכתב יד על ידי בינה מלאכותית
1 |
<span class="n">pip</span> <span class="n">install</span> <span class="n">tensorflow</span> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
Requirement already satisfied: tensorflow in d:\users\dev66\anaconda4\lib\site-packages (2.13.0) Requirement already satisfied: tensorflow-intel==2.13.0 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow) (2.13.0) Requirement already satisfied: opt-einsum>=2.3.2 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (3.3.0) Requirement already satisfied: keras<2.14,>=2.13.1 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (2.13.1) Requirement already satisfied: gast<=0.4.0,>=0.2.1 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (0.4.0) Requirement already satisfied: typing-extensions<4.6.0,>=3.6.6 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (4.4.0) Requirement already satisfied: packaging in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (22.0) Requirement already satisfied: absl-py>=1.0.0 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (1.4.0) Requirement already satisfied: libclang>=13.0.0 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (16.0.0) Requirement already satisfied: grpcio<2.0,>=1.24.3 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (1.56.0) Requirement already satisfied: astunparse>=1.6.0 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (1.6.3) Requirement already satisfied: google-pasta>=0.1.1 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (0.2.0) Requirement already satisfied: numpy<=1.24.3,>=1.22 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (1.23.5) Requirement already satisfied: setuptools in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (65.6.3) Requirement already satisfied: h5py>=2.9.0 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (3.7.0) Requirement already satisfied: tensorflow-estimator<2.14,>=2.13.0 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (2.13.0) Requirement already satisfied: termcolor>=1.1.0 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (2.3.0) Requirement already satisfied: wrapt>=1.11.0 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (1.14.1) Requirement already satisfied: flatbuffers>=23.1.21 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (23.5.26) Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (0.31.0) Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (4.23.4) Requirement already satisfied: tensorboard<2.14,>=2.13 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (2.13.0) Requirement already satisfied: six>=1.12.0 in d:\users\dev66\anaconda4\lib\site-packages (from tensorflow-intel==2.13.0->tensorflow) (1.16.0) Requirement already satisfied: wheel<1.0,>=0.23.0 in d:\users\dev66\anaconda4\lib\site-packages (from astunparse>=1.6.0->tensorflow-intel==2.13.0->tensorflow) (0.38.4) Requirement already satisfied: google-auth-oauthlib<1.1,>=0.5 in d:\users\dev66\anaconda4\lib\site-packages (from tensorboard<2.14,>=2.13->tensorflow-intel==2.13.0->tensorflow) (1.0.0) Requirement already satisfied: werkzeug>=1.0.1 in d:\users\dev66\anaconda4\lib\site-packages (from tensorboard<2.14,>=2.13->tensorflow-intel==2.13.0->tensorflow) (2.2.2) Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in d:\users\dev66\anaconda4\lib\site-packages (from tensorboard<2.14,>=2.13->tensorflow-intel==2.13.0->tensorflow) (0.7.1) Requirement already satisfied: google-auth<3,>=1.6.3 in d:\users\dev66\anaconda4\lib\site-packages (from tensorboard<2.14,>=2.13->tensorflow-intel==2.13.0->tensorflow) (2.22.0) Requirement already satisfied: requests<3,>=2.21.0 in d:\users\dev66\anaconda4\lib\site-packages (from tensorboard<2.14,>=2.13->tensorflow-intel==2.13.0->tensorflow) (2.28.1) Requirement already satisfied: markdown>=2.6.8 in d:\users\dev66\anaconda4\lib\site-packages (from tensorboard<2.14,>=2.13->tensorflow-intel==2.13.0->tensorflow) (3.4.1) Requirement already satisfied: cachetools<6.0,>=2.0.0 in d:\users\dev66\anaconda4\lib\site-packages (from google-auth<3,>=1.6.3->tensorboard<2.14,>=2.13->tensorflow-intel==2.13.0->tensorflow) (5.3.1) Requirement already satisfied: urllib3<2.0 in d:\users\dev66\anaconda4\lib\site-packages (from google-auth<3,>=1.6.3->tensorboard<2.14,>=2.13->tensorflow-intel==2.13.0->tensorflow) (1.26.14) Requirement already satisfied: pyasn1-modules>=0.2.1 in d:\users\dev66\anaconda4\lib\site-packages (from google-auth<3,>=1.6.3->tensorboard<2.14,>=2.13->tensorflow-intel==2.13.0->tensorflow) (0.2.8) Requirement already satisfied: rsa<5,>=3.1.4 in d:\users\dev66\anaconda4\lib\site-packages (from google-auth<3,>=1.6.3->tensorboard<2.14,>=2.13->tensorflow-intel==2.13.0->tensorflow) (4.9) Requirement already satisfied: requests-oauthlib>=0.7.0 in d:\users\dev66\anaconda4\lib\site-packages (from google-auth-oauthlib<1.1,>=0.5->tensorboard<2.14,>=2.13->tensorflow-intel==2.13.0->tensorflow) (1.3.1) Requirement already satisfied: charset-normalizer<3,>=2 in d:\users\dev66\anaconda4\lib\site-packages (from requests<3,>=2.21.0->tensorboard<2.14,>=2.13->tensorflow-intel==2.13.0->tensorflow) (2.0.4) Requirement already satisfied: certifi>=2017.4.17 in d:\users\dev66\anaconda4\lib\site-packages (from requests<3,>=2.21.0->tensorboard<2.14,>=2.13->tensorflow-intel==2.13.0->tensorflow) (2022.12.7) Requirement already satisfied: idna<4,>=2.5 in d:\users\dev66\anaconda4\lib\site-packages (from requests<3,>=2.21.0->tensorboard<2.14,>=2.13->tensorflow-intel==2.13.0->tensorflow) (2.10) Requirement already satisfied: MarkupSafe>=2.1.1 in d:\users\dev66\anaconda4\lib\site-packages (from werkzeug>=1.0.1->tensorboard<2.14,>=2.13->tensorflow-intel==2.13.0->tensorflow) (2.1.1) Requirement already satisfied: pyasn1<0.5.0,>=0.4.6 in d:\users\dev66\anaconda4\lib\site-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard<2.14,>=2.13->tensorflow-intel==2.13.0->tensorflow) (0.4.8) Requirement already satisfied: oauthlib>=3.0.0 in d:\users\dev66\anaconda4\lib\site-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<1.1,>=0.5->tensorboard<2.14,>=2.13->tensorflow-intel==2.13.0->tensorflow) (3.2.2) Note: you may need to restart the kernel to use updated packages. |
1 2 3 4 5 |
<span class="kn">import</span> <span class="nn">tensorflow</span> <span class="k">as</span> <span class="nn">tf</span> <span class="kn">from</span> <span class="nn">tensorflow</span> <span class="kn">import</span> <span class="n">keras</span> <span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span> <span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span> <span class="nb">print</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">__version__</span><span class="p">)</span> |
1 |
2.13.0 |
1 |
<span class="kn">from</span> <span class="nn">keras.datasets</span> <span class="kn">import</span> <span class="n">mnist</span> |
1 2 3 4 5 6 7 8 |
<span class="c1">#loading the dataset</span> <span class="p">(</span><span class="n">train_X</span><span class="p">,</span> <span class="n">train_y</span><span class="p">),</span> <span class="p">(</span><span class="n">test_X</span><span class="p">,</span> <span class="n">test_y</span><span class="p">)</span> <span class="o">=</span> <span class="n">mnist</span><span class="o">.</span><span class="n">load_data</span><span class="p">()</span> <span class="c1">#printing the shapes of the vectors </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'X_train: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">train_X</span><span class="o">.</span><span class="n">shape</span><span class="p">))</span> <span class="nb">print</span><span class="p">(</span><span class="s1">'Y_train: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">train_y</span><span class="o">.</span><span class="n">shape</span><span class="p">))</span> <span class="nb">print</span><span class="p">(</span><span class="s1">'X_test: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">test_X</span><span class="o">.</span><span class="n">shape</span><span class="p">))</span> <span class="nb">print</span><span class="p">(</span><span class="s1">'Y_test: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">test_y</span><span class="o">.</span><span class="n">shape</span><span class="p">))</span> |
1 2 3 4 |
X_train: (60000, 28, 28) Y_train: (60000,) X_test: (10000, 28, 28) Y_test: (10000,) |
1 2 3 4 5 6 7 |
<span class="c1"># Display sample images from the dataset</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">25</span><span class="p">):</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">train_X</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">'gray'</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s1">'off'</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<span class="c1">#Build the Ai - network</span> <span class="c1"># let cell values from 0 to 1 ...this better for the A.I network </span> <span class="c1"># Preprocess the data - reszie data</span> <span class="n">train_X</span> <span class="o">=</span> <span class="n">train_X</span> <span class="o">/</span> <span class="mf">255.0</span> <span class="n">test_X</span> <span class="o">=</span> <span class="n">test_X</span> <span class="o">/</span> <span class="mf">255.0</span> <span class="c1"># Build the model</span> <span class="n">model</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">Sequential</span><span class="p">([</span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">Flatten</span><span class="p">(</span><span class="n">input_shape</span><span class="o">=</span><span class="p">(</span><span class="mi">28</span><span class="p">,</span> <span class="mi">28</span><span class="p">)),</span> <span class="c1"># input layer</span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">Dense</span><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="s1">'relu'</span><span class="p">),</span> <span class="c1"># inner layer</span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">Dense</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="s1">'softmax'</span><span class="p">)</span> <span class="c1"># output layer</span> <span class="p">])</span> |
1 2 3 4 5 6 7 8 9 10 11 12 |
<span class="c1"># Compile the model</span> <span class="n">model</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">optimizer</span><span class="o">=</span><span class="s1">'adam'</span><span class="p">,</span> <span class="n">loss</span><span class="o">=</span><span class="s1">'sparse_categorical_crossentropy'</span><span class="p">,</span> <span class="n">metrics</span><span class="o">=</span><span class="p">[</span><span class="s1">'accuracy'</span><span class="p">])</span> <span class="c1"># Train the model</span> <span class="n">history</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">train_X</span><span class="p">,</span> <span class="n">train_y</span><span class="p">,</span> <span class="n">epochs</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span> <span class="c1"># Plot the loss curve</span> <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">history</span><span class="o">.</span><span class="n">history</span><span class="p">[</span><span class="s1">'loss'</span><span class="p">])</span> <span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">'Training Loss'</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">'Epoch'</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">'Loss'</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span> |
1 2 3 4 5 6 7 8 9 10 |
Epoch 1/5 1876/1876 [==============================] - 3s 1ms/step - loss: 1.1808 - accuracy: 0.7094 Epoch 2/5 1876/1876 [==============================] - 3s 1ms/step - loss: 0.4923 - accuracy: 0.8724 Epoch 3/5 1876/1876 [==============================] - 2s 1ms/step - loss: 0.3853 - accuracy: 0.8949 Epoch 4/5 1876/1876 [==============================] - 2s 1ms/step - loss: 0.3431 - accuracy: 0.9038 Epoch 5/5 1876/1876 [==============================] - 2s 1ms/step - loss: 0.3187 - accuracy: 0.9089 |
1 2 3 |
<span class="c1"># Perform prediction</span> <span class="n">predictions</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">test_X</span><span class="p">)</span> <span class="n">predicted_labels</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">predictions</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> |
1 |
313/313 [==============================] - 0s 736us/step |
1 2 3 4 5 6 7 8 9 10 11 12 |
<span class="n">cell_code</span> <span class="o">=</span><span class="n">train_X</span><span class="p">[</span><span class="mi">14</span><span class="p">]</span> <span class="c1">#input cell</span> <span class="n">plt</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">cell_code</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">'gray'</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s1">'off'</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span> <span class="c1">#ask the AI what number in the picture </span> <span class="n">AIcell_code</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">expand_dims</span><span class="p">(</span><span class="n">cell_code</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="n">prediction</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">AIcell_code</span> <span class="p">)</span> <span class="n">predicted_label</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">prediction</span><span class="p">)</span> <span class="c1"># Print the predicted digit</span> <span class="nb">print</span><span class="p">(</span><span class="s2">"Predicted digit:"</span><span class="p">,</span> <span class="n">predicted_label</span><span class="p">)</span> |
1 2 |
1/1 [==============================] - 0s 17ms/step Predicted digit: 1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
<span class="kn">import</span> <span class="nn">cv2</span> <span class="c1"># Load and preprocess the image using OpenCV</span> <span class="n">image</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">imread</span><span class="p">(</span><span class="s1">'d:/temp/3t.jpg'</span><span class="p">,</span> <span class="n">cv2</span><span class="o">.</span><span class="n">IMREAD_GRAYSCALE</span><span class="p">)</span> <span class="n">image</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="p">(</span><span class="mi">28</span><span class="p">,</span> <span class="mi">28</span><span class="p">))</span> <span class="n">image</span> <span class="o">=</span> <span class="mi">255</span> <span class="o">-</span> <span class="n">image</span> <span class="c1">#inverse </span> <span class="n">image</span> <span class="o">=</span> <span class="n">image</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> <span class="o">/</span> <span class="mf">255.0</span> <span class="n">image</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">expand_dims</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># Plot the image</span> <span class="n">plt</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">image</span><span class="o">.</span><span class="n">squeeze</span><span class="p">(),</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">'gray'</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s1">'off'</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span> <span class="n">image</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> <span class="o">/</span> <span class="mf">255.0</span> <span class="n">image_flat</span> <span class="o">=</span> <span class="n">image</span><span class="o">.</span><span class="n">flatten</span><span class="p">()</span> <span class="c1">#print(image)</span> <span class="c1">#cell_code = x_train[100]</span> <span class="c1">#plt.imshow(cell_code, cmap='gray')</span> <span class="c1">#plt.axis('off')</span> <span class="c1">#plt.show()</span> <span class="nb">print</span><span class="p">(</span> <span class="n">image</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span><span class="nb">type</span><span class="p">(</span><span class="n">image</span><span class="p">))</span> <span class="c1"># Make the prediction</span> <span class="n">prediction</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">image</span><span class="p">)</span> <span class="n">predicted_class</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">prediction</span><span class="p">)</span> <span class="c1"># Print the predicted class</span> <span class="nb">print</span><span class="p">(</span><span class="s2">"Image Predicted class:"</span><span class="p">,</span> <span class="n">predicted_class</span><span class="p">)</span> |
1 2 3 |
(1, 28, 28) <class 'numpy.ndarray'> 1/1 [==============================] - 0s 16ms/step Image Predicted class: 3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
<span class="kn">import</span> <span class="nn">tensorflow</span> <span class="k">as</span> <span class="nn">tf</span> <span class="kn">from</span> <span class="nn">tensorflow.keras.preprocessing.image</span> <span class="kn">import</span> <span class="n">ImageDataGenerator</span> <span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span> <span class="c1"># Load the single image</span> <span class="c1"># Load and preprocess the image using OpenCV</span> <span class="n">image</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">imread</span><span class="p">(</span><span class="s1">'d:/temp/3b.jpg'</span><span class="p">,</span> <span class="n">cv2</span><span class="o">.</span><span class="n">IMREAD_GRAYSCALE</span><span class="p">)</span> <span class="n">image</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="p">(</span><span class="mi">28</span><span class="p">,</span> <span class="mi">28</span><span class="p">))</span> <span class="n">image</span> <span class="o">=</span> <span class="mi">255</span> <span class="o">-</span> <span class="n">image</span> <span class="c1">#inverse</span> <span class="n">Oimage</span> <span class="c1"># Plot the image</span> <span class="n">plt</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">'gray'</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s1">'off'</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span> <span class="n">height</span><span class="p">,</span> <span class="n">width</span> <span class="o">=</span> <span class="n">image</span><span class="o">.</span><span class="n">shape</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span> <span class="n">center</span> <span class="o">=</span> <span class="p">(</span><span class="n">width</span> <span class="o">//</span> <span class="mi">2</span><span class="p">,</span> <span class="n">height</span> <span class="o">//</span> <span class="mi">2</span><span class="p">)</span> <span class="c1"># Define the rotation angle</span> <span class="n">angle</span> <span class="o">=</span> <span class="mi">15</span> <span class="c1"># Calculate the rotation matrix</span> <span class="n">rotation_matrix</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">getRotationMatrix2D</span><span class="p">(</span><span class="n">center</span><span class="p">,</span> <span class="n">angle</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">)</span> <span class="c1"># Perform the rotation</span> <span class="n">rotated_image</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">warpAffine</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">rotation_matrix</span><span class="p">,</span> <span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">))</span> <span class="n">image</span> <span class="o">=</span> <span class="n">rotated_image</span> <span class="n">plt</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">'gray'</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s1">'off'</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span> <span class="nb">print</span><span class="p">(</span><span class="n">image</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span> <span class="n">image</span> <span class="o">=</span> <span class="n">image</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> <span class="o">/</span> <span class="mf">255.0</span> <span class="n">image</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">expand_dims</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> |
1 |
(28, 28) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
<span class="kn">import</span> <span class="nn">cv2</span> <span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span> <span class="c1"># Load and preprocess the new image</span> <span class="n">image_path</span> <span class="o">=</span> <span class="s2">"d:/temp/3t.jpg"</span> <span class="n">new_image</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">imread</span><span class="p">(</span><span class="n">image_path</span><span class="p">,</span> <span class="n">cv2</span><span class="o">.</span><span class="n">IMREAD_GRAYSCALE</span><span class="p">)</span> <span class="c1"># Read the image in grayscale</span> <span class="n">new_image</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="n">new_image</span><span class="p">,</span> <span class="p">(</span><span class="mi">28</span><span class="p">,</span> <span class="mi">28</span><span class="p">))</span> <span class="c1"># Resize the image to 28x28</span> <span class="c1"># Normalize the pixel values</span> <span class="n">new_image</span> <span class="o">=</span> <span class="n">new_image</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="s1">'float32'</span><span class="p">)</span> <span class="o">/</span> <span class="mf">255.0</span> <span class="c1"># Add the new image and label to the dataset</span> <span class="n">train_X</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">train_X</span><span class="p">,</span> <span class="p">[</span><span class="n">new_image</span><span class="p">],</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="n">train_y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">train_y</span><span class="p">,</span> <span class="p">[</span><span class="mi">3</span><span class="p">])</span> <span class="n">image_path</span> <span class="o">=</span> <span class="s2">"d:/temp/3t.jpg"</span> <span class="n">new_image</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">imread</span><span class="p">(</span><span class="n">image_path</span><span class="p">,</span> <span class="n">cv2</span><span class="o">.</span><span class="n">IMREAD_GRAYSCALE</span><span class="p">)</span> <span class="c1"># Read the image in grayscale</span> <span class="n">new_image</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="n">new_image</span><span class="p">,</span> <span class="p">(</span><span class="mi">28</span><span class="p">,</span> <span class="mi">28</span><span class="p">))</span> <span class="c1"># Resize the image to 28x28</span> <span class="c1"># Normalize the pixel values</span> <span class="n">new_image</span> <span class="o">=</span> <span class="n">new_image</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="s1">'float32'</span><span class="p">)</span> <span class="o">/</span> <span class="mf">255.0</span> <span class="c1"># Add the new image and label to the dataset</span> <span class="n">train_X</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">train_X</span><span class="p">,</span> <span class="p">[</span><span class="n">new_image</span><span class="p">],</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="n">train_y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">train_y</span><span class="p">,</span> <span class="p">[</span><span class="mi">3</span><span class="p">])</span> <span class="n">image_path</span> <span class="o">=</span> <span class="s2">"d:/temp/3t.jpg"</span> <span class="n">new_image</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">imread</span><span class="p">(</span><span class="n">image_path</span><span class="p">,</span> <span class="n">cv2</span><span class="o">.</span><span class="n">IMREAD_GRAYSCALE</span><span class="p">)</span> <span class="c1"># Read the image in grayscale</span> <span class="n">new_image</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="n">new_image</span><span class="p">,</span> <span class="p">(</span><span class="mi">28</span><span class="p">,</span> <span class="mi">28</span><span class="p">))</span> <span class="c1"># Resize the image to 28x28</span> <span class="c1"># Normalize the pixel values</span> <span class="n">new_image</span> <span class="o">=</span> <span class="n">new_image</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="s1">'float32'</span><span class="p">)</span> <span class="o">/</span> <span class="mf">255.0</span> <span class="c1"># Add the new image and label to the dataset</span> <span class="n">train_X</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">train_X</span><span class="p">,</span> <span class="p">[</span><span class="n">new_image</span><span class="p">],</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="n">train_y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">train_y</span><span class="p">,</span> <span class="p">[</span><span class="mi">3</span><span class="p">])</span> <span class="c1"># Verify the shapes and labels</span> <span class="nb">print</span><span class="p">(</span><span class="s2">"Updated Train X shape:"</span><span class="p">,</span> <span class="n">train_X</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span> <span class="c1"># Shape of the updated train_X</span> <span class="nb">print</span><span class="p">(</span><span class="s2">"Updated Train y shape:"</span><span class="p">,</span> <span class="n">train_y</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span> <span class="c1"># Shape of the updated train_y</span> <span class="c1"># Compile the model</span> <span class="n">model</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">optimizer</span><span class="o">=</span><span class="s1">'adam'</span><span class="p">,</span> <span class="n">loss</span><span class="o">=</span><span class="s1">'sparse_categorical_crossentropy'</span><span class="p">,</span> <span class="n">metrics</span><span class="o">=</span><span class="p">[</span><span class="s1">'accuracy'</span><span class="p">])</span> <span class="c1"># Train the model</span> <span class="n">history</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">train_X</span><span class="p">,</span> <span class="n">train_y</span><span class="p">,</span> <span class="n">epochs</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span> <span class="c1"># Plot the loss curve</span> <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">history</span><span class="o">.</span><span class="n">history</span><span class="p">[</span><span class="s1">'loss'</span><span class="p">])</span> <span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">'Training Loss'</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">'Epoch'</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">'Loss'</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span> |
1 2 3 4 5 6 7 8 9 10 11 12 |
Updated Train X shape: (60004, 28, 28) Updated Train y shape: (60004,) Epoch 1/5 1876/1876 [==============================] - 3s 1ms/step - loss: 0.0378 - accuracy: 0.9881 Epoch 2/5 1876/1876 [==============================] - 2s 1ms/step - loss: 0.0298 - accuracy: 0.9909 Epoch 3/5 1876/1876 [==============================] - 2s 1ms/step - loss: 0.0237 - accuracy: 0.9926 Epoch 4/5 1876/1876 [==============================] - 2s 1ms/step - loss: 0.0198 - accuracy: 0.9938 Epoch 5/5 1876/1876 [==============================] - 2s 1ms/step - loss: 0.0154 - accuracy: 0.9952 |
1 |
1 |