forked from s444399/AI
Merge branch 'master' of https://git.wmi.amu.edu.pl/s444399/AI into podprogram
This commit is contained in:
commit
9f961c3b25
@ -2,21 +2,22 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="8264ee8d-5217-4cb6-b982-78f67fabc82e" name="Default Changelist" comment="">
|
<list default="true" id="8264ee8d-5217-4cb6-b982-78f67fabc82e" name="Default Changelist" comment="">
|
||||||
<change afterPath="$PROJECT_DIR$/opis/LechT.md" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/KijowskiM.md" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/WGoracy.md" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/demo/a.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/demo/biohazard.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/demo/electrical.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/demo/flammable.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/demo/kruche.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/demo/radioactive.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/yolov3.cfg" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/yolov3.txt" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Mapa/box.py" beforeDir="false" afterPath="$PROJECT_DIR$/box.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/neurons.py" beforeDir="false" afterPath="$PROJECT_DIR$/neurons.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Mapa/boxOnTheFloor.py" beforeDir="false" afterPath="$PROJECT_DIR$/boxOnTheFloor.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/opis/LechT.md" beforeDir="false" afterPath="$PROJECT_DIR$/LechT.md" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Mapa/floor.py" beforeDir="false" afterPath="$PROJECT_DIR$/floor.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/opis/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/opis/README.md" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Mapa/generate.py" beforeDir="false" afterPath="$PROJECT_DIR$/generate.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/opis/environment.md" beforeDir="false" afterPath="$PROJECT_DIR$/opis/environment.md" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Mapa/shelf.py" beforeDir="false" afterPath="$PROJECT_DIR$/shelf.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/Mapa/unboxOnTheFloor.py" beforeDir="false" afterPath="$PROJECT_DIR$/unboxOnTheFloor.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/Mapa/wall.py" beforeDir="false" afterPath="$PROJECT_DIR$/wall.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/genetyczny/Data.py" beforeDir="false" afterPath="$PROJECT_DIR$/Data.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/genetyczny/Gene.py" beforeDir="false" afterPath="$PROJECT_DIR$/Gene.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/genetyczny/eee.py" beforeDir="false" afterPath="$PROJECT_DIR$/funkcje.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/genetyczny/funkcje.py" beforeDir="false" afterPath="$PROJECT_DIR$/genetyczne.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/program.py" beforeDir="false" afterPath="$PROJECT_DIR$/program.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/program.py" beforeDir="false" afterPath="$PROJECT_DIR$/program.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/wheel.py" beforeDir="false" afterPath="$PROJECT_DIR$/wheel.py" afterDir="false" />
|
|
||||||
</list>
|
</list>
|
||||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
@ -25,15 +26,17 @@
|
|||||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="DockManager">
|
<component name="DockManager">
|
||||||
<window id="129">
|
<window id="2">
|
||||||
<content type="file-editors">
|
<content type="file-editors">
|
||||||
<state>
|
<state>
|
||||||
<leaf>
|
<leaf>
|
||||||
<file pinned="false" current-in-tab="true">
|
<file pinned="false" current-in-tab="true">
|
||||||
<entry file="file://$PROJECT_DIR$/opis/LechT.md">
|
<entry file="file://$PROJECT_DIR$/LechT.md">
|
||||||
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||||
<state split_layout="SPLIT">
|
<state split_layout="SPLIT">
|
||||||
<first_editor />
|
<first_editor relative-caret-position="170">
|
||||||
|
<caret line="10" selection-start-line="10" selection-end-line="10" />
|
||||||
|
</first_editor>
|
||||||
<second_editor />
|
<second_editor />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
@ -52,8 +55,8 @@
|
|||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/program.py">
|
<entry file="file://$PROJECT_DIR$/program.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="238">
|
<state relative-caret-position="272">
|
||||||
<caret line="14" selection-start-line="14" selection-end-line="14" />
|
<caret line="16" selection-start-line="16" selection-end-line="16" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#13#0" expanded="true" />
|
<element signature="e#0#13#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@ -73,7 +76,7 @@
|
|||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/main.py">
|
<entry file="file://$PROJECT_DIR$/main.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="578">
|
<state relative-caret-position="612">
|
||||||
<caret line="36" column="24" selection-start-line="36" selection-start-column="24" selection-end-line="36" selection-end-column="24" />
|
<caret line="36" column="24" selection-start-line="36" selection-start-column="24" selection-end-line="36" selection-end-column="24" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#21#0" expanded="true" />
|
<element signature="e#0#21#0" expanded="true" />
|
||||||
@ -85,7 +88,7 @@
|
|||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/AStar.py">
|
<entry file="file://$PROJECT_DIR$/AStar.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="578">
|
<state relative-caret-position="595">
|
||||||
<caret line="35" selection-start-line="35" selection-end-line="35" />
|
<caret line="35" selection-start-line="35" selection-end-line="35" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#12#0" expanded="true" />
|
<element signature="e#0#12#0" expanded="true" />
|
||||||
@ -97,11 +100,8 @@
|
|||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/funkcje.py">
|
<entry file="file://$PROJECT_DIR$/funkcje.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="1037">
|
<state relative-caret-position="1292">
|
||||||
<caret line="81" lean-forward="true" selection-start-line="81" selection-end-line="81" />
|
<caret line="81" selection-start-line="81" selection-end-line="81" />
|
||||||
<folding>
|
|
||||||
<element signature="e#0#48#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
@ -109,41 +109,30 @@
|
|||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/shelf.py">
|
<entry file="file://$PROJECT_DIR$/shelf.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="34">
|
<state relative-caret-position="-46">
|
||||||
<caret line="2" column="11" selection-start-line="2" selection-start-column="6" selection-end-line="2" selection-end-column="11" />
|
<caret line="2" column="11" selection-start-line="2" selection-start-column="6" selection-end-line="2" selection-end-column="11" />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/genetyczne.py">
|
<entry file="file://$PROJECT_DIR$/WGoracy.md">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="-595">
|
|
||||||
<caret line="1" column="21" selection-start-line="1" selection-start-column="21" selection-end-line="1" selection-end-column="21" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#0#21#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file pinned="false" current-in-tab="true">
|
|
||||||
<entry file="file://$PROJECT_DIR$/opis/environment.md">
|
|
||||||
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||||
<state split_layout="SPLIT">
|
<state split_layout="SPLIT">
|
||||||
<first_editor>
|
<first_editor />
|
||||||
<caret column="29" lean-forward="true" selection-start-column="29" selection-end-column="29" />
|
|
||||||
</first_editor>
|
|
||||||
<second_editor />
|
<second_editor />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="true">
|
||||||
<entry file="file://$PROJECT_DIR$/Data.py">
|
<entry file="file://$PROJECT_DIR$/opis/route-planning.md">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||||
<state relative-caret-position="289">
|
<state split_layout="SPLIT">
|
||||||
<caret line="17" column="27" selection-start-line="17" selection-start-column="27" selection-end-line="17" selection-end-column="27" />
|
<first_editor relative-caret-position="629">
|
||||||
|
<caret line="37" column="3" lean-forward="true" selection-start-line="37" selection-start-column="3" selection-end-line="37" selection-end-column="3" />
|
||||||
|
</first_editor>
|
||||||
|
<second_editor />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
@ -195,7 +184,7 @@
|
|||||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||||
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
||||||
<map>
|
<map>
|
||||||
<entry key="$PROJECT_DIR$" value="orginalne-master" />
|
<entry key="$PROJECT_DIR$" value="origin-master" />
|
||||||
</map>
|
</map>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
@ -225,6 +214,7 @@
|
|||||||
<option value="$PROJECT_DIR$/program.py" />
|
<option value="$PROJECT_DIR$/program.py" />
|
||||||
<option value="$PROJECT_DIR$/genetyczne.py" />
|
<option value="$PROJECT_DIR$/genetyczne.py" />
|
||||||
<option value="$PROJECT_DIR$/opis/environment.md" />
|
<option value="$PROJECT_DIR$/opis/environment.md" />
|
||||||
|
<option value="$PROJECT_DIR$/LechT.md" />
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
@ -235,12 +225,14 @@
|
|||||||
<option name="height" value="838" />
|
<option name="height" value="838" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
||||||
|
<component name="ProjectReloadState">
|
||||||
|
<option name="STATE" value="1" />
|
||||||
|
</component>
|
||||||
<component name="ProjectView">
|
<component name="ProjectView">
|
||||||
<navigator proportions="" version="1">
|
<navigator proportions="" version="1">
|
||||||
<foldersAlwaysOnTop value="true" />
|
<foldersAlwaysOnTop value="true" />
|
||||||
</navigator>
|
</navigator>
|
||||||
<panes>
|
<panes>
|
||||||
<pane id="Scope" />
|
|
||||||
<pane id="ProjectPane">
|
<pane id="ProjectPane">
|
||||||
<subPane>
|
<subPane>
|
||||||
<expand>
|
<expand>
|
||||||
@ -257,6 +249,7 @@
|
|||||||
<select />
|
<select />
|
||||||
</subPane>
|
</subPane>
|
||||||
</pane>
|
</pane>
|
||||||
|
<pane id="Scope" />
|
||||||
</panes>
|
</panes>
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent">
|
<component name="PropertiesComponent">
|
||||||
@ -425,14 +418,13 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="ToolWindowManager">
|
<component name="ToolWindowManager">
|
||||||
<frame x="1912" y="-8" width="1216" height="1576" extended-state="6" />
|
<frame x="1912" y="-8" width="1216" height="1576" extended-state="6" />
|
||||||
<editor active="true" />
|
|
||||||
<layout>
|
<layout>
|
||||||
<window_info active="true" content_ui="combo" id="Project" order="0" sideWeight="0.4995206" visible="true" weight="0.2733564" />
|
<window_info content_ui="combo" id="Project" order="0" sideWeight="0.4995206" visible="true" weight="0.27854672" />
|
||||||
<window_info id="Structure" order="1" sideWeight="0.5004794" side_tool="true" weight="0.3382353" />
|
<window_info id="Structure" order="1" sideWeight="0.5004794" side_tool="true" weight="0.3382353" />
|
||||||
<window_info id="Favorites" order="2" sideWeight="0.5011338" side_tool="true" weight="0.27768165" />
|
<window_info id="Favorites" order="2" sideWeight="0.5011338" side_tool="true" weight="0.27768165" />
|
||||||
<window_info anchor="bottom" id="Message" order="0" />
|
<window_info anchor="bottom" id="Message" order="0" />
|
||||||
<window_info anchor="bottom" id="Find" order="1" weight="0.32640332" />
|
<window_info anchor="bottom" id="Find" order="1" weight="0.32640332" />
|
||||||
<window_info anchor="bottom" id="Run" order="2" sideWeight="0.49932885" visible="true" weight="0.103257105" />
|
<window_info active="true" anchor="bottom" id="Run" order="2" sideWeight="0.49932885" visible="true" weight="0.103257105" />
|
||||||
<window_info anchor="bottom" id="Cvs" order="3" weight="0.25" />
|
<window_info anchor="bottom" id="Cvs" order="3" weight="0.25" />
|
||||||
<window_info anchor="bottom" id="Inspection" order="4" weight="0.4" />
|
<window_info anchor="bottom" id="Inspection" order="4" weight="0.4" />
|
||||||
<window_info anchor="bottom" x="1942" y="641" width="1156" height="277" id="Debug" order="5" sideWeight="0.49932885" weight="0.41359773" />
|
<window_info anchor="bottom" x="1942" y="641" width="1156" height="277" id="Debug" order="5" sideWeight="0.49932885" weight="0.41359773" />
|
||||||
@ -474,7 +466,7 @@
|
|||||||
<breakpoints>
|
<breakpoints>
|
||||||
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||||
<url>file://$PROJECT_DIR$/program.py</url>
|
<url>file://$PROJECT_DIR$/program.py</url>
|
||||||
<line>162</line>
|
<line>171</line>
|
||||||
<option name="timeStamp" value="230" />
|
<option name="timeStamp" value="230" />
|
||||||
</line-breakpoint>
|
</line-breakpoint>
|
||||||
</breakpoints>
|
</breakpoints>
|
||||||
@ -502,14 +494,6 @@
|
|||||||
<entry file="file://$PROJECT_DIR$/images/sc.png">
|
<entry file="file://$PROJECT_DIR$/images/sc.png">
|
||||||
<provider selected="true" editor-type-id="images" />
|
<provider selected="true" editor-type-id="images" />
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/opis/route-planning.md">
|
|
||||||
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
|
||||||
<state split_layout="SPLIT">
|
|
||||||
<first_editor />
|
|
||||||
<second_editor />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/julian.py" />
|
<entry file="file://$PROJECT_DIR$/julian.py" />
|
||||||
<entry file="file://$PROJECT_DIR$/dodatkoweMetody.py" />
|
<entry file="file://$PROJECT_DIR$/dodatkoweMetody.py" />
|
||||||
<entry file="file://$PROJECT_DIR$/unboxOnTheFloor.py">
|
<entry file="file://$PROJECT_DIR$/unboxOnTheFloor.py">
|
||||||
@ -631,22 +615,22 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/main.py">
|
<entry file="file://$PROJECT_DIR$/opis/environment.md">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||||
<state relative-caret-position="578">
|
<state split_layout="SPLIT">
|
||||||
<caret line="36" column="24" selection-start-line="36" selection-start-column="24" selection-end-line="36" selection-end-column="24" />
|
<first_editor>
|
||||||
<folding>
|
<caret column="29" lean-forward="true" selection-start-column="29" selection-end-column="29" />
|
||||||
<element signature="e#0#21#0" expanded="true" />
|
</first_editor>
|
||||||
</folding>
|
<second_editor />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/AStar.py">
|
<entry file="file://$PROJECT_DIR$/program.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="578">
|
<state relative-caret-position="272">
|
||||||
<caret line="35" selection-start-line="35" selection-end-line="35" />
|
<caret line="16" selection-start-line="16" selection-end-line="16" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#12#0" expanded="true" />
|
<element signature="e#0#13#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
@ -658,20 +642,30 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/shelf.py">
|
<entry file="file://$PROJECT_DIR$/main.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="34">
|
<state relative-caret-position="612">
|
||||||
<caret line="2" column="11" selection-start-line="2" selection-start-column="6" selection-end-line="2" selection-end-column="11" />
|
<caret line="36" column="24" selection-start-line="36" selection-start-column="24" selection-end-line="36" selection-end-column="24" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#21#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/AStar.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="595">
|
||||||
|
<caret line="35" selection-start-line="35" selection-end-line="35" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#12#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/funkcje.py">
|
<entry file="file://$PROJECT_DIR$/funkcje.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="1037">
|
<state relative-caret-position="1292">
|
||||||
<caret line="81" lean-forward="true" selection-start-line="81" selection-end-line="81" />
|
<caret line="81" selection-start-line="81" selection-end-line="81" />
|
||||||
<folding>
|
|
||||||
<element signature="e#0#48#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
@ -682,19 +676,9 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/program.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="238">
|
|
||||||
<caret line="14" selection-start-line="14" selection-end-line="14" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#0#13#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/genetyczne.py">
|
<entry file="file://$PROJECT_DIR$/genetyczne.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="-595">
|
<state relative-caret-position="-136">
|
||||||
<caret line="1" column="21" selection-start-line="1" selection-start-column="21" selection-end-line="1" selection-end-column="21" />
|
<caret line="1" column="21" selection-start-line="1" selection-start-column="21" selection-end-line="1" selection-end-column="21" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#21#0" expanded="true" />
|
<element signature="e#0#21#0" expanded="true" />
|
||||||
@ -702,17 +686,14 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/opis/environment.md">
|
<entry file="file://$PROJECT_DIR$/shelf.py">
|
||||||
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state split_layout="SPLIT">
|
<state relative-caret-position="-46">
|
||||||
<first_editor>
|
<caret line="2" column="11" selection-start-line="2" selection-start-column="6" selection-end-line="2" selection-end-column="11" />
|
||||||
<caret column="29" lean-forward="true" selection-start-column="29" selection-end-column="29" />
|
|
||||||
</first_editor>
|
|
||||||
<second_editor />
|
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/opis/LechT.md">
|
<entry file="file://$PROJECT_DIR$/WGoracy.md">
|
||||||
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||||
<state split_layout="SPLIT">
|
<state split_layout="SPLIT">
|
||||||
<first_editor />
|
<first_editor />
|
||||||
@ -720,5 +701,35 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/KijowskiM.md">
|
||||||
|
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||||
|
<state split_layout="SPLIT">
|
||||||
|
<first_editor relative-caret-position="-663">
|
||||||
|
<caret line="6" lean-forward="true" selection-start-line="6" selection-end-line="6" />
|
||||||
|
</first_editor>
|
||||||
|
<second_editor />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/LechT.md">
|
||||||
|
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||||
|
<state split_layout="SPLIT">
|
||||||
|
<first_editor relative-caret-position="170">
|
||||||
|
<caret line="10" selection-start-line="10" selection-end-line="10" />
|
||||||
|
</first_editor>
|
||||||
|
<second_editor />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/opis/route-planning.md">
|
||||||
|
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||||
|
<state split_layout="SPLIT">
|
||||||
|
<first_editor relative-caret-position="629">
|
||||||
|
<caret line="37" column="3" lean-forward="true" selection-start-line="37" selection-start-column="3" selection-end-line="37" selection-end-column="3" />
|
||||||
|
</first_editor>
|
||||||
|
<second_editor />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
129
KijowskiM.md
Normal file
129
KijowskiM.md
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
## Raport z wykonania części indywidualnej projektu
|
||||||
|
## Kijowski Michał
|
||||||
|
|
||||||
|
### Omówienie projektu
|
||||||
|
|
||||||
|
Projekt polega na dodaniu automatycznej identyfikacji paczek przychodzących do magazynu, na podstawie ich zdjęcia. Do wykonania projektu wykorzystałem uczenie sieci neuronowych (yolov3). Po otrzymaniu pliku graficznego przedstawiającego paczkę, program szuka na niej piktogramów aby zidentyfikować tę paczkę.
|
||||||
|
|
||||||
|
Wyróżniamy:
|
||||||
|
|
||||||
|
| Identyfikacja | Wyszukiwane piktogramy |
|
||||||
|
| -------- | -------- |
|
||||||
|
| Kruche | ![](https://git.wmi.amu.edu.pl/s444399/AI/raw/master/demo/kruche.png) |
|
||||||
|
| Niebezpieczne | ![](https://git.wmi.amu.edu.pl/s444399/AI/raw/master/demo/electrical.png) ![](https://git.wmi.amu.edu.pl/s444399/AI/raw/master/demo/biohazard.png) |
|
||||||
|
| Radioaktywne | ![](https://git.wmi.amu.edu.pl/s444399/AI/raw/master/demo/radioactive.png) |
|
||||||
|
| Łatwopalne | ![](https://git.wmi.amu.edu.pl/s444399/AI/raw/master/demo/flammable.png) |
|
||||||
|
|
||||||
|
Jeśli nie znajdziemy żadnego z piktogramów, paczka jest klasyfikowana jako zwykła.
|
||||||
|
|
||||||
|
### Uczenie modelu
|
||||||
|
|
||||||
|
Program ten dysponuje pięcioma klasami, są to:
|
||||||
|
* kruche
|
||||||
|
* radioaktywne
|
||||||
|
* zagrożenia elektryczne
|
||||||
|
* biohazard
|
||||||
|
* latwopalne
|
||||||
|
|
||||||
|
Dla każdej klasy został przygotowany zbiór przedstawiający piktogramy reprezentowane przez te klasy:
|
||||||
|
* kruche - 137 zdjęć
|
||||||
|
* radioaktywne - 136 zdjęć
|
||||||
|
* zagrożenia elektryczne - 141 zdjęć
|
||||||
|
* biohazard - 144 zdjęć
|
||||||
|
* latwopalne - 120 zdjęć
|
||||||
|
|
||||||
|
Dla każdego pliku przygotowałem plik tekstowy o takiej samej nazwie (różniącej się tylko rozszerzeniem), w którym zawarte są współrzędne obiektów które chcemy wyszukiwać. I tak w każdej lini dla każdego obiektu na danym zdjęciu, zgodnie ze schematem:
|
||||||
|
|
||||||
|
<object-class> <x> <y> <width> <height>
|
||||||
|
|
||||||
|
Z tak przygotowanego zbioru wybrałem losowo niewielką część jako zbiór testowy.
|
||||||
|
|
||||||
|
Nasz zbiór uczący używamy w programie [darknet](https://github.com/pjreddie/darknet) do wygenerowania wag dla sieci. Wykorzystałem do tego pretrenowany model i dostosowałem go do potrzeb tego projektu z wykorzystaniem właśnie tego zbioru.
|
||||||
|
|
||||||
|
Współczynnik recall (część wspólna obiektu i detekcji przez rozmiar obiektu) dla poszczególnych etapów uczenia na podstawie zbioru testowego:
|
||||||
|
|
||||||
|
| Liczba iteracji | Współczynnik recall |
|
||||||
|
| -------- | -------- |
|
||||||
|
| 100 | 34.62 % |
|
||||||
|
| 200 | 35.14 % |
|
||||||
|
| 500 | 39.47 % |
|
||||||
|
| 1000 | 53.49 % |
|
||||||
|
| 5000 | 75.56 % |
|
||||||
|
| 15000 | 73.33 % |
|
||||||
|
| 30000 | 77.42 % |
|
||||||
|
| 40000 | 84.78 % |
|
||||||
|
|
||||||
|
### Integracja projektu
|
||||||
|
|
||||||
|
Integracja wykonana jest w pliku program.py
|
||||||
|
|
||||||
|
Mój podprojekt wywoływany jest po wciśnięciu lewego przycisku myszy.
|
||||||
|
|
||||||
|
elif(event.type==pygame.MOUSEBUTTONDOWN):
|
||||||
|
if (type(self.map[0][2]) == Floor):
|
||||||
|
meh = easygui.fileopenbox("Wybierz zdjęcie paczki", "Wybierz zdjęcie paczki", filetypes = [["*.jpg", "*.jpeg", "*.png", "Pliki graficzne"]])
|
||||||
|
if meh is None:
|
||||||
|
return
|
||||||
|
while pathlib.Path(meh).suffix!=".jpg" and pathlib.Path(meh).suffix!=".jpeg" and pathlib.Path(meh).suffix!=".png":
|
||||||
|
meh = easygui.fileopenbox("Wybierz zdjęcie paczki", "Wybierz zdjęcie paczki", filetypes = [["*.jpg", "*.jpeg", "*.png", "Pliki graficzne"]])
|
||||||
|
if meh is None:
|
||||||
|
return
|
||||||
|
whatIsIt = self.neurons.whatIsIt(meh)
|
||||||
|
Sprawdzamy oczywiście czy lobby na paczki jest puste a jeśli tak to wywołujemy metodę fileopenbox z klasy easygui pozwalającą na wybranie pliku w ładny graficzny sposób.
|
||||||
|
|
||||||
|
![](https://git.wmi.amu.edu.pl/s444399/AI/raw/master/demo/a.png)
|
||||||
|
|
||||||
|
Następnie sprawdzamy czy jest to plik graficzny jeśli nie, powtarzamy to do skutku, lub zamknięcia okna.
|
||||||
|
|
||||||
|
Jeśli mamy już plik graficzny to ścieżka do niego jest przekazywana do klasy podprojektu której obiektem jest neurons a metodą którą wykonujemy jest whatIsIt.
|
||||||
|
|
||||||
|
### Implementacja projektu
|
||||||
|
|
||||||
|
Implementacja projektu znajduje się w klasie Neurons z pliku neurons.py.
|
||||||
|
|
||||||
|
class Neurons:
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
def get_output_layers(self, net):
|
||||||
|
layer_names = net.getLayerNames()
|
||||||
|
output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()]
|
||||||
|
return output_layers
|
||||||
|
def whatIsIt(self, path):
|
||||||
|
image = cv2.imread(path)
|
||||||
|
scale = 0.00392
|
||||||
|
classes = None
|
||||||
|
with open("yolov3.txt", 'r') as f:
|
||||||
|
classes = [line.strip() for line in f.readlines()]
|
||||||
|
net = cv2.dnn.readNet("yolov3.weights", "yolov3.cfg")
|
||||||
|
blob = cv2.dnn.blobFromImage(image, scale, (608, 608), (0, 0, 0), True, crop=False)
|
||||||
|
net.setInput(blob)
|
||||||
|
outs = net.forward(self.get_output_layers(net))
|
||||||
|
class_ids = []
|
||||||
|
|
||||||
|
W pierwszej części pliku wczytujemy wszystko zgodnie z zasadami detekcji dla tej metody. Wczytujemy naszą grafikę (ścieżka ze zmiennej path), model (yolov3.weights), nazwy klas (yolov3.txt), oraz konfigurację (yolov3.cfg). Następnie tworzymy sieć z modułu dnn (Deep Neural Networks) pakietu opencv (cv2) oraz tworzymy pustą listę na nasze przyszłe detekcje. Do listy outs pobieramy detekcje.
|
||||||
|
|
||||||
|
for out in outs:
|
||||||
|
for detection in out:
|
||||||
|
scores = detection[5:]
|
||||||
|
class_id = np.argmax(scores)
|
||||||
|
confidence = scores[class_id]
|
||||||
|
if confidence > 0.2:
|
||||||
|
class_ids.append(class_id)
|
||||||
|
y = [classes[ids] for ids in class_ids]
|
||||||
|
|
||||||
|
Gdy już mamy detekcje w liście outs, sprawdzamy które z nich mają prawdopodobieństwo większe niż 20% i dodajemy je do listy class_ids. Następnie zapisujemy nazwy tych klas do listy y za pomocą listy składanej.
|
||||||
|
|
||||||
|
x = [0, 0, 0, 0, 0]
|
||||||
|
if "kruche" in y:
|
||||||
|
x[1]=1
|
||||||
|
elif "niebezpieczne" in y:
|
||||||
|
x[4]=1
|
||||||
|
elif "biohazard" in y:
|
||||||
|
x[4]=1
|
||||||
|
elif "radioaktywne" in y:
|
||||||
|
x[3]=1
|
||||||
|
elif "latwopalne" in y:
|
||||||
|
x[2]=1
|
||||||
|
return [list(x)]
|
||||||
|
|
||||||
|
następnie sprawdzamy detekcję i generujemy listę z jedynką na pozycji odpowiadającej odpowiedniej detekcji, którą następnie zwracamy.
|
11
LechT.md
Normal file
11
LechT.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
## Raport z części indywidualnej - podprojektu
|
||||||
|
## Tomasz Lech
|
||||||
|
|
||||||
|
### Omówienie projektu
|
||||||
|
|
||||||
|
|
||||||
|
Celem projektu jest znalezienie najoptymalniejszej drogi między zajętymi regałami a miejscami odbioru paczki.
|
||||||
|
Projekt wykorzystuje wcześniej opracowany algorytm AStar, który jest opisany w pliku [route-planning](https://git.wmi.amu.edu.pl/s444399/AI/src/master/route-planning.md)
|
||||||
|
|
||||||
|
### Dane wejściowe
|
||||||
|
|
113
WGoracy.md
Normal file
113
WGoracy.md
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
## Podprojekt indywidualny - Weronika Gorący
|
||||||
|
|
||||||
|
### Wykorzystane metody uczenia
|
||||||
|
|
||||||
|
Do realizacji podprojektu wykorzystano drzewa decyzyjne do decydowania, na które regały należy umieścić paczkę na podstawie jej cech. Do implementacji drzew decyzyjnych w Pythonie wykorzystane zostały biblioteki *sklearn* i *pandas*.
|
||||||
|
|
||||||
|
### Omówienie kodu
|
||||||
|
|
||||||
|
Kod podprojektu znajduje się w klasie **whereDecision** w pliku [whereDecision.py](https://git.wmi.amu.edu.pl/s444399/AI/src/master/whereDecision.py). Wywołanie metody **recognize** odbywa się w klasie **program** w pliku [program.py](https://git.wmi.amu.edu.pl/s444399/AI/src/master/program.py).
|
||||||
|
|
||||||
|
```
|
||||||
|
whatIsIt = self.neurons.whatIsIt(easygui.fileopenbox("Wybierz zdjęcie paczki", "Wybierz zdjęcie paczki", filetypes = [["*.jpg", "*.jpeg", "*.png", "Pliki graficzne"]]))
|
||||||
|
where = self.whereDecision.recognize(whatIsIt, self.regalsik())
|
||||||
|
```
|
||||||
|
|
||||||
|
Do zmiennej **whatIsIt** zostaje zapisany typ otrzymanej paczki w formie tablicy binarnej, który został rozpoznany dzięki innemu podprojektowi, następnie wywoływana jest metoda **recognize** z parametrami **whatIsIt** i **self.regalsik()**.
|
||||||
|
|
||||||
|
Do tablicy **regals** zapisywane są dane wszystkich regałów wygenerowanych na planszy.
|
||||||
|
|
||||||
|
```
|
||||||
|
self.regals.append((i, j, (self.map[i][j]-3)//4))
|
||||||
|
```
|
||||||
|
|
||||||
|
Metoda **regalsik()** sprawdza czy regał z tablicy **regals** jest pusty i jeżeli tak, to umieszcza go w tablicy wyjściowej, która ostatecznie jest tablicą krotek zawierajacych informacje o wszystkich pustych regałach na planszy. Każda krotka zawiera informacje o współrzędnej Y i X regału oraz typ paczki jaki może być na niej przechowywany.
|
||||||
|
|
||||||
|
```
|
||||||
|
def regalsik(self):
|
||||||
|
tmp = []
|
||||||
|
for regal in self.regals:
|
||||||
|
if self.map[regal[0]][regal[1]].isOccupied()==False:
|
||||||
|
tmp.append(regal)
|
||||||
|
return tmp
|
||||||
|
```
|
||||||
|
|
||||||
|
### Uczenie modelu
|
||||||
|
|
||||||
|
Metoda **recognize** rozpoczyna od utworzenia zbioru uczącego na podstawie tabeli zawierającej informacje o pustych półkach na planszy. Dla każdego regału sprawdzany jest typ paczki, który może być na niej przechowywany, a następnie jest on dodawany do odpowiedniej tablicy. Tablica **lokacja** zawiera położenia wszystkich regałów na planszy.
|
||||||
|
|
||||||
|
```
|
||||||
|
def recognize(self, recognize, regals):
|
||||||
|
zwykle = []
|
||||||
|
kruche = []
|
||||||
|
latwopalne = []
|
||||||
|
radioaktywne = []
|
||||||
|
niebezpieczne = []
|
||||||
|
lokacja = []
|
||||||
|
for regal in regals:
|
||||||
|
if (regal[2] == 1):
|
||||||
|
zwykle.append(0)
|
||||||
|
kruche.append(1)
|
||||||
|
latwopalne.append(0)
|
||||||
|
radioaktywne.append(0)
|
||||||
|
niebezpieczne.append(0)
|
||||||
|
lokacja.append(str("("+str(regal[0])+", "+str(regal[1])+")"))
|
||||||
|
elif (regal[2] == 2):
|
||||||
|
zwykle.append(0)
|
||||||
|
kruche.append(0)
|
||||||
|
latwopalne.append(1)
|
||||||
|
radioaktywne.append(0)
|
||||||
|
niebezpieczne.append(0)
|
||||||
|
lokacja.append(str("("+str(regal[0])+", "+str(regal[1])+")"))
|
||||||
|
elif (regal[2] == 3):
|
||||||
|
zwykle.append(0)
|
||||||
|
kruche.append(0)
|
||||||
|
latwopalne.append(0)
|
||||||
|
radioaktywne.append(1)
|
||||||
|
niebezpieczne.append(0)
|
||||||
|
lokacja.append(str("("+str(regal[0])+", "+str(regal[1])+")"))
|
||||||
|
elif (regal[2] == 4):
|
||||||
|
zwykle.append(0)
|
||||||
|
kruche.append(0)
|
||||||
|
latwopalne.append(0)
|
||||||
|
radioaktywne.append(0)
|
||||||
|
niebezpieczne.append(1)
|
||||||
|
lokacja.append(str("("+str(regal[0])+", "+str(regal[1])+")"))
|
||||||
|
else:
|
||||||
|
zwykle.append(1)
|
||||||
|
kruche.append(0)
|
||||||
|
latwopalne.append(0)
|
||||||
|
radioaktywne.append(0)
|
||||||
|
niebezpieczne.append(0)
|
||||||
|
lokacja.append(str("("+str(regal[0])+", "+str(regal[1])+")"))
|
||||||
|
```
|
||||||
|
|
||||||
|
Jeżeli wszystkie półki są zajęte, wózek zatrzyma się w swojej wyjściowej pozycji.
|
||||||
|
|
||||||
|
```
|
||||||
|
if len(zwykle) == 0:
|
||||||
|
return [1, 2]
|
||||||
|
```
|
||||||
|
|
||||||
|
Do zmiennej **z** zapisujemy połączone tablice wszystkich typów regałów, zaś do zmiennej **y** zapisujemy tabelę prenumeratorzy typu DataFrame z biblioteki *pandas*, która zawiera dane lokalizacji konkretnych regałów.
|
||||||
|
|
||||||
|
```
|
||||||
|
z = list(zip(zwykle, kruche, latwopalne, radioaktywne, niebezpieczne))
|
||||||
|
prenumeratorzy = pd.DataFrame({"lokacja": lokacja})
|
||||||
|
prenumeratorzy["lokacja"], lokacja_kody = pd.factorize(prenumeratorzy["lokacja"])
|
||||||
|
y = prenumeratorzy["lokacja"]
|
||||||
|
```
|
||||||
|
|
||||||
|
Zmienne **z** i **y** są naszym zbiorem uczącym.
|
||||||
|
|
||||||
|
### Implementacja
|
||||||
|
|
||||||
|
Do zmiennej **drzewko** zapisujemy drzewo decyzyjne z biblioteki *sklearn* utworzone za pomocą obiektu klasy **DecisionTreeClassifier** z parametrem konstruktora **criterion** ustawionym na **"entropy"**. Na drzewie wywołujemy metodę **fit**, która tworzy model danych w oparciu o nasz zbiór uczący. Po utworzeniu modelu danych możemy przewidzieć przynależność nowych przykładów, co robimy wywołując na drzewie metodę **predict** z parametrem uzyskanym na samym początku, który zawiera informację o rodzaju otrzymanej paczki. W ostateczności zwracamy krotkę zawierającą lokalizację, na której zostanie umieszczona paczka.
|
||||||
|
|
||||||
|
```
|
||||||
|
drzewko = DecisionTreeClassifier(criterion="entropy")
|
||||||
|
drzewko.fit(X=z, y=y)
|
||||||
|
return list(make_tuple(lokacja_kody[drzewko.predict(recognize)][0]))
|
||||||
|
```
|
||||||
|
|
||||||
|
Ostatecznie lokalizacja, którą zwróciła metoda **recognize** zapisywana jest do zmiennej **where** (klasa **program**) i na tej podstawie wózek z pomocą algorytmu AStar wybiera odpowiednią ścieżkę do umieszczenia paczki.
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
demo/a.png
Normal file
BIN
demo/a.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 89 KiB |
BIN
demo/biohazard.png
Normal file
BIN
demo/biohazard.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
BIN
demo/electrical.png
Normal file
BIN
demo/electrical.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.5 KiB |
BIN
demo/flammable.png
Normal file
BIN
demo/flammable.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.5 KiB |
BIN
demo/kruche.png
Normal file
BIN
demo/kruche.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.5 KiB |
BIN
demo/radioactive.png
Normal file
BIN
demo/radioactive.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
38
neurons.py
38
neurons.py
@ -11,13 +11,13 @@ class Neurons:
|
|||||||
output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()]
|
output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()]
|
||||||
return output_layers
|
return output_layers
|
||||||
def whatIsIt(self, path):
|
def whatIsIt(self, path):
|
||||||
"""image = cv2.imread(path)
|
image = cv2.imread(path)
|
||||||
scale = 0.00392
|
scale = 0.00392
|
||||||
classes = None
|
classes = None
|
||||||
with open("yolov3.txt", 'r') as f:
|
with open("yolov3.txt", 'r') as f:
|
||||||
classes = [line.strip() for line in f.readlines()]
|
classes = [line.strip() for line in f.readlines()]
|
||||||
net = cv2.dnn.readNet("yolov3.weights", "yolov3.cfg")
|
net = cv2.dnn.readNet("yolov3.weights", "yolov3.cfg")
|
||||||
blob = cv2.dnn.blobFromImage(image, scale, (416, 416), (0, 0, 0), True, crop=False)
|
blob = cv2.dnn.blobFromImage(image, scale, (608, 608), (0, 0, 0), True, crop=False)
|
||||||
net.setInput(blob)
|
net.setInput(blob)
|
||||||
outs = net.forward(self.get_output_layers(net))
|
outs = net.forward(self.get_output_layers(net))
|
||||||
class_ids = []
|
class_ids = []
|
||||||
@ -26,22 +26,32 @@ class Neurons:
|
|||||||
scores = detection[5:]
|
scores = detection[5:]
|
||||||
class_id = np.argmax(scores)
|
class_id = np.argmax(scores)
|
||||||
confidence = scores[class_id]
|
confidence = scores[class_id]
|
||||||
if confidence > 0.5:
|
if confidence > 0.2:
|
||||||
class_ids.append(class_id)
|
class_ids.append(class_id)
|
||||||
print([classes[ids] for ids in class_ids])"""
|
y = [classes[ids] for ids in class_ids]
|
||||||
|
print(y)
|
||||||
# randomowe przydzielanie typów paczek poki nie ma rozpoznawania paczki
|
x = [0, 0, 0, 0, 0]
|
||||||
|
if "kruche" in y:
|
||||||
x = [1, 0, 0, 0, 0]
|
x[1]=1
|
||||||
#numpy.random.shuffle(x)
|
elif "niebezpieczne" in y:
|
||||||
|
x[4]=1
|
||||||
|
elif "biohazard" in y:
|
||||||
|
x[4]=1
|
||||||
|
elif "radioaktywne" in y:
|
||||||
|
x[3]=1
|
||||||
|
elif "latwopalne" in y:
|
||||||
|
x[2]=1
|
||||||
|
else:
|
||||||
|
x[0]=1
|
||||||
|
print(x)
|
||||||
if x[0]==1:
|
if x[0]==1:
|
||||||
print("Zwykła")
|
print("Zwykła")
|
||||||
elif x[1]==1:
|
if x[1]==1:
|
||||||
print("Kruchy")
|
print("Kruchy")
|
||||||
elif x[2]==1:
|
if x[2]==1:
|
||||||
print("Łatwopalny")
|
print("Łatwopalny")
|
||||||
elif x[3]==1:
|
if x[3]==1:
|
||||||
print("Radioaktywny")
|
print("Radioaktywny")
|
||||||
elif x[4]==1:
|
if x[4]==1:
|
||||||
print("Niebezpieczny")
|
print("Niebezpieczny")
|
||||||
return [list(x)]
|
return [list(x)]
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
Repostitory for artificial intelligence project.
|
Repostitory for artificial intelligence project.
|
||||||
|
|
||||||
|
This project requires file with weights, which is located in michal.kronmar.eu/yolov3.weights. This file must be located in main directory of this project.
|
||||||
|
|
||||||
# Authors:
|
# Authors:
|
||||||
|
|
||||||
* Michał Kijowski
|
* Michał Kijowski
|
||||||
|
@ -9,6 +9,7 @@ Projekt ma przedstawiać działanie niektórych aspektów sztucznej inteligencji
|
|||||||
|
|
||||||
* Rozpoznawanie cech paczki na podstawie zdjęcia (uczenie sieci neuronowych). W dowolnym momencie działania programu będzie można dodać zdjęcie paczki, która zostanie przeanalizowana pod kątem jego cech. Następnie zostanie przekazane do rozłożenia na magazynie za pomocą kolejnego podprojektu, lub ręcznie, w zależności od wyboru użytkownika. Wykorzystane zostaną do tego biblioteki YOLOv3 oraz OpenCV.
|
* Rozpoznawanie cech paczki na podstawie zdjęcia (uczenie sieci neuronowych). W dowolnym momencie działania programu będzie można dodać zdjęcie paczki, która zostanie przeanalizowana pod kątem jego cech. Następnie zostanie przekazane do rozłożenia na magazynie za pomocą kolejnego podprojektu, lub ręcznie, w zależności od wyboru użytkownika. Wykorzystane zostaną do tego biblioteki YOLOv3 oraz OpenCV.
|
||||||
* Wykorzystanie uczenia drzew decyzyjnych do decydowania na które regały rozmieścić paczkę, na podstawie jej cech. Zbiór uczący byłby wyznaczany za pomocą algorytmu na początku działania każdego programu, ponieważ musiałby się on dostosować do konktretnych warunków podanych przez użytkownika. Następnie po wciśnięciu konkretnego przycisku, drzewo decyzyjne decydowałoby w którą konkretną lokalizację umieścić przesyłkę. Wykorzystana zostanie biblioteka sklearn.
|
* Wykorzystanie uczenia drzew decyzyjnych do decydowania na które regały rozmieścić paczkę, na podstawie jej cech. Zbiór uczący byłby wyznaczany za pomocą algorytmu na początku działania każdego programu, ponieważ musiałby się on dostosować do konktretnych warunków podanych przez użytkownika. Następnie po wciśnięciu konkretnego przycisku, drzewo decyzyjne decydowałoby w którą konkretną lokalizację umieścić przesyłkę. Wykorzystana zostanie biblioteka sklearn.
|
||||||
|
* Wykorzystanie algorytmów genetycznych do znalezienia najoptymalniejszej drogi pomiędzy zajętymi regałami a miejscami oddania paczek w celu oddania paczki przy najmniejszym koszcie.
|
||||||
|
|
||||||
### Wykonanie
|
### Wykonanie
|
||||||
|
|
||||||
|
25
program.py
25
program.py
@ -6,10 +6,15 @@ from wall import Wall
|
|||||||
from shelf import Shelf
|
from shelf import Shelf
|
||||||
from wheel import Wheel
|
from wheel import Wheel
|
||||||
from boxOnTheFloor import BoxOnTheFloor
|
from boxOnTheFloor import BoxOnTheFloor
|
||||||
|
from box import Box
|
||||||
|
from unboxOnTheFloor import UnboxOnTheFloor
|
||||||
|
from AStar import AStar
|
||||||
|
import numpy
|
||||||
import easygui
|
import easygui
|
||||||
from neurons import Neurons
|
from neurons import Neurons
|
||||||
from whereDecision import WhereDecision
|
from whereDecision import WhereDecision
|
||||||
from Evencik import Evencik
|
from Evencik import Evencik
|
||||||
|
import pathlib
|
||||||
from Data import Data
|
from Data import Data
|
||||||
from genetyczne import *
|
from genetyczne import *
|
||||||
|
|
||||||
@ -31,12 +36,7 @@ class MainWindow:
|
|||||||
self.neurons = Neurons()
|
self.neurons = Neurons()
|
||||||
self.whereDecision = WhereDecision()
|
self.whereDecision = WhereDecision()
|
||||||
#create
|
#create
|
||||||
self.wheel = Wheel(self.screen, self.cell)
|
self.wheel = Wheel(self.screen, self.cell);
|
||||||
###
|
|
||||||
|
|
||||||
|
|
||||||
#przekladanie wartosci liczbowych z tablicy na mapę obiektow
|
|
||||||
|
|
||||||
for i in range(len(self.map)):
|
for i in range(len(self.map)):
|
||||||
for j in range(len(self.map[i])):
|
for j in range(len(self.map[i])):
|
||||||
if (self.map[i][j]==1):
|
if (self.map[i][j]==1):
|
||||||
@ -101,8 +101,15 @@ class MainWindow:
|
|||||||
|
|
||||||
elif(event.type==pygame.MOUSEBUTTONDOWN):
|
elif(event.type==pygame.MOUSEBUTTONDOWN):
|
||||||
if (type(self.map[0][2]) == Floor):
|
if (type(self.map[0][2]) == Floor):
|
||||||
whatIsIt = self.neurons.whatIsIt(easygui.fileopenbox("Wybierz zdjęcie paczki", "Wybierz zdjęcie paczki", filetypes = [["*.jpg", "*.jpeg", "*.png", "Pliki graficzne"]]))
|
meh = easygui.fileopenbox("Wybierz zdjęcie paczki", "Wybierz zdjęcie paczki", filetypes = [["*.jpg", "*.jpeg", "*.png", "Pliki graficzne"]])
|
||||||
where = self.whereDecision.recognize(whatIsIt, self.regalsik()) #kordy regalu
|
if meh is None:
|
||||||
|
return
|
||||||
|
while pathlib.Path(meh).suffix!=".jpg" and pathlib.Path(meh).suffix!=".jpeg" and pathlib.Path(meh).suffix!=".png":
|
||||||
|
meh = easygui.fileopenbox("Wybierz zdjęcie paczki", "Wybierz zdjęcie paczki", filetypes = [["*.jpg", "*.jpeg", "*.png", "Pliki graficzne"]])
|
||||||
|
if meh is None:
|
||||||
|
return
|
||||||
|
whatIsIt = self.neurons.whatIsIt(meh)
|
||||||
|
where = self.whereDecision.recognize(whatIsIt, self.regalsik())
|
||||||
self.map[0][2] = BoxOnTheFloor(self.screen, self.cell, 0, 2, Box())
|
self.map[0][2] = BoxOnTheFloor(self.screen, self.cell, 0, 2, Box())
|
||||||
|
|
||||||
star = AStar()
|
star = AStar()
|
||||||
@ -174,4 +181,4 @@ class MainWindow:
|
|||||||
for regal in self.regals:
|
for regal in self.regals:
|
||||||
if self.map[regal[0]][regal[1]].isOccupied()==False:
|
if self.map[regal[0]][regal[1]].isOccupied()==False:
|
||||||
tmp.append(regal)
|
tmp.append(regal)
|
||||||
return tmp
|
return tmp
|
||||||
|
789
yolov3.cfg
Normal file
789
yolov3.cfg
Normal file
@ -0,0 +1,789 @@
|
|||||||
|
[net]
|
||||||
|
# Testing
|
||||||
|
# batch=1
|
||||||
|
# subdivisions=1
|
||||||
|
# Training
|
||||||
|
batch=16
|
||||||
|
subdivisions=16
|
||||||
|
width=608
|
||||||
|
height=608
|
||||||
|
channels=3
|
||||||
|
momentum=0.9
|
||||||
|
decay=0.0005
|
||||||
|
angle=0
|
||||||
|
saturation = 1.5
|
||||||
|
exposure = 1.5
|
||||||
|
hue=.1
|
||||||
|
|
||||||
|
learning_rate=0.001
|
||||||
|
burn_in=1000
|
||||||
|
max_batches = 100000
|
||||||
|
policy=steps
|
||||||
|
steps=80000,90000
|
||||||
|
scales=.1,.1
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=30
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
# Downsample
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=64
|
||||||
|
size=3
|
||||||
|
stride=2
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=32
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=64
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
# Downsample
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=128
|
||||||
|
size=3
|
||||||
|
stride=2
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=64
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=128
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=64
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=128
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
# Downsample
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=3
|
||||||
|
stride=2
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=128
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=128
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=128
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=128
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=128
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=128
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=128
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=128
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
# Downsample
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=512
|
||||||
|
size=3
|
||||||
|
stride=2
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=512
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=512
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=512
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=512
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=512
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=512
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=512
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=512
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
# Downsample
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=1024
|
||||||
|
size=3
|
||||||
|
stride=2
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=512
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=1024
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=512
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=1024
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=512
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=1024
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=512
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=1024
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[shortcut]
|
||||||
|
from=-3
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
######################
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=512
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
filters=1024
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=512
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
filters=1024
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=512
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
filters=1024
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
filters=255
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
|
||||||
|
[yolo]
|
||||||
|
mask = 6,7,8
|
||||||
|
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
|
||||||
|
classes=80
|
||||||
|
num=9
|
||||||
|
jitter=.3
|
||||||
|
ignore_thresh = .7
|
||||||
|
truth_thresh = 1
|
||||||
|
random=1
|
||||||
|
|
||||||
|
|
||||||
|
[route]
|
||||||
|
layers = -4
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[upsample]
|
||||||
|
stride=2
|
||||||
|
|
||||||
|
[route]
|
||||||
|
layers = -1, 61
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
filters=512
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
filters=512
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=256
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
filters=512
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
filters=255
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
|
||||||
|
[yolo]
|
||||||
|
mask = 3,4,5
|
||||||
|
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
|
||||||
|
classes=80
|
||||||
|
num=9
|
||||||
|
jitter=.3
|
||||||
|
ignore_thresh = .7
|
||||||
|
truth_thresh = 1
|
||||||
|
random=1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[route]
|
||||||
|
layers = -4
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=128
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[upsample]
|
||||||
|
stride=2
|
||||||
|
|
||||||
|
[route]
|
||||||
|
layers = -1, 36
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=128
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
filters=256
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=128
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
filters=256
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
filters=128
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
batch_normalize=1
|
||||||
|
size=3
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
filters=256
|
||||||
|
activation=leaky
|
||||||
|
|
||||||
|
[convolutional]
|
||||||
|
size=1
|
||||||
|
stride=1
|
||||||
|
pad=1
|
||||||
|
filters=255
|
||||||
|
activation=linear
|
||||||
|
|
||||||
|
|
||||||
|
[yolo]
|
||||||
|
mask = 0,1,2
|
||||||
|
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
|
||||||
|
classes=80
|
||||||
|
num=9
|
||||||
|
jitter=.3
|
||||||
|
ignore_thresh = .7
|
||||||
|
truth_thresh = 1
|
||||||
|
random=1
|
||||||
|
|
5
yolov3.txt
Normal file
5
yolov3.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
kruche
|
||||||
|
radioaktywne
|
||||||
|
niebezpieczne
|
||||||
|
biohazard
|
||||||
|
latwopalne
|
Loading…
Reference in New Issue
Block a user