Compare commits

...

36 Commits

Author SHA1 Message Date
0659c57325 Dodanie wersji algorytmu z wyuczonym modelem. 2023-01-16 20:57:08 +01:00
f462a9dedc Ulepszenie datasetu. 2023-01-15 23:34:42 +01:00
5693adfd20 Plik z algorytmem i uporządkowanie datasetu. 2023-01-06 16:50:17 +01:00
f74a2ad226 Usuń '12571149515_2e77d40c45_b_B&W_saturacja.jpg' 2022-12-13 10:05:40 +01:00
b907724bdb Usuń '12571149515_2e77d40c45_b_B&W_maska_saturacja.jpg' 2022-12-13 10:05:35 +01:00
5669e78c7a Usuń '12571149515_2e77d40c45_b_B&W_maska.jpg' 2022-12-13 10:05:31 +01:00
707f2eab40 Usuń '12571149515_2e77d40c45_b_B&W.jpg' 2022-12-13 10:05:27 +01:00
6ecb5c5bfc Usuń '12571149515_2e77d40c45_b.jpg' 2022-12-13 10:05:23 +01:00
99d39e4f70 przesłanie rozszerzonego zbioru zdjęć biedronek 2022-12-13 09:59:03 +01:00
76573de6b5 Update 'Biedap/readme.md' 2022-12-06 17:19:22 +01:00
8543c9404f Update 'Biedap/readme.md' 2022-12-06 07:46:15 +01:00
2b914cfcdb Upload files to 'Biedap' 2022-12-06 07:44:12 +01:00
f5962efa0c Update 'Biedap/readme.md' 2022-12-06 07:43:32 +01:00
2e42033c55 Add 'Biedap/test1' 2022-12-06 00:22:14 +01:00
3c1d749153 Upload files to 'Biedap' 2022-12-06 00:19:30 +01:00
9469a7bb74 Delete 'Biedap/igiveup.ipynb' 2022-12-06 00:19:20 +01:00
0b7530d08a Upload files to 'Biedap' 2022-12-06 00:13:02 +01:00
1e127fa75a Delete 'Biedap/igiveup.ipynb' 2022-12-06 00:12:46 +01:00
dfd1d8fe5a Upload files to 'Biedap' 2022-12-06 00:11:35 +01:00
59df09cc2e Update 'Biedap/readme.md' 2022-12-06 00:11:02 +01:00
17eb74ba6e Add 'Biedap/readme' 2022-12-06 00:10:01 +01:00
eaf98f215a Delete 'Biedap' 2022-12-06 00:07:45 +01:00
43f601b218 Add 'Biedap' 2022-12-06 00:07:02 +01:00
PiotrKoller
e886eed90c Dodanie datasetu ze zdjęciami biedronek 2022-11-23 19:35:46 +01:00
d926b8ad8f Add 'Jenkinsfile' 2022-11-22 21:33:22 +01:00
62f3ecc25e Prześlij pliki do '' 2022-11-22 18:34:29 +01:00
49bd3e07d4 Update 'Proszezadzałaj' 2022-11-22 18:32:00 +01:00
51796b551c Zaktualizuj 'README.md' 2022-11-22 18:17:22 +01:00
9518f9ddc5 Zaktualizuj 'README.md' 2022-11-22 17:54:42 +01:00
3c9217c035 Zaktualizuj 'README.md' 2022-11-22 17:53:09 +01:00
fec10501c0 Merge branch 'master' of https://git.wmi.amu.edu.pl/s426315/BiedronkApp 2022-11-22 17:47:37 +01:00
57522b8bcf Merge pull request 'Update 'Proszezadzałaj'' (#2) from s426315-patch-1 into master
Reviewed-on: #2
2022-11-22 17:47:12 +01:00
679d04022d Witaj biedronko! 2022-11-22 17:47:03 +01:00
32ce3b1068 Update 'Proszezadzałaj' 2022-11-22 17:46:55 +01:00
984829c3f0 Add 'Proszezadzałaj' 2022-11-22 17:46:07 +01:00
bac0b736db Merge pull request 'Test readme' (#1) from s445925-test into master
Reviewed-on: #1
2022-11-22 17:38:57 +01:00
329 changed files with 604 additions and 3 deletions

View File

@ -0,0 +1,21 @@
#%%
from detecto import core, utils, visualize
import os
os.chdir(r"C:\Users\pittb\Documents\biedronkapp\BiedronkApp\biedronki_dataset")
dataset = core.Dataset('images/')
model = core.Model(['azjatycka','siedmiokropka'])
model.fit(dataset)
# %%
image = utils.read_image('images/4733127105_0a658bd317_c.jpg')
predictions = model.predict(image)
# %%
labels, boxes, scores = predictions
print(labels)
print(boxes)
print(scores)
visualize.show_labeled_image(image, boxes, labels)
# %%

255
Biedap/igiveup.ipynb Normal file
View File

@ -0,0 +1,255 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "9083ebd9",
"metadata": {},
"outputs": [
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"Input \u001b[0;32mIn [1]\u001b[0m, in \u001b[0;36m<cell line: 4>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mpandas\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mpd\u001b[39;00m \n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mcv2\u001b[39;00m\n\u001b[0;32m----> 4\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpyplot\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mplt\u001b[39;00m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mtensorflow\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mtf\u001b[39;00m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtensorflow\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mkeras\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mmodels\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Sequential\n",
"File \u001b[0;32m~/anaconda3/lib/python3.9/site-packages/matplotlib/pyplot.py:49\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mcycler\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m cycler\n\u001b[1;32m 48\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m\n\u001b[0;32m---> 49\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcolorbar\u001b[39;00m\n\u001b[1;32m 50\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mimage\u001b[39;00m\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m _api\n",
"File \u001b[0;32m~/anaconda3/lib/python3.9/site-packages/matplotlib/colorbar.py:21\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mnp\u001b[39;00m\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mmpl\u001b[39;00m\n\u001b[0;32m---> 21\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m _api, collections, cm, colors, contour, ticker\n\u001b[1;32m 22\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01martist\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mmartist\u001b[39;00m\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpatches\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mmpatches\u001b[39;00m\n",
"File \u001b[0;32m~/anaconda3/lib/python3.9/site-packages/matplotlib/contour.py:13\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mmpl\u001b[39;00m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m _api, docstring\n\u001b[0;32m---> 13\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbackend_bases\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m MouseButton\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpath\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mmpath\u001b[39;00m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mticker\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mticker\u001b[39;00m\n",
"File \u001b[0;32m~/anaconda3/lib/python3.9/site-packages/matplotlib/backend_bases.py:46\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mnp\u001b[39;00m\n\u001b[1;32m 45\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mmpl\u001b[39;00m\n\u001b[0;32m---> 46\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[1;32m 47\u001b[0m _api, backend_tools \u001b[38;5;28;01mas\u001b[39;00m tools, cbook, colors, docstring, textpath,\n\u001b[1;32m 48\u001b[0m tight_bbox, transforms, widgets, get_backend, is_interactive, rcParams)\n\u001b[1;32m 49\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_pylab_helpers\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Gcf\n\u001b[1;32m 50\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbackend_managers\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m ToolManager\n",
"File \u001b[0;32m~/anaconda3/lib/python3.9/site-packages/matplotlib/widgets.py:22\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m _api, backend_tools, cbook, colors, ticker\n\u001b[1;32m 21\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mlines\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Line2D\n\u001b[0;32m---> 22\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpatches\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Circle, Rectangle, Ellipse\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtransforms\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m TransformedPatchPath\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28;01mclass\u001b[39;00m \u001b[38;5;21;01mLockDraw\u001b[39;00m:\n",
"File \u001b[0;32m~/anaconda3/lib/python3.9/site-packages/matplotlib/patches.py:4143\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 4138\u001b[0m \u001b[38;5;124;03m\"\"\"Return the `.Bbox`.\"\"\"\u001b[39;00m\n\u001b[1;32m 4139\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m transforms\u001b[38;5;241m.\u001b[39mBbox\u001b[38;5;241m.\u001b[39mfrom_bounds(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_x, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_y,\n\u001b[1;32m 4140\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_width, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_height)\n\u001b[0;32m-> 4143\u001b[0m \u001b[38;5;28;01mclass\u001b[39;00m \u001b[38;5;21;01mFancyArrowPatch\u001b[39;00m(Patch):\n\u001b[1;32m 4144\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 4145\u001b[0m \u001b[38;5;124;03m A fancy arrow patch. It draws an arrow using the `ArrowStyle`.\u001b[39;00m\n\u001b[1;32m 4146\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 4149\u001b[0m \u001b[38;5;124;03m does not change when the axis is moved or zoomed.\u001b[39;00m\n\u001b[1;32m 4150\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m 4151\u001b[0m _edge_default \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n",
"File \u001b[0;32m~/anaconda3/lib/python3.9/site-packages/matplotlib/artist.py:119\u001b[0m, in \u001b[0;36mArtist.__init_subclass__\u001b[0;34m(cls)\u001b[0m\n\u001b[1;32m 117\u001b[0m \u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39mset\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mset\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 118\u001b[0m \u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39mset\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__qualname__\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__qualname__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.set\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m--> 119\u001b[0m \u001b[38;5;28;43mcls\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_update_set_signature_and_docstring\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m~/anaconda3/lib/python3.9/site-packages/matplotlib/artist.py:147\u001b[0m, in \u001b[0;36mArtist._update_set_signature_and_docstring\u001b[0;34m(cls)\u001b[0m\n\u001b[1;32m 137\u001b[0m \u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39mset\u001b[38;5;241m.\u001b[39m__signature__ \u001b[38;5;241m=\u001b[39m Signature(\n\u001b[1;32m 138\u001b[0m [Parameter(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mself\u001b[39m\u001b[38;5;124m\"\u001b[39m, Parameter\u001b[38;5;241m.\u001b[39mPOSITIONAL_OR_KEYWORD),\n\u001b[1;32m 139\u001b[0m \u001b[38;5;241m*\u001b[39m[Parameter(prop, Parameter\u001b[38;5;241m.\u001b[39mKEYWORD_ONLY, default\u001b[38;5;241m=\u001b[39m_UNSET)\n\u001b[1;32m 140\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m prop \u001b[38;5;129;01min\u001b[39;00m ArtistInspector(\u001b[38;5;28mcls\u001b[39m)\u001b[38;5;241m.\u001b[39mget_setters()\n\u001b[1;32m 141\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m prop \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m Artist\u001b[38;5;241m.\u001b[39m_PROPERTIES_EXCLUDED_FROM_SET]])\n\u001b[1;32m 142\u001b[0m \u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39mset\u001b[38;5;241m.\u001b[39m_autogenerated_signature \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 144\u001b[0m \u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39mset\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__doc__\u001b[39m \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 145\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSet multiple properties at once.\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 146\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSupported properties are\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m--> 147\u001b[0m \u001b[38;5;241m+\u001b[39m \u001b[43mkwdoc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mcls\u001b[39;49m\u001b[43m)\u001b[49m)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.9/site-packages/matplotlib/artist.py:1749\u001b[0m, in \u001b[0;36mkwdoc\u001b[0;34m(artist)\u001b[0m\n\u001b[1;32m 1731\u001b[0m \u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 1732\u001b[0m \u001b[38;5;124;03mInspect an `~matplotlib.artist.Artist` class (using `.ArtistInspector`) and\u001b[39;00m\n\u001b[1;32m 1733\u001b[0m \u001b[38;5;124;03mreturn information about its settable properties and their current values.\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1744\u001b[0m \u001b[38;5;124;03m use in Sphinx) if it is True.\u001b[39;00m\n\u001b[1;32m 1745\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 1746\u001b[0m ai \u001b[38;5;241m=\u001b[39m ArtistInspector(artist)\n\u001b[1;32m 1747\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m (\u001b[38;5;124m'\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m.\u001b[39mjoin(ai\u001b[38;5;241m.\u001b[39mpprint_setters_rest(leadingspace\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m4\u001b[39m))\n\u001b[1;32m 1748\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m mpl\u001b[38;5;241m.\u001b[39mrcParams[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocstring.hardcopy\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;28;01melse\u001b[39;00m\n\u001b[0;32m-> 1749\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mProperties:\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m'\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m.\u001b[39mjoin(\u001b[43mai\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpprint_setters\u001b[49m\u001b[43m(\u001b[49m\u001b[43mleadingspace\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m4\u001b[39;49m\u001b[43m)\u001b[49m))\n",
"File \u001b[0;32m~/anaconda3/lib/python3.9/site-packages/matplotlib/artist.py:1509\u001b[0m, in \u001b[0;36mArtistInspector.pprint_setters\u001b[0;34m(self, prop, leadingspace)\u001b[0m\n\u001b[1;32m 1506\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m: \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m'\u001b[39m \u001b[38;5;241m%\u001b[39m (pad, prop, accepts)\n\u001b[1;32m 1508\u001b[0m lines \u001b[38;5;241m=\u001b[39m []\n\u001b[0;32m-> 1509\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m prop \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28msorted\u001b[39m(\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_setters\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m):\n\u001b[1;32m 1510\u001b[0m accepts \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_valid_values(prop)\n\u001b[1;32m 1511\u001b[0m name \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maliased_name(prop)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.9/site-packages/matplotlib/artist.py:1435\u001b[0m, in \u001b[0;36mArtistInspector.get_setters\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1432\u001b[0m \u001b[38;5;28;01mcontinue\u001b[39;00m\n\u001b[1;32m 1433\u001b[0m func \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mo, name)\n\u001b[1;32m 1434\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\u001b[38;5;129;01mnot\u001b[39;00m callable(func)\n\u001b[0;32m-> 1435\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(\u001b[43minspect\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msignature\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241m.\u001b[39mparameters) \u001b[38;5;241m<\u001b[39m \u001b[38;5;241m2\u001b[39m\n\u001b[1;32m 1436\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mis_alias(func)):\n\u001b[1;32m 1437\u001b[0m \u001b[38;5;28;01mcontinue\u001b[39;00m\n\u001b[1;32m 1438\u001b[0m setters\u001b[38;5;241m.\u001b[39mappend(name[\u001b[38;5;241m4\u001b[39m:])\n",
"File \u001b[0;32m~/anaconda3/lib/python3.9/inspect.py:3113\u001b[0m, in \u001b[0;36msignature\u001b[0;34m(obj, follow_wrapped)\u001b[0m\n\u001b[1;32m 3111\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msignature\u001b[39m(obj, \u001b[38;5;241m*\u001b[39m, follow_wrapped\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m):\n\u001b[1;32m 3112\u001b[0m \u001b[38;5;124;03m\"\"\"Get a signature object for the passed callable.\"\"\"\u001b[39;00m\n\u001b[0;32m-> 3113\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mSignature\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_callable\u001b[49m\u001b[43m(\u001b[49m\u001b[43mobj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfollow_wrapped\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_wrapped\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m~/anaconda3/lib/python3.9/inspect.py:2862\u001b[0m, in \u001b[0;36mSignature.from_callable\u001b[0;34m(cls, obj, follow_wrapped)\u001b[0m\n\u001b[1;32m 2859\u001b[0m \u001b[38;5;129m@classmethod\u001b[39m\n\u001b[1;32m 2860\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mfrom_callable\u001b[39m(\u001b[38;5;28mcls\u001b[39m, obj, \u001b[38;5;241m*\u001b[39m, follow_wrapped\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m):\n\u001b[1;32m 2861\u001b[0m \u001b[38;5;124;03m\"\"\"Constructs Signature for the given callable object.\"\"\"\u001b[39;00m\n\u001b[0;32m-> 2862\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_signature_from_callable\u001b[49m\u001b[43m(\u001b[49m\u001b[43mobj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msigcls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mcls\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2863\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_wrapper_chains\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_wrapped\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m~/anaconda3/lib/python3.9/inspect.py:2325\u001b[0m, in \u001b[0;36m_signature_from_callable\u001b[0;34m(obj, follow_wrapper_chains, skip_bound_arg, sigcls)\u001b[0m\n\u001b[1;32m 2320\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m sig\u001b[38;5;241m.\u001b[39mreplace(parameters\u001b[38;5;241m=\u001b[39mnew_params)\n\u001b[1;32m 2322\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m isfunction(obj) \u001b[38;5;129;01mor\u001b[39;00m _signature_is_functionlike(obj):\n\u001b[1;32m 2323\u001b[0m \u001b[38;5;66;03m# If it's a pure Python function, or an object that is duck type\u001b[39;00m\n\u001b[1;32m 2324\u001b[0m \u001b[38;5;66;03m# of a Python function (Cython functions, for instance), then:\u001b[39;00m\n\u001b[0;32m-> 2325\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_signature_from_function\u001b[49m\u001b[43m(\u001b[49m\u001b[43msigcls\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mobj\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2326\u001b[0m \u001b[43m \u001b[49m\u001b[43mskip_bound_arg\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mskip_bound_arg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2328\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m _signature_is_builtin(obj):\n\u001b[1;32m 2329\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m _signature_from_builtin(sigcls, obj,\n\u001b[1;32m 2330\u001b[0m skip_bound_arg\u001b[38;5;241m=\u001b[39mskip_bound_arg)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.9/inspect.py:2196\u001b[0m, in \u001b[0;36m_signature_from_function\u001b[0;34m(cls, func, skip_bound_arg)\u001b[0m\n\u001b[1;32m 2194\u001b[0m kind \u001b[38;5;241m=\u001b[39m _POSITIONAL_ONLY \u001b[38;5;28;01mif\u001b[39;00m posonly_left \u001b[38;5;28;01melse\u001b[39;00m _POSITIONAL_OR_KEYWORD\n\u001b[1;32m 2195\u001b[0m annotation \u001b[38;5;241m=\u001b[39m annotations\u001b[38;5;241m.\u001b[39mget(name, _empty)\n\u001b[0;32m-> 2196\u001b[0m parameters\u001b[38;5;241m.\u001b[39mappend(\u001b[43mParameter\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mannotation\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mannotation\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2197\u001b[0m \u001b[43m \u001b[49m\u001b[43mkind\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mkind\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[1;32m 2198\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m posonly_left:\n\u001b[1;32m 2199\u001b[0m posonly_left \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n",
"File \u001b[0;32m~/anaconda3/lib/python3.9/inspect.py:2518\u001b[0m, in \u001b[0;36mParameter.__init__\u001b[0;34m(self, name, kind, default, annotation)\u001b[0m\n\u001b[1;32m 2515\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mname must be a str, not a \u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m.\u001b[39mformat(\u001b[38;5;28mtype\u001b[39m(name)\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m)\n\u001b[1;32m 2516\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(msg)\n\u001b[0;32m-> 2518\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[43mname\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m==\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m.\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m \u001b[38;5;129;01mand\u001b[39;00m name[\u001b[38;5;241m1\u001b[39m:]\u001b[38;5;241m.\u001b[39misdigit():\n\u001b[1;32m 2519\u001b[0m \u001b[38;5;66;03m# These are implicit arguments generated by comprehensions. In\u001b[39;00m\n\u001b[1;32m 2520\u001b[0m \u001b[38;5;66;03m# order to provide a friendlier interface to users, we recast\u001b[39;00m\n\u001b[1;32m 2521\u001b[0m \u001b[38;5;66;03m# their name as \"implicitN\" and treat them as positional-only.\u001b[39;00m\n\u001b[1;32m 2522\u001b[0m \u001b[38;5;66;03m# See issue 19611.\u001b[39;00m\n\u001b[1;32m 2523\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_kind \u001b[38;5;241m!=\u001b[39m _POSITIONAL_OR_KEYWORD:\n\u001b[1;32m 2524\u001b[0m msg \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 2525\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mimplicit arguments must be passed as \u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 2526\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpositional or keyword arguments, not \u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 2527\u001b[0m )\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
}
],
"source": [
"import numpy as np \n",
"import pandas as pd \n",
"import cv2\n",
"import matplotlib.pyplot as plt\n",
"import tensorflow as tf\n",
"from tensorflow.keras.models import Sequential\n",
"from tensorflow.keras.layers import Dense, Flatten, Dropout, Activation, Conv2D, MaxPooling2D\n",
"\n",
"# Input data files are available in the \"../input/\" directory.\n",
"# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory\n",
"\n",
"import os\n",
"print(os.listdir(\"Biedap/input\"))\n",
"\n",
"import zipfile\n",
"\n",
"with zipfile.ZipFile(\"Biedap/input/train.zip\",\"r\") as z:\n",
" z.extractall(\".\")\n",
" \n",
"with zipfile.ZipFile(\"Biedap/input/test1.zip\",\"r\") as z:\n",
" z.extractall(\".\")\n",
"\n",
"# Any results you write to the current directory are saved as output.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e1a09825",
"metadata": {},
"outputs": [],
"source": [
"main_dir = \"Biedap\"\n",
"train_dir = \"train\"\n",
"path = os.path.join(main_dir,train_dir)\n",
"\n",
"for p in os.listdir(path):\n",
" category = p.split(\".\")[0]\n",
" img_array = cv2.imread(os.path.join(path,p),cv2.IMREAD_GRAYSCALE)\n",
" new_img_array = cv2.resize(img_array, dsize=(80, 80))\n",
" plt.imshow(new_img_array,cmap=\"gray\")\n",
" break"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9248ca56",
"metadata": {},
"outputs": [],
"source": [
"X = []\n",
"y = []\n",
"convert = lambda category : int(category == 'dog')\n",
"def create_test_data(path):\n",
" for p in os.listdir(path):\n",
" category = p.split(\".\")[0]\n",
" category = convert(category)\n",
" img_array = cv2.imread(os.path.join(path,p),cv2.IMREAD_GRAYSCALE)\n",
" new_img_array = cv2.resize(img_array, dsize=(80, 80))\n",
" X.append(new_img_array)\n",
" y.append(category) "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8e9925cc",
"metadata": {},
"outputs": [],
"source": [
"create_test_data(path)\n",
"X = np.array(X).reshape(-1, 80,80,1)\n",
"y = np.array(y)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "20083f26",
"metadata": {},
"outputs": [],
"source": [
"X = X/255.0"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bdf7b8df",
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"model = Sequential()\n",
"# Adds a densely-connected layer with 64 units to the model:\n",
"model.add(Conv2D(64,(3,3), activation = 'relu', input_shape = X.shape[1:]))\n",
"model.add(MaxPooling2D(pool_size = (2,2)))\n",
"# Add another:\n",
"model.add(Conv2D(64,(3,3), activation = 'relu'))\n",
"model.add(MaxPooling2D(pool_size = (2,2)))\n",
"\n",
"model.add(Flatten())\n",
"model.add(Dense(64, activation='relu'))\n",
"# Add a softmax layer with 10 output units:\n",
"model.add(Dense(1, activation='sigmoid'))\n",
"\n",
"model.compile(optimizer=\"adam\",\n",
" loss='binary_crossentropy',\n",
" metrics=['accuracy'])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "00ffe16a",
"metadata": {},
"outputs": [],
"source": [
"model.fit(X, y, epochs=10, batch_size=32, validation_split=0.2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6790491b",
"metadata": {},
"outputs": [],
"source": [
"train_dir = \"test1\"\n",
"path = os.path.join(main_dir,train_dir)\n",
"#os.listdir(path)\n",
"\n",
"X_test = []\n",
"id_line = []\n",
"def create_test1_data(path):\n",
" for p in os.listdir(path):\n",
" id_line.append(p.split(\".\")[0])\n",
" img_array = cv2.imread(os.path.join(path,p),cv2.IMREAD_GRAYSCALE)\n",
" new_img_array = cv2.resize(img_array, dsize=(80, 80))\n",
" X_test.append(new_img_array)\n",
"create_test1_data(path)\n",
"X_test = np.array(X_test).reshape(-1,80,80,1)\n",
"X_test = X_test/255"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c73fc88b",
"metadata": {},
"outputs": [],
"source": [
"predictions = model.predict(X_test)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d28edd26",
"metadata": {},
"outputs": [],
"source": [
"predicted_val = [int(round(p[0])) for p in predictions]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "861ebb64",
"metadata": {},
"outputs": [],
"source": [
"submission_df = pd.DataFrame({'id':id_line, 'label':predicted_val})"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "58e57ec7",
"metadata": {},
"outputs": [],
"source": [
"submission_df.to_csv(\"submission.csv\", index=False)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ec9cdc21",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

2
Biedap/readme.md Normal file
View File

@ -0,0 +1,2 @@
Plik igiveup.ipynb zawiera wczesną wersję algorytmu uczenia maszynowego opracowanego na podstawie jednego z rozwiązań popularnego zagadnienia ,,Dogs vs Cats" umieszczonego na stronie Kaggle.com. Datasety pochodzą ze strony: https://www.kaggle.com/competitions/dogs-vs-cats/data .
Plik algorytm_uczenia.py zawiera drugi testowany algorytm uczenia maszynowego. Został on opracowany na podstawie instrukcji ze strony https://towardsdatascience.com/build-a-custom-trained-object-detection-model-with-5-lines-of-code-713ba7f6c0fb.

0
Biedap/test1 Normal file
View File

0
Jenkinsfile vendored Normal file
View File

1
Proszezadzałaj Normal file
View File

@ -0,0 +1 @@
print('hej')

View File

@ -1,6 +1,12 @@
# BiedronkApp
Projekt z przedmiotu Systemy informatyczne.
## Motywacja rynkowa
Rozpoczynając od powodów najbardziej ryzykownych dla utrzymania firmy, chcielibyśmy przedstawić motywację rynkową dla stworzenia naszej innowacji. Biedronki azjatyckie to gatunek chrząszcza z rodziny biedronkowatych, który w Polsce został określony gatunkiem inwazyjnym zagrażającym światowej bioróżnorodności. W Poznaniu, jako po raz pierwszy w Polsce, stwierdzono jego obecność w 2006 roku. W odróżnieniu od innych biedronek (w tym biedronek siedmiokropek - naszych polskich), zauważalny jest wzrost statystyk w przypadku ukąszeń ludzi, które w części przypadków wywołują reakcje alergiczne dotyczące skóry i dróg oddechowych. Jesienią rozpoczyna się przygotowywanie tego gatunku do odbycia hibernacji, dlatego też szukają schronienia w naszych domach, wchodząc nieproszone i pojawiając się w dużych ilościach na ścianach budynków. Z tego powodu co raz częściej Polacy pytają się: w jaki sposób pozbyć się biedronek, które mogą być dla nas szkodliwe?
# Opis testowy
testtesttesttes
Na to zapotrzebowanie odpowiada nasza aplikacja. Dzięki najbardziej przyjaznej dla użytkownika drodze - zrobieniu zdjęcia - dostajemy odpowiedź na pytanie czy to jest biedronka azjatycka, czy może inny insekt. Wraz z klasyfikacją otrzymujemy dodatkowe informacje, takie jak zestaw cech różnicujących ten insekt, rozpoznawanie i postępowanie w przypadku reakcji alergicznych.
## Wartość produktowa
Przechodząc płynnie do wartości naszego produktu - aplikacji mobilnej działającej na zaimplementowanym modelu różnicującym gatunki biedronek, warto wspomnieć o jego unikalnej propozycji wartości (UVP). Naszą grupą docelową klientów są mieszkańcy miast, którzy najczęściej zmagają się z plagami biedronek azjatyckich, jednocześnie są grupą, która najwięcej korzysta z urządzeń mobilnych, co ułatwia im korzystanie z aplikacji. Kluczowym benefitem funkcjonalności naszej aplikacji jest jej przystępność i łatwość obsługi, brak kosztów dla użytkownika oraz odpowiedź na współczesne problemy dużej części społeczeństwa.
## Zespół
Nasz zespół tworzący BiedronkAPP jest gronem specjalistów w dziedzinie Machine Learning, którzy wraz z współpracą zestawu zdjęć udostępnionych przez biologów stworzył model definiujący rodzaj biedronki, której zdjęcie wstawimy do aplikacji. Płynna znajomość języka angielskiego pozwala nam rozważać wejście na rynek europejski.

152
algorytm_biedronki.py Normal file
View File

@ -0,0 +1,152 @@
#%%
from tensorflow.keras.layers import Input, Lambda, Dense, Flatten,Dropout
from tensorflow.keras.models import Model
from tensorflow.keras.applications.vgg19 import VGG19
from tensorflow.keras.applications.vgg19 import preprocess_input
from tensorflow.keras.preprocessing import image
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Sequential
import numpy as np
import pandas as pd
import os
import cv2
import matplotlib.pyplot as plt
# %%
os.chdir(r"C:\Users\pittb\Documents\biedronkapp_2.0\BiedronkApp\biedronki_dataset")
train_path="train"
test_path="test"
# %%
x_train=[]
for folder in os.listdir(train_path):
sub_path=train_path+"/"+folder
for img in os.listdir(sub_path):
image_path=sub_path+"/"+img
img_arr=cv2.imread(image_path)
img_arr=cv2.resize(img_arr,(224,224))
x_train.append(img_arr)
x_test=[]
for folder in os.listdir(test_path):
sub_path=test_path+"/"+folder
for img in os.listdir(sub_path):
image_path=sub_path+"/"+img
img_arr=cv2.imread(image_path)
img_arr=cv2.resize(img_arr,(224,224))
x_test.append(img_arr)
# %%
train_x=np.array(x_train)
test_x=np.array(x_test)
train_x=train_x/255.0
test_x=test_x/255.0
# %%
train_datagen = ImageDataGenerator(rescale = 1./255)
test_datagen = ImageDataGenerator(rescale = 1./255)
# %%
training_set = train_datagen.flow_from_directory(train_path,
target_size = (224, 224),
batch_size = 32,
class_mode = 'sparse')
test_set = test_datagen.flow_from_directory(test_path,
target_size = (224, 224),
batch_size = 32,
class_mode = 'sparse')
# %%
train_y=training_set.classes
test_y=test_set.classes
training_set.class_indices
train_y.shape,test_y.shape
# %%
IMAGE_SIZE = [224, 224]
vgg = VGG19(input_shape=IMAGE_SIZE + [3], weights='imagenet', include_top=False)
for layer in vgg.layers:
layer.trainable = False
# %%
# our layers - you can add more if you want
x = Flatten()(vgg.output)
prediction = Dense(2, activation='softmax')(x)
# %%
# create a model object
model = Model(inputs=vgg.input, outputs=prediction)
# view the structure of the model
model.summary()
# %%
model.compile(
loss='sparse_categorical_crossentropy',
optimizer="adam",
metrics=['accuracy']
)
# %%
from tensorflow.keras.callbacks import EarlyStopping
early_stop=EarlyStopping(monitor='val_loss',mode='min',verbose=1,patience=5)
# %%
history = model.fit(
train_x,
train_y,
epochs=10,
callbacks=[early_stop],
batch_size=32,shuffle=True)
# %%
plt.plot(history.history['loss'], label='train loss')
plt.legend()
plt.savefig('vgg-loss-rps-1.png')
plt.show()
# %%
# accuracies
plt.plot(history.history['accuracy'], label='train acc')
plt.legend()
plt.savefig('vgg-acc-rps-1.png')
plt.show()
# %%
model.evaluate(test_x,test_y,batch_size=6)
# %%
from sklearn.metrics import accuracy_score,classification_report,confusion_matrix
import numpy as np
y_pred=model.predict(test_x)
y_pred=np.argmax(y_pred,axis=1)
accuracy_score(y_pred,test_y)
print(classification_report(y_pred,test_y))
# %%
img_path = r"C:\Users\pittb\Documents\biedronkapp_2.0\BiedronkApp\biedronki_dataset\test\azjatyckie\78687-Biedronki-azjatyckie-Czy-sa-grozne-fot.-cocoparisienne---Pixabay.jpg"
img_nump = np.array(cv2.imread(img_path))
img_nump = cv2.resize(img_nump,(224,224))
img_nump = img_nump/255.0
img_nump = img_nump[np.newaxis,...]
pr = model.predict(img_nump)
print(pr)
print(np.argmax(pr,axis=1))
# %%
# %%
model.save('saved_model/my_model')
# %%
# %%

View File

@ -0,0 +1,119 @@
#%%
from tensorflow.keras.layers import Input, Lambda, Dense, Flatten,Dropout
from tensorflow.keras.models import Model
from tensorflow.keras.applications.vgg19 import VGG19
from tensorflow.keras.applications.vgg19 import preprocess_input
from tensorflow.keras.preprocessing import image
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Sequential
import numpy as np
import pandas as pd
import os
import cv2
import matplotlib.pyplot as plt
import keras
# %%
os.chdir(r"C:\Users\pittb\Documents\biedronkapp_2.0\BiedronkApp\biedronki_dataset")
train_path="train"
test_path="test"
# %%
x_train=[]
for folder in os.listdir(train_path):
sub_path=train_path+"/"+folder
for img in os.listdir(sub_path):
image_path=sub_path+"/"+img
img_arr=cv2.imread(image_path)
img_arr=cv2.resize(img_arr,(224,224))
x_train.append(img_arr)
x_test=[]
for folder in os.listdir(test_path):
sub_path=test_path+"/"+folder
for img in os.listdir(sub_path):
image_path=sub_path+"/"+img
img_arr=cv2.imread(image_path)
img_arr=cv2.resize(img_arr,(224,224))
x_test.append(img_arr)
# %%
train_x=np.array(x_train)
test_x=np.array(x_test)
train_x=train_x/255.0
test_x=test_x/255.0
# %%
train_datagen = ImageDataGenerator(rescale = 1./255)
test_datagen = ImageDataGenerator(rescale = 1./255)
# %%
training_set = train_datagen.flow_from_directory(train_path,
target_size = (224, 224),
batch_size = 32,
class_mode = 'sparse')
test_set = test_datagen.flow_from_directory(test_path,
target_size = (224, 224),
batch_size = 32,
class_mode = 'sparse')
# %%
train_y=training_set.classes
test_y=test_set.classes
training_set.class_indices
train_y.shape,test_y.shape
# %%
IMAGE_SIZE = [224, 224]
vgg = VGG19(input_shape=IMAGE_SIZE + [3], weights='imagenet', include_top=False)
for layer in vgg.layers:
layer.trainable = False
# %%
# our layers - you can add more if you want
x = Flatten()(vgg.output)
prediction = Dense(2, activation='softmax')(x)
# %%
model = keras.models.load_model('saved_model/my_model')
# %%
from sklearn.metrics import accuracy_score,classification_report,confusion_matrix
import numpy as np
y_pred=model.predict(test_x)
y_pred=np.argmax(y_pred,axis=1)
accuracy_score(y_pred,test_y)
print(classification_report(y_pred,test_y))
# %%
img_path = r"test\azjatyckie\Asian_lady_beetle-(Harmonia-axyridis).jpg"
img_nump = np.array(cv2.cvtColor(cv2.imread(img_path), cv2.COLOR_BGR2RGB))
plt.imshow(img_nump)
plt.show()
img_nump = cv2.resize(img_nump,(224,224))
img_nump = img_nump/255.0
img_nump = img_nump[np.newaxis,...]
pr = model.predict(img_nump)
print('azjatycka: '+str(pr[0][0])+' , siedmiokropka: '+str(pr[0][1]))
print(['azjatycka' if np.argmax(pr,axis=1)[0]==0 else 'siedmiokropka'][0])
# %%

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 584 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 925 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Some files were not shown because too many files have changed in this diff Show More