User Tools

Site Tools


pr0ntools:cfcv:pr0nsweeper

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
pr0ntools:cfcv:pr0nsweeper [2015/07/13 07:06] mcmasterpr0ntools:cfcv:pr0nsweeper [2015/07/16 06:20] (current) – [Running] mcmaster
Line 3: Line 3:
 This page is about the pr0nsweeper Python GUI that allows a human to quickly review and fix CV results. This page is about the pr0nsweeper Python GUI that allows a human to quickly review and fix CV results.
  
-Although this page is public its not advertised.  I would like to keep it low profile for the time being until the suite is more mature.+Proof of concept stage / not intended for general use. 
  
 ====== Keyboard and mouse quick summary ====== ====== Keyboard and mouse quick summary ======
- 
-Tile types: 
-  * Blue metal: "wires" 
-  * White void: no material present 
-  * Orange unknown: could not decide if metal or void 
  
 Left click: metal operation Left click: metal operation
Line 41: Line 37:
   * Grid => simple algorithms determine if metal or not in that square   * Grid => simple algorithms determine if metal or not in that square
  
-However, this computer vision process is still far from perfect and generates a lot of uncertainties.+However, this computer vision process is still far from perfect and generates a lot of uncertainties.  This GUI presents the CV results to a human that can quickly correct minor CV errors (humans are slow but much better at pattern matching than computers).  The system tries to flag areas for review rather than making a concrete decision if its unsure.  It may from time to time entirely misinterpret an area.  Your job is to look for and correct these errors.
  
  
Line 48: Line 44:
 {{:pr0ntools:cfcv:pr0nsweeper:overview.png?300|}} {{:pr0ntools:cfcv:pr0nsweeper:overview.png?300|}}
  
-The left area is the +At startup, the left area has the raw CV result and the right has the original image with the CV result overlaid on top.  You'll notice there are a few different tile colors on the left: 
 +  * Blue metal: "wires" 
 +  * White void: no material present 
 +  * Orange unknown: could not decide if metal or void 
 + 
 +In most images there will be a large amount of blue and white with a number of orange tiles.  The typical workflow is to correct a small number of errors (if any) and then convert all remaining warnings to metal.  These steps are described in more detail in the following sections. 
 + 
 +The reason why most warnings are metal is because the thresholding algorithm currently used has a hard time dealing with vias.  Future versions will hopefully handle them better.
  
  
Line 54: Line 57:
  
 Left clicking is metal oriented: it turns tiles into metal.  if the tile is already metal, it turns it into unknown.  Similarly, right clicking is void oriented. Left clicking is metal oriented: it turns tiles into metal.  if the tile is already metal, it turns it into unknown.  Similarly, right clicking is void oriented.
 +
 +You may click on either the grid on the left or the image on the right.
 +
  
 {{:pr0ntools:cfcv:pr0nsweeper:group-pre.png?100}} {{:pr0ntools:cfcv:pr0nsweeper:group-pre.png?100}}
Line 79: Line 85:
 {{:pr0ntools:cfcv:pr0nsweeper:grid_error.png?450}} {{:pr0ntools:cfcv:pr0nsweeper:grid_error.png?450}}
  
-Above: minor grid error+Above: grid error visible in the upper left and lower right corner
  
 If the grid is detected incorrectly it will disrupt metal detection.  In the above example, the Y grid offset is very poor (although the pitch is correct).  Correct errors like above by biasing the grid to a particular direction, using the same bias for the entire image.  For example, make the lower unknowns metal and the upper unknowns void.  Suggest using this convention (lower => metal, upper => void) if its unclear which direction the correction should be applied. If the grid is detected incorrectly it will disrupt metal detection.  In the above example, the Y grid offset is very poor (although the pitch is correct).  Correct errors like above by biasing the grid to a particular direction, using the same bias for the entire image.  For example, make the lower unknowns metal and the upper unknowns void.  Suggest using this convention (lower => metal, upper => void) if its unclear which direction the correction should be applied.
Line 100: Line 106:
  
 There's still a lot that can be done with the computer vision preprocessing.  The current suite is somewhat optimized for the references images: to be seen how well it will apply to other data sets (ex: SEM images). There's still a lot that can be done with the computer vision preprocessing.  The current suite is somewhat optimized for the references images: to be seen how well it will apply to other data sets (ex: SEM images).
 +
 +====== Running ======
 +
 +Ubuntu 12.04x64
 +
 +sudo apt-get install -y python-qt4 python-imaging python-pyicu
 +
 +git clone https://github.com/JohnDMcMaster/pr0ntools.git
 +
 +cd cf/sweeper
 +
 +python sweeper.py --host sketchyurl.com
 +
 +====== Backend ======
 +
 +This is for informational purposes only.  Its not required to use the pr0nsweeper GUI.
 +
 +Data is collected using [[mcmaster:tech_inst:k2_ind|my confocal microscope]].  It is not stitched or preprocessed in any way.
 +
 +The core CV engine is in cfcv.py.  This basically performs the following steps:
 +  * Straighten image
 +  * Determine design grid
 +  * Calculate metal and void thresholds
 +  * Apply thresholds to image
 +  * Munge output to try to heuristically correct errors
 +
 +cfcv_batch.py is a batch processor around the engine that allows, for example, running jobs in parallel.
 +
 +Once cfcv_batch.py completes the output directory is fed into the pr0nsweeper job distribution server, server.py.  When a client requests an image it grabs one from the output directory and feeds it to the client.  The client suggests changes to the image and then sends it back to the server where the results are recorded.
  
  
Line 105: Line 140:
  
   * [[https://github.com/JohnDMcMaster/pr0ntools/tree/master/capture/cf|Source code]]   * [[https://github.com/JohnDMcMaster/pr0ntools/tree/master/capture/cf|Source code]]
 +
 +
pr0ntools/cfcv/pr0nsweeper.1436771212.txt.gz · Last modified: 2015/07/13 07:06 by mcmaster