Changeset - d4478db55eec
[Not reviewed]
default
0 1 0
Laman - 6 years ago 2019-05-30 12:49:35

readme: line breaks
1 file changed with 5 insertions and 5 deletions:
0 comments (0 inline, 0 general)
readme.md
Show inline comments
 
@@ -8,39 +8,39 @@ The basic prototype is already working. 
 
## Position detection ##
 
Therefore our current research focuses on automatic position detection. It is planned as a sequence of three stages.
 
 
### Sansa ###
 
First detector approximately locates the board in the picture. It uses SSD (single shot detector) with MobileNet and is working decently.
 
 
Examples (downloaded from Flickr under CC0 license):
 
Examples (downloaded from Flickr under CC0 license):  
 
![Sansa example 1](static/s16.jpg)
 
 
![Sansa example 2](static/s12.jpg)
 
 
### Dochi ###
 
Then the cropped and normed image is fed to the second detector, designed to return precise grid corners' coordinates. This is currently implemented by a convolutional neural network and obtaining the required precision is a major hurdle to be passed.
 
 
Pretty good:
 
Pretty good:  
 
![Dochi example 1](static/dochi-16.jpg)
 
 
Also good, but not enough:
 
Also good, but not enough:  
 
![Dochi example 2](static/dochi-12.jpg)
 
 
### Genjo ###
 
With grid corners it is not difficult to rectify the image and cut it into tiles, one for each intersection. Then a third stage, Genjo classifier, decides whether the intersection is empty or occupied by a black or white stone. This is currently realized by a sample of pixels voting according to their HSI intensity and it suffices to produce satisfying results. Further improvements should be relatively easy.
 
 
 
## Stringing a sequence of board states to a sequence of moves ##
 
 
Base case: we have two correctly recognized positions differing by a single move (single added stone). Easy.
 
 
Issues:
 
 
  * illegal positions → ignorable
 
  * illegal positions -> ignorable
 
  * positions unreachable from the previous state
 
    * reachable from any past state. (Incorrect states inbetween.) How to pick the correct leaf of such a tree?
 
    * reachable by more than one move. (Lost states inbetween.) Issues with branching factor.
 
  * stone shifts
 
    * stone stops being recognized → fixable manually and even ignorable
 
    * stone stops being recognized -> fixable manually and even ignorable
 
    * stone is recognized at an empty intersection. It can be occupied later for real. What do?
 
    
 
This is handled by the `statebag` package and its documentation also states the problem and used solution in precise terms.
0 comments (0 inline, 0 general)